Apply udev rules to /dev/uinput immediately after installation
This commit is contained in:
@@ -195,11 +195,14 @@ Install
|
|||||||
|
|
||||||
Sunshine needs access to `uinput` to create mouse and gamepad events.
|
Sunshine needs access to `uinput` to create mouse and gamepad events.
|
||||||
|
|
||||||
#. Create `udev` rules.
|
#. Create and reload `udev` rules for uinput.
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
|
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"' | \
|
||||||
sudo tee /etc/udev/rules.d/60-sunshine.rules
|
sudo tee /etc/udev/rules.d/60-sunshine.rules
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger
|
||||||
|
sudo modprobe uinput
|
||||||
|
|
||||||
#. Optionally, configure autostart service
|
#. Optionally, configure autostart service
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ function install() {
|
|||||||
# user input rules
|
# user input rules
|
||||||
# shellcheck disable=SC2002
|
# shellcheck disable=SC2002
|
||||||
cat "$SUNSHINE_SHARE_HERE/udev/rules.d/60-sunshine.rules" | sudo tee /etc/udev/rules.d/60-sunshine.rules
|
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
|
# sunshine service
|
||||||
mkdir -p ~/.config/systemd/user
|
mkdir -p ~/.config/systemd/user
|
||||||
@@ -56,25 +58,6 @@ function install() {
|
|||||||
|
|
||||||
# setcap
|
# setcap
|
||||||
sudo setcap cap_sys_admin+p "$(readlink -f "$SUNSHINE_BIN_HERE")"
|
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() {
|
function remove() {
|
||||||
|
|||||||
@@ -2,11 +2,19 @@ do_setcap() {
|
|||||||
setcap cap_sys_admin+p $(readlink -f $(which sunshine))
|
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() {
|
post_install() {
|
||||||
do_setcap
|
do_setcap
|
||||||
|
do_udev_reload
|
||||||
}
|
}
|
||||||
|
|
||||||
post_upgrade() {
|
post_upgrade() {
|
||||||
do_setcap
|
do_setcap
|
||||||
|
do_udev_reload
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,3 +6,10 @@ if [ -x "$path_to_setcap" ] ; then
|
|||||||
echo "$path_to_setcap cap_sys_admin+p /usr/bin/sunshine"
|
echo "$path_to_setcap cap_sys_admin+p /usr/bin/sunshine"
|
||||||
$path_to_setcap cap_sys_admin+p $(readlink -f /usr/bin/sunshine)
|
$path_to_setcap cap_sys_admin+p $(readlink -f /usr/bin/sunshine)
|
||||||
fi
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user