-
TFW TWM JUST WERKS Stable
released this
2020-08-11 16:49:57 +00:00 | 381 commits to master since this releasei3flip
We now use the output of i3viswiz instead of a custom AWK script. This made everything more reliable and
--movefunction now works as expected in all types of layouts, (not just tabbed and stacked as before). Also added--json,--verboseand--dryrunoptions.i3fyra
Now keeps track of the virtual position of a window. What this means is that if you have the following window rule defined in your i3 config file:
for_window [instance=irssi class=URxvt] focus;exec --no-startup-id i3fyra --move AAnd spawn a window matching the criteria it will get moved to the A container, which by default is the top-left container.
AAB AAD CCDJust as before the containers can be toggled and swapped by using
i3fyra --move DIRECTION(where direction is up,down,left or right). And if the A container would have focus, and we execute--move leftit would hide the B and D containers:AAA AAA CCCIf we in this state would execute
--move right(while the A container is focused), it would move the A and C container to the right and show the B and D containers to the left, but i3fyra will also internally rename all the containers:ABB ABB CDDThis used to mean that if we now would spawn a window matching our previously defined window rule, it would still get placed in the top-left container. This is where things are different now. In i3list there are four new keys,
[VPA],[VPB],[VPC] and [VPD]which contains a number between zero and three (0-3). If i3list would get executed with the scenario above we would get the following results:i3list[VPA]=1 i3list[VPB]=0 i3list[VPC]=3 i3list[VPD]=2the integers corresponds to the index of the hypothetical array
a=([0]=A [1]=B [2]=C [3]=D), and with this information we can see that when we want to send a window to container A, we test the virtual position, and see that A is positioned at 1 (B), be placed in B instead. In most cases this is the desired result, but sometimes it isn't, and for those cases one can use the--forceoption (which is new) to ignore the virtual positions. But this is probably nothing that anyone needs to worry about, and is more or less only used internally in i3fyra, i3menu and i3run. This transformation to virtual positions of the containers also works with the--layoutoption.A lot of performance and stability improvements has been done in this update, and toggling layouts and containers now works much better and predictable.
Removed
--targetoption. I found myself never using and it just created awkward cornercase issues.Added
--force,--array,--verboseand--dryrunoptions.i3get
Now uses one (well, sometimes two ;) single regular expression test in bash instead of parsing the json with awk, this made the script twice as fast and also, imo, easier to maintain and extend. I also added two new
--printoptions,sfor sticky status, andefor fullscreen status. But the most important change is done to the--synkfunctionality, which now usesi3-msg -t subscribeinstead of awhile true; do sleep 10 ..., and it makes everything much more responsive while at the same time being so much more efficient and nice on system recourses. Some output is different for example "marks" will now print the whole JSON list (["mark1","mark2"...]), previous behavior was to only show the first mark unqouted. If no value is found for a requested output (--print) a line looking like:
--i3get could not find: m
will be printed, previous behavior was to skip the line i think this new behavior is better especially if one relies on the order of the output lines.i3Kornhe
fixed typo related issue that caused windows not being moved correctly. All types of containers are now resized and moved in pixel (px) unit. When i3fyra is executed from this script, the
--arrayoption is used.i3list
No big changes to the script. Added
--jsonoptions and watch script to help testing and development. As well as a few new keys to the output array:i3list["XAB"] # family AB workspace i3list["XAC"] # family AC workspace i3list["XCD"] # family CD workspace i3list["XBD"] # family BD workspace i3list["VPA"] # virtual position A i3list["VPB"] # virtual position B i3list["VPC"] # virtual position C i3list["VPD"] # virtual position Di3menu
Added support for i3fyras virtual positions.
i3run
Only change since last version is to use
i3fyra --force --array ARRAYto override the new virtual positions which are not needed with i3run because it already figures out the correct container.i3viswiz
Support for
--jsonoption. A lot more information is printed to the first line, to make things easier for i3fyra and i3flip.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)