9a47fd47a7
The documented restart was `pkill -x lisgd && socktop-gestures &`. pkill exits non-zero when it matches nothing, so `&&` short-circuits and the daemon silently does not start when none was running -- you swipe, get nothing, and reasonably blame the config change you just made. socktop-gestures exec'd lisgd with no guard, so nothing downstream caught it. Rather than only fixing the one-liner, move the invariant into the tool: it now exits non-zero if a daemon is already running, and --replace stops the old one first (waiting for it to actually exit). This is the failure the README itself flags as gotcha 3, so a false success there is expensive. Verified against a live daemon: refusal, --help, bad-option exit codes, and a clean pid handover under --replace with the carousel still working. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>