New comment by dashezup on void-packages repository https://github.com/void-linux/void-packages/pull/25341#issuecomment-703303848 Comment: 1. `/dev/input` If I recall correctly, ydotool need to access /dev/uinput to work. normal user can't access `/dev/uinput`, so you need to run ydotool with root, or add your user to a group and then add udev rules to allow the group to access it https://github.com/ReimuNotMoe/ydotool/issues/25#issuecomment-535842993 2. `/tmp/.ydotool_socket` In this case, ydotoold is run by the service (with root), it creates /tmp/.ydotool_socket` with permission 600 (in this case, only the user root can access to it) So even if you have that udev rules and added the user to that group, another condition to meet to be able to use ydotool with normal user is **having ydotoold and ydotool run with the same user**. I mentioned it here: https://github.com/ReimuNotMoe/ydotool/issues/73 Basically if you want to use ydotool directly, you must run it with root. Do you use ydotool by always run it with root user or sudo ? I wonder how do people use it, it's barely usable/useful to me if I need to run it with sudo. If we want to solve this on our side, we can include the udev rules in this package, notice user to add himself to the specific group (maybe we should use `input` group?). If the user want to use ydotoold as service, then he need to change the uid/gid which runs ydotoold in the runit service. > exec chpst -u root:input /usr/bin/ydotoold you can add ", works on Wayland" to short description, so people can search it with keyword "wayland". You can check [my template](https://ezup.dev/git/void-packages/files.html) (search srcpkgs/ydotool there) ``` srcpkgs/ydotool/INSTALL.msg srcpkgs/ydotool/files/80-uinput.rules srcpkgs/ydotool/files/ydotoold/log/run (log is not necessary and idk much about it) srcpkgs/ydotool/files/ydotoold/run srcpkgs/ydotool/template ```