Apply udev rules to /dev/uinput immediately after installation

This commit is contained in:
Cameron Gutman 2024-03-10 20:06:59 -05:00
parent 3117fa57ec
commit 3181d91edf
4 changed files with 21 additions and 20 deletions

View File

@ -195,11 +195,14 @@ Install
Sunshine needs access to `uinput` to create mouse and gamepad events.
#. Create `udev` rules.
#. Create and reload `udev` rules for uinput.
.. code-block:: bash
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
sudo tee /etc/udev/rules.d/60-sunshine.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo modprobe uinput
#. Optionally, configure autostart service

View File

@ -47,6 +47,8 @@ function install() {
# user input rules
# shellcheck disable=SC2002
cat "$SUNSHINE_SHARE_HERE/udev/rules.d/60-sunshine.rules" | sudo tee /etc/udev/rules.d/60-sunshine.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --property-match=DEVNAME=/dev/uinput
# sunshine service
mkdir -p ~/.config/systemd/user
@ -56,25 +58,6 @@ function install() {
# setcap
sudo setcap cap_sys_admin+p "$(readlink -f "$SUNSHINE_BIN_HERE")"
while true
do
read -r -p "This installation requires a reboot. Do you want to reboot NOW? [y/n] " input
case $input in
[yY][eE][sS]|[yY])
echo "Yes"
sudo reboot now
;;
[nN][oO]|[nN])
echo "No"
break
;;
*)
echo "Invalid input..."
;;
esac
done
}
function remove() {

View File

@ -2,11 +2,19 @@ do_setcap() {
setcap cap_sys_admin+p $(readlink -f $(which sunshine))
}
do_udev_reload() {
udevadm control --reload-rules
udevadm trigger --property-match=DEVNAME=/dev/uinput
modprobe uinput || true
}
post_install() {
do_setcap
do_udev_reload
}
post_upgrade() {
do_setcap
do_udev_reload
}

View File

@ -6,3 +6,10 @@ if [ -x "$path_to_setcap" ] ; then
echo "$path_to_setcap cap_sys_admin+p /usr/bin/sunshine"
$path_to_setcap cap_sys_admin+p $(readlink -f /usr/bin/sunshine)
fi
# Trigger udev rule reload for /dev/uinput
path_to_udevadm=$(which udevadm)
if [ -x "$path_to_udevadm" ] ; then
$path_to_udevadm control --reload-rules
$path_to_udevadm trigger --property-match=DEVNAME=/dev/uinput
fi