waycrate / swhkd

Sxhkd clone for Wayland (works on TTY and X11 too)
https://git.sr.ht/~shinyzenith/swhkd
BSD 2-Clause "Simplified" License
666 stars 47 forks source link

Systemd service won't start #235

Open jdnixx opened 5 months ago

jdnixx commented 5 months ago

Version Information: Built from latest commit 30f25b5

Describe the bug: Systemd service won't start when following the instructions at https://github.com/waycrate/swhkd/blob/main/contrib/init/systemd/README.md

Expected behavior: Expect systemd to start swhkd and swhks at system startup

Actual behavior: journal shows:

Feb 03 11:37:16 KUBUNTUWU systemd[4361]: hotkeys.service: Failed with result 'exit-code'.
Feb 03 11:37:16 KUBUNTUWU systemd[4361]: hotkeys.service: Main process exited, code=exited, status=127/n/a

To Reproduce: Compile swhkd according to build instructions, follow the systemd service instructions in the readme, and restart system

Additional information: Here's specifically what i did to enable systemd service:

wget -O ~/.config/swhkd/hotkeys.sh https://raw.githubusercontent.com/waycrate/swhkd/main/contrib/init/systemd/hotkeys.sh
chmod +x ~/.config/swhkd/hotkeys.sh
wget -O ~/.config/systemd/user/hotkeys.service https://raw.githubusercontent.com/waycrate/swhkd/main/contrib/init/systemd/hotkeys.service
# now uncomment line 7 of hotkeys.service and change the path accordingly:
nano ~/.config/systemd/user/hotkeys.service
ExecStart=/home/congrav1ty/.config/swhkd/hotkeys.sh
# finally:
systemctl --user enable hotkeys.service

Then restarted the system and got the "actual behavior" above in the journal.

When trying systemctl --user restart hotkeys.service this is the result (journalctl -r):

Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16402]: [2024-02-03T16:40:55Z ERROR swhkd] Could not open evdev device at /dev/input/mouse4: Inappropriate ioctl for device (os error 25)
Feb 03 11:40:55 KUBUNTUWU systemd-logind[1474]: Watching system buttons on /dev/input/event18 (swhkd switches virtual output)
Feb 03 11:40:55 KUBUNTUWU kernel: rfkill: input handler enabled
Feb 03 11:40:55 KUBUNTUWU kernel: input: swhkd switches virtual output as /devices/virtual/input/input21
Feb 03 11:40:55 KUBUNTUWU kernel: rfkill: input handler disabled
Feb 03 11:40:55 KUBUNTUWU kernel: input: swhkd virtual output as /devices/virtual/input/input20
Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16402]: [2024-02-03T16:40:55Z ERROR swhkd] XDG_RUNTIME_DIR has not been set.
Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16402]: [2024-02-03T16:40:55Z ERROR swhkd] XDG_CONFIG_HOME has not been set.
Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16402]: [2024-02-03T16:40:55Z WARN  swhkd] Running swhkd as root!
Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16402]: [2024-02-03T16:40:55Z ERROR swhkd] XDG_RUNTIME_DIR has not been set.
Feb 03 11:40:55 KUBUNTUWU pkexec[16402]: congrav1ty: Executing command [USER=root] [TTY=unknown] [CWD=/home/congrav1ty] [COMMAND=/usr/bin/swhkd]
Feb 03 11:40:55 KUBUNTUWU pkexec[16402]: pam_unix(polkit-1:session): session opened for user root(uid=0) by (uid=1000)
Feb 03 11:40:55 KUBUNTUWU hotkeys.sh[16398]: swhks: no process found
Feb 03 11:40:55 KUBUNTUWU systemd[4361]: Started hotkeys.service - swhkd hotkey daemon.

Also get a few of these but not sure if they're relevant.

Feb 03 11:40:51 KUBUNTUWU systemd[4361]: Configuration file /home/congrav1ty/.config/systemd/user/hotkeys.service is marked world-writable. Please remove world writability permission bits. Proceeding anyway.
Feb 03 11:40:51 KUBUNTUWU systemd[4361]: Configuration file /home/congrav1ty/.config/systemd/user/hotkeys.service is marked executable. Please remove executable permission bits. Proceeding anyway.
mrdaybird commented 4 months ago

Can you try putting your hotkeys.service in one of XDG_CONFIG_DIRS folders?(for me this is somewhere in /etc folder) Also don't forget to remove the previous service.

jdnixx commented 4 months ago

Ok, XDG_CONFIG_DIRS gives /home/congrav1ty/.config/kdedefaults:/etc/xdg:/usr/share/kubuntu-default-settings/kf5-settings so I stuck hotkeys.service in the kdedefaults directory and deleted the old service. Do I have to do something to get systemd to pick up the service in the new directory?