mirror of
https://github.com/LizardByte/Sunshine.git
synced 2024-11-18 11:10:04 +00:00
111 lines
2.6 KiB
Plaintext
111 lines
2.6 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
# custom AppRun for Sunshine AppImage
|
||
|
|
||
|
# path of the extracted AppRun
|
||
|
HERE="$(dirname "$(readlink -f "${0}")")"
|
||
|
SUNSHINE_PATH=/usr/bin/sunshine
|
||
|
SUNSHINE_BIN_HERE=$HERE/usr/bin/sunshine
|
||
|
SUNSHINE_SHARE_HERE=$HERE/usr/share/sunshine
|
||
|
|
||
|
# Set APPDIR when running directly from the AppDir:
|
||
|
if [ -z "$APPDIR" ]; then
|
||
|
ARGV0="AppRun"
|
||
|
fi
|
||
|
|
||
|
cd "$HERE" || exit 1
|
||
|
|
||
|
function help() {
|
||
|
echo "
|
||
|
------------------------------
|
||
|
Sunshine AppImage package.
|
||
|
------------------------------
|
||
|
|
||
|
sunshine.AppImage options
|
||
|
------------------------
|
||
|
|
||
|
Usage: $ARGV0 --help, -h
|
||
|
------ # This message
|
||
|
|
||
|
$ARGV0 --install, -i
|
||
|
# Install input rules sunshine.service files. Restart required.
|
||
|
|
||
|
$ARGV0 --remove, -r
|
||
|
# Remove input rules sunshine.service files.
|
||
|
|
||
|
$ARGV0 --appimage-help
|
||
|
# Show available AppImage options
|
||
|
|
||
|
sunshine options
|
||
|
----------------
|
||
|
"
|
||
|
# print sunshine binary help, replacing the sunshine command in usage statement
|
||
|
"$SUNSHINE_BIN_HERE" --help | sed -e "s#$SUNSHINE_BIN_HERE#$ARGV0#g"
|
||
|
}
|
||
|
|
||
|
function install() {
|
||
|
# user input rules
|
||
|
sudo usermod -a -G input $USER
|
||
|
# shellcheck disable=SC2002
|
||
|
cat "$SUNSHINE_SHARE_HERE/udev/rules.d/85-sunshine.rules" | sudo tee /etc/udev/85-sunshine.rules
|
||
|
|
||
|
# sunshine service
|
||
|
mkdir -p ~/.config/systemd/user
|
||
|
cp -r "$SUNSHINE_SHARE_HERE/systemd/user/" ~/.config/systemd/
|
||
|
# patch service executable path
|
||
|
sed -i -e "s#$SUNSHINE_PATH#$(readlink -f $ARGV0)#g" ~/.config/systemd/user/sunshine.service
|
||
|
|
||
|
# 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() {
|
||
|
# remove input rules
|
||
|
sudo rm -f /etc/udev/rules.d/85-sunshine.rules
|
||
|
|
||
|
# remove service
|
||
|
sudo rm -f ~/.config/systemd/user/sunshine.service
|
||
|
}
|
||
|
|
||
|
# process arguments
|
||
|
if [ "x$1" == "xhelp" ] || [ "x$1" == "x--help" ] || [ "x$1" == "x-h" ] ; then
|
||
|
help
|
||
|
exit $?
|
||
|
fi
|
||
|
|
||
|
if [ "x$1" == "xinstall" ] || [ "x$1" == "x--install" ] || [ "x$1" == "x-i" ] ; then
|
||
|
install
|
||
|
exit $?
|
||
|
fi
|
||
|
|
||
|
if [ "x$1" == "xremove" ] || [ "x$1" == "x--remove" ] || [ "x$1" == "x-r" ] ; then
|
||
|
remove
|
||
|
exit $?
|
||
|
fi
|
||
|
|
||
|
# create config directory if it doesn't exist
|
||
|
# https://github.com/LizardByte/Sunshine/issues/324
|
||
|
mkdir -p ~/.config/sunshine
|
||
|
|
||
|
# run sunshine
|
||
|
"$SUNSHINE_BIN_HERE" $@
|