Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.



Window Management and various other implementations in i3

My usage and window management approaches in i3 have evolved over time - and continue to evolve.  If you look through my dev branch you'll see many changes and things tried (and reverted) as I've slowly tried out things until I've found what works best for me.  That's one the many things I love about i3 (and linux in general).

Below are just a few of the window management approaches that have stuck with me.  Please note that these approaches might not work for you - and that's fine.  Feel free to adapt (or disregard) them.

Master-stack (stack-stack) swap stack window with master keybind

I find myself now generally using a "master-stack" approach to window management with i3.  More specifically, I have two "stacking" layouts (vertically) side-by-side, like so:

Image Added

That is, I have a "master" stacking layout on the left and use a "stack" stacking (or splitv) layout on the right.

Now, i3 is a manual tiling manager which means that to move windows you can move window manually from the "stack" layout to the master - however it won't automatically move the current "master" to the "stack" layout when doing so (other dynamic tiling managers do do this).

We can however, simulate this basic concept with a bindsym which will move the focused "stack" window to the right (the "master" layout), focus up (to select the currently selected "master window), move it right, and then focus on the (now new) master.  Add the following to your i3.conf file (I've found $mod+m works well for me):

Code Block
# master-stack keybinding (moves stack window to master and current master back to stack window)
bindsym $mod+m exec "i3-msg \\"move left; focus up; move right; focus left\\""

Quick demo of using the above bindsym to switch windows in master-stack layout:

Image Added

My "special" window combiner bindsyms