Saving, loading and managing layouts for i3wm.
Go to file
2018-08-28 18:33:13 +02:00
.gitignore initial commit 2018-08-28 17:39:22 +02:00
layout_manager.sh updated readme 2018-08-28 18:33:13 +02:00
LICENSE Initial commit 2018-08-28 16:48:24 +02:00
README.md updated readme 2018-08-28 18:33:13 +02:00

i3-layout-manager

Saving, loading and managing layouts for i3wm.

Preamble - dont worry, I solved all of this

i3 window manager supports saving and loading of window layouts, however, the features are bare-bone and partially missing. According to the manual, the layout tree can be exported into a json file. The file contains a description of the containers of a workspace with prefilled (and commented) potential matching rules for the windows. User is supposed to uncomment the desierd one (and/or modify it) and delete the unsused ones. Moreover, user should add a surrouding root container which is missing in the file (this baffles me, why cant they save it too?).

So doing it manually (which I dont want) consists of following steps:

  1. export the workspace into jason using i3-save-tree --workspace ...
  2. edit the json to match your desired matching rules for the windows
  3. wrap the file in a root node, which defines the root split.
  4. when needed, load the layout using i3-append ...

However, this plan has big flaws. Its not scalable, its not automated and it loading of layout does not work when windows are already present in the current workspace. To fix it, I built this layout manager. Currently, its a hacky-type shell script, but feel free to contribute :-).

How does it work?

TODO

Dependencies

  • vim/nvim
  • jq
  • i3
  • rofi
  • xdotool
  • x11-xserver-utils
sudo apt-install jq vim rofi xdotool x11-xserver-utils