aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/systemd/user
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:42 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:42 +0100
commitfd512ffcd1206260e8cf17e8bed0273c64658d30 (patch)
treebef41591a81652085945a31fca094e457296b6be /dot_config/systemd/user
parent506b6f25697e4dd4e3b61c97dceaa5450f2be049 (diff)
downloaddotfiles-fd512ffcd1206260e8cf17e8bed0273c64658d30.tar.gz
dotfiles-fd512ffcd1206260e8cf17e8bed0273c64658d30.tar.bz2
dotfiles-fd512ffcd1206260e8cf17e8bed0273c64658d30.zip
feat(sway): enable swayr auto-tile via systemd user unit
Vanilla sway only has splith/splitv with no auto-orientation, so new windows always split along whatever axis the parent container is set to (default splith). The result: opening a third window in a workspace that's already split horizontally just keeps stacking horizontally, even when each pane is now narrower than it is tall. swayr's daemon (swayrd) subscribes to sway IPC and, with [layout].auto_tile = true, issues splith or splitv on the focused container based on its width-vs-height before sway places the next window. The result is the i3/awesome-style spiral tiling: each new window splits the focused pane along its longest side. Run swayrd as a systemd user service bound to sway-session.target so it starts/stops with the session (matching the pattern used by waybar, swayidle, mako, etc.). No keybind changes; only the placement algorithm.
Diffstat (limited to 'dot_config/systemd/user')
-rw-r--r--dot_config/systemd/user/swayrd.service15
1 files changed, 15 insertions, 0 deletions
diff --git a/dot_config/systemd/user/swayrd.service b/dot_config/systemd/user/swayrd.service
new file mode 100644
index 0000000..82e4164
--- /dev/null
+++ b/dot_config/systemd/user/swayrd.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=swayr daemon (auto-tile + window-switcher IPC client)
+Documentation=https://sr.ht/~tsdh/swayr/
+PartOf=graphical-session.target
+After=graphical-session.target
+ConditionEnvironment=SWAYSOCK
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/swayrd
+Restart=on-failure
+RestartSec=2s
+
+[Install]
+WantedBy=sway-session.target