# NoSignal: make hyprmoncfgd verify the monitors.conf source line against # hypr-user.conf (which sources it directly) instead of hyprland.conf (which # only sources it indirectly, via $cConf/hypr-user.conf — hyprmoncfg doesn't # follow that). --monitors-conf must be absolute or it resolves next to the # --hypr-config file. %h = the user's home (systemd specifier; stays portable). # # ExecStartPre: at login the daemon races Hyprland's startup — `hyprctl # instances -j` returns invalid JSON for a moment, the daemon's first apply # fails and it flashes an error notification (it succeeds on its own retry 5s # later). Hold the start until the instances JSON parses (up to ~30s, then # proceed anyway and let the daemon's own retry handle it). [Service] ExecStartPre=/bin/sh -c 'for i in $(seq 1 60); do hyprctl instances -j 2>/dev/null | jq -e ".[0]" >/dev/null 2>&1 && exit 0; sleep 0.5; done; exit 0' ExecStart= ExecStart=/usr/bin/hyprmoncfgd --hypr-config %h/.config/caelestia/hypr-user.conf --monitors-conf %h/.config/hypr/monitors.conf