summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTLD136 <48219004+TLD136@users.noreply.github.com>2024-07-05 18:01:43 +0200
committerTLD136 <48219004+TLD136@users.noreply.github.com>2024-07-05 18:01:43 +0200
commitb6ed88facf5480c2e81ee843bbb8e37958b9d17c (patch)
tree50f18ca75474cf1c90094633e7732ebfaf447507
parente3232d595e8fff3e2d64b847e1405099ed476ea9 (diff)
downloaddecky-installer-b6ed88facf5480c2e81ee843bbb8e37958b9d17c.tar.gz
decky-installer-b6ed88facf5480c2e81ee843bbb8e37958b9d17c.zip
Make Zenity work as root on Wayland
-rwxr-xr-x[-rw-r--r--]gui/user_install_script.sh11
1 files changed, 9 insertions, 2 deletions
diff --git a/gui/user_install_script.sh b/gui/user_install_script.sh
index ff7be0e..504f5ed 100644..100755
--- a/gui/user_install_script.sh
+++ b/gui/user_install_script.sh
@@ -7,7 +7,14 @@ temp_pass_cleanup() {
# removes unhelpful GTK warnings
zen_nospam() {
- zenity 2> >(grep -v 'Gtk' >&2) "$@"
+# If we are on a wayland compositor the Wayland socket will be on /run/user/$UID(probaby 1000)/wayland-[socket-number].
+# When running Zenity under root(sudo) Zenity will assume /run/user/0/wayland-[socket-number].
+# That is not correct because the Wayland compositor is not running as root
+if [ $EUID = 0 ] && [ "$XDG_SESSION_TYPE" = "wayland" ]; then
+ WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" XDG_RUNTIME_DIR="/run/user/0" zenity "$@" 2> >(grep -v 'Gtk' >&2)
+else
+ zenity 2> >(grep -v 'Gtk' >&2) "$@"
+fi
}
# check if JQ is installed
@@ -58,7 +65,7 @@ if (( $EUID != 0 )); then
zen_nospam --title="Decky Installer" --width=300 --height=100 --warning --text "You appear to not be on a deck.\nDecky should still mostly work, but you may not get full functionality."
fi
- echo "$PASS" | sudo -S -k bash "$0" "$@" # rerun script as root
+ echo "$PASS" | sudo -E -S -k bash "$0" "$@" # rerun script as root
exit 1
fi