Zumen is a tool that allows you to specify layouts in percentages using a declarative layout on i3.
(ws 9
(vertical '(30 70)
(exec "firefox" :class "firefox")
(exec "kitty" :class "k.*ty"))))
This config will open firefox on 30% of the vertical size of the window and kitty on the remaining 70% of the vertical window on workspace 9!
(ws 8
(horizontal '(80 20)
(vertical '(70 30)
(exec "kitty" :class "kitty")
(exec "firefox" :class "fi.*x"))
(vertical '(60 40)
(exec "firefox" :class "firefox")
(exec "kitty" :class "kitty"))))
This config opens the following on workspace 8:
* on 80% of the horizontal screen
---- kitty on 70% of the vertical screen
---- firefox on 30% of the remaining vertical screen
* on 20% of the remaining horizontal screen
---- firefox on 60% of the vertical screen
---- kitty on 40% of the remaining vertical screen
Please go through the example config for more information.
If you don't know what to pass for class/name in the config, you can use the xprop
tool to help you decide.
$ xprop WM_CLASS _NET_WM_NAME # click the target window after executing this
WM_CLASS(STRING) = "openrgb", "openrgb"
_NET_WM_NAME(UTF8_STRING) = "OpenRGB"
WM_CLASS
(openrgb
) is the class
, and _NET_WM_NAME
(OpenRGB
) is the name
.
If the name
you obtained from xprop
does not work, the application likely changes its name after launching. To get around this, you need to find the name the application uses as soon as it launches.
Zumen is written in Typescript, and can be made into an executable binary using Deno.
You can also use a binary from the releases.
$ git clone https://github.com/zumen-org/zumen
$ cd zumen
$ deno compile --unstable --allow-read --allow-run --allow-write --output zumen