diff --git a/Containerfile b/Containerfile index 6cbb9e0142..eaf7cc1072 100644 --- a/Containerfile +++ b/Containerfile @@ -299,8 +299,6 @@ RUN --mount=type=cache,dst=/var/cache \ systemctl mask systemd-remount-fs.service && \ mkdir -p /usr/lib/extest/ && \ /ctx/ghcurl "$(/ctx/ghcurl https://api.github.com/repos/ublue-os/extest/releases/latest | jq -r '.assets[] | select(.name| test(".*so$")).browser_download_url')" -Lo /usr/lib/extest/libextest.so && \ - /ctx/ghcurl "https://github.com/ykshek/Sunshine/raw/1347f9ef290c089b815cf186f7d361470bdb9ef7/src_assets/linux/misc/postinst" -Lo /usr/libexec/sunshine-postinst && \ - chmod +x /usr/libexec/sunshine-postinst && \ setfattr -n user.component -v "extest" /usr/lib/extest/libextest.so && \ mkdir -p /etc/xdg/autostart && \ sed -i~ -E 's/=.\$\(command -v (nft|ip6?tables-legacy).*/=/g' /usr/lib/waydroid/data/scripts/waydroid-net.sh && \ diff --git a/system_files/desktop/shared/usr/share/ublue-os/just/82-bazzite-sunshine.just b/system_files/desktop/shared/usr/share/ublue-os/just/82-bazzite-sunshine.just index 7d3adc539c..81236adc1b 100644 --- a/system_files/desktop/shared/usr/share/ublue-os/just/82-bazzite-sunshine.just +++ b/system_files/desktop/shared/usr/share/ublue-os/just/82-bazzite-sunshine.just @@ -1,6 +1,4 @@ -# vim: set ft=make : - -# Setup and configure Sunshine Game Streaming host. Options: status | enable | enable-beta | update | disable | uninstall | portal | virtual-monitor +# Setup and configure Sunshine Game Streaming host. Options: status | enable | enable-deck | update | disable | uninstall | portal | virtual-monitor [group("gaming")] setup-sunshine ACTION="": #!/usr/bin/bash @@ -12,46 +10,50 @@ setup-sunshine ACTION="": read -r reply [[ -z "$reply" || "${reply,,}" =~ ^y ]] } + press_any_key() { echo "Press Enter to continue..." read -r } + sunshine_installed() { flatpak info dev.lizardbyte.app.Sunshine >/dev/null 2>&1 } + + deck_sunshine_installed() { + rpm -q sunshine >/dev/null 2>&1 + } + # deck_sunshine refers to the layered installs of sunshine, as it is primarily for deck users who do not have access to xdg portal capture. + brew_sunshine_installed() { [[ -e /home/linuxbrew/.linuxbrew/opt/sunshine || -d /home/linuxbrew/.linuxbrew/Cellar/sunshine || -e /home/linuxbrew/.linuxbrew/opt/sunshine-beta || -d /home/linuxbrew/.linuxbrew/Cellar/sunshine-beta ]] } + get_status_token() { - local flatpak_service_state beta_service_state service_state - flatpak_service_state="$(systemctl is-enabled --user app-dev.lizardbyte.app.Sunshine 2>/dev/null || true)" - if [[ "$flatpak_service_state" == "enabled" ]]; then - echo "enable" + local service_state + service_state="$(systemctl is-enabled --user app-dev.lizardbyte.app.Sunshine 2>/dev/null || true)" + + if sunshine_installed; then + local status="enable" + elif deck_sunshine_installed; then + local status="enable-deck" elif brew_sunshine_installed; then - echo "enable-brew" - elif sunshine_installed; then - echo "disable" + local status="enable-brew" else echo "uninstall" + return fi - } - override_service() { - servicefile="[Unit] - After=graphical-session.target xdg-desktop-autostart.target xdg-desktop-portal.service - [Service] - ExecStartPre=/bin/sleep 5 - ExecStopPost=/usr/libexec/sunshine-stop-vmon - Restart=on-failure - RestartSec=5s - " - if [[ $(systemctl --user cat homebrew.sunshine-beta | grep sleep 2>/dev/null || true) == "" || $(systemctl --user cat homebrew.sunshine-beta | grep sleep 2>/dev/null || true) == "" ]]; then - systemctl --user edit --stdin homebrew.sunshine-beta <<< "$servicefile" + if [[ "$service_state" == "enabled" ]]; then + echo "$status" + else + echo "disable" fi } + virtual-monitor() { local FLATPAK_VMON_APP='{ "auto-detach": true, @@ -112,6 +114,7 @@ setup-sunshine ACTION="": echo "Virtual monitors are only supported in KDE's KWin compositor!" echo "See ${bold}https://docs.bazzite.gg/Advanced/custom_resolution/${normal} for more information." press_any_key + return 0 fi local MON_OPTION=$(Choose "Add Virtual Monitor" "Fix Error 503" "Go Back" "Exit") case "$MON_OPTION" in @@ -139,17 +142,34 @@ setup-sunshine ACTION="": ;; "Fix Error 503") echo "KWIN_WAYLAND_NO_PERMISSION_CHECKS=1" > $HOME/.config/environment.d/98-kwin-no-permission-checks.conf - echo -n "Wrote in $HOME/.config/environment.d/98-kwin-no-permission-checks: " + echo -n "Wrote in $HOME/.config/environment.d/98-kwin-no-permission-checks.conf: " cat $HOME/.config/environment.d/98-kwin-no-permission-checks.conf ;; "Go Back") - ujust setup-sunshine + return 0 ;; *) + exit 0 ;; esac } + yeet_brew() { + echo "${b}You may ignore the following errors as they are just cosmetic.${n}" + if [ -x /home/linuxbrew/.linuxbrew/bin/brew ]; then + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" + fi + brew trust LizardByte/homebrew + brew tap LizardByte/homebrew + brew services stop sunshine 2>/dev/null || true + brew unpin sunshine 2>/dev/null || true + brew uninstall sunshine 2>/dev/null || true + brew services stop sunshine-beta 2>/dev/null || true + brew unpin sunshine-beta 2>/dev/null || true + brew uninstall sunshine-beta 2>/dev/null || true + brew untap LizardByte/homebrew 2>/dev/null || true + } + if [ "$OPTION" == "help" ]; then echo "Usage: ujust setup-sunshine