`exec` re-runs on every config reload, so each `swaymsg reload` leaked a second hypridle: duplicate suspend/lock timers and two processes fighting over the logind sleep inhibitor. Same pattern already used for waybar and wl-paste.
Josue's dotfiles
Uses GNU Stow to manage simlink. Place files as they where in $HOME
Usage
clone into $HOME
cd dotfiles
stow .
If stow is not installed use ./install.sh from .dotfiles repo
User services
shikane-watchdog
.config/systemd/user/shikane-watchdog.timer (every 2 min, user unit)
runs .config/sway/scripts/shikane-watchdog.sh, which restarts the
shikane user service if its state machine is stuck.
Why: shikane 1.1.1 deadlocks when a profile application is discarded
mid-way (e.g. by a failing DP atomic commit on the external display).
The daemon then keeps logging
[WARN shikane::variant] Received invalid input AtomicChangeDone at state Discarded
and shikanectl reload no longer recovers it. The watchdog detects
that signature in the journal and runs systemctl --user restart shikane
(re-applies the active profile in ~1s). It never restarts a healthy
or legitimately transitioning daemon.
systemctl --user status shikane-watchdog.timer # check it's active
systemctl --user disable --now shikane-watchdog.timer # disable