-
-
Save x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| # | |
| # Script for installing x11vnc on Steam Deck. | |
| # | |
| # Install: | |
| # | |
| # sh -c "$(curl -fsSL https://gist.githubusercontent.com/x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9/raw/vnc_install.sh?$RANDOM)" | |
| # | |
| # This will modify root filesystem so it will probably get | |
| # overwrite on system updates but is totally ok executing | |
| # it several times, so if something stops working just | |
| # launch it again. | |
| # | |
| # If you like seeing the terminal window, change | |
| # "Terminal=false" to "Terminal=true" for the desktop entries below. | |
| # | |
| # Original script: àngel "mussol" bosch (muzzol@gmail.com) | |
| # | |
| echo -n "Checking root permissions: " | |
| if [ "$(id -ru)" == "0" ]; then | |
| echo "OK" | |
| else | |
| echo "user is $(whoami), trying again as root" | |
| exec sudo sh -c "$(curl -fsSL https://gist.githubusercontent.com/x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9/raw/vnc_install.sh?$RANDOM)" | |
| exit 0 | |
| fi | |
| ## system related comands | |
| echo "Disabling readonly filesystem" | |
| steamos-readonly disable | |
| if [ ! -e "/etc/pacman.d/gnupg/trustdb.gpg" ]; then | |
| echo "Initalizing pacman keys" | |
| pacman-key --init | |
| pacman-key --populate archlinux | |
| fi | |
| echo "Installing package" | |
| pacman -Sy --noconfirm x11vnc | |
| echo "Re-enabling readonly filesystem" | |
| steamos-readonly enable | |
| ## user related commands | |
| DECK_USER=$(grep "^User=" /etc/sddm.conf.d/steamos.conf | cut -d"=" -f2) | |
| echo "Creating desktop entries" | |
| mkdir -p "/home/${DECK_USER}/Desktop/VNC/" | |
| LAUNCHER_TEXT='[Desktop Entry] | |
| Name=Start VNC | |
| Exec=x11vnc -noxdamage -usepw -display :0 -no6 -forever -bg | |
| Icon=/usr/share/app-info/icons/archlinux-arch-community/64x64/x11vnc_computer.png | |
| Terminal=false | |
| Type=Application | |
| StartupNotify=false' | |
| echo "$LAUNCHER_TEXT" > "/home/${DECK_USER}/Desktop/VNC/Start VNC.desktop" | |
| chown "${DECK_USER}" "/home/${DECK_USER}/Desktop/VNC/Start VNC.desktop" | |
| chmod +x "/home/${DECK_USER}/Desktop/VNC/Start VNC.desktop" | |
| LAUNCHER_TEXT='[Desktop Entry] | |
| Name=Stop VNC | |
| Exec=killall x11vnc | |
| Icon=/usr/share/app-info/icons/archlinux-arch-community/64x64/x11vnc_computer.png | |
| Terminal=false | |
| Type=Application | |
| StartupNotify=false' | |
| echo "$LAUNCHER_TEXT" > "/home/${DECK_USER}/Desktop/VNC/Stop VNC.desktop" | |
| chown "${DECK_USER}" "/home/${DECK_USER}/Desktop/VNC/Stop VNC.desktop" | |
| chmod +x "/home/${DECK_USER}/Desktop/VNC/Stop VNC.desktop" | |
| LAUNCHER_TEXT='[Desktop Entry] | |
| Name=Set VNC Password | |
| Exec=sudo x11vnc -storepasswd; read -s -n 1 -p "Press any key to continue . . ." | |
| Icon=/usr/share/app-info/icons/archlinux-arch-community/64x64/x11vnc_computer.png | |
| Terminal=true | |
| Type=Application | |
| StartupNotify=false' | |
| echo "$LAUNCHER_TEXT" > "/home/${DECK_USER}/Desktop/VNC/Set VNC Password.desktop" | |
| chown "${DECK_USER}" "/home/${DECK_USER}/Desktop/VNC/Set VNC Password.desktop" | |
| chmod +x "/home/${DECK_USER}/Desktop/VNC/Set VNC Password.desktop" | |
| LAUNCHER_TEXT='[Desktop Entry] | |
| Name=Reinstall VNC | |
| Exec=sudo sh -c "$(curl -fsSL https://gist.githubusercontent.com/x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9/raw/vnc_install.sh?$RANDOM)" | |
| Icon=/usr/share/app-info/icons/archlinux-arch-community/64x64/x11vnc_computer.png | |
| Terminal=true | |
| Type=Application | |
| StartupNotify=false' | |
| echo "$LAUNCHER_TEXT" > "/home/${DECK_USER}/Desktop/VNC/Reinstall VNC.desktop" | |
| chown "${DECK_USER}" "/home/${DECK_USER}/Desktop/VNC/Reinstall VNC.desktop" | |
| chmod +x "/home/${DECK_USER}/Desktop/VNC/Reinstall VNC.desktop" | |
| SCRIPT_TEXT='#!/bin/bash | |
| x11vnc -noxdamage -usepw -display :0 -no6 -forever -bg' | |
| echo "$SCRIPT_TEXT" > "/home/${DECK_USER}/Desktop/VNC/vnc_startup.sh" | |
| chown "${DECK_USER}" "/home/${DECK_USER}/Desktop/VNC/vnc_startup.sh" | |
| chmod +x "/home/${DECK_USER}/Desktop/VNC/vnc_startup.sh" | |
| if [ ! -f "/home/${DECK_USER}/.vnc/passwd" ]; then | |
| echo "Creating VNC password" | |
| sudo -H -u "${DECK_USER}" bash -c "x11vnc -storepasswd" | |
| fi | |
| echo "Done!" | |
| read -s -n 1 -p "Press any key to continue . . ." | |
| echo "" |
Sorry all, I sold my SteamDeck long ago thus unable to maintain this script anymore. Glad to see the community keeps improving it and make it working for newer SteamOS versions.
This script is really broken. Firstly even though
==does seem to work everywhere, it's not documented anywhere.[in an alias for/bin/testand the shell runs a command and it wouldn't be out of the question for a rust rewrite of test to not have==and make it's way onto the steamdeck, while in bash[[is a shell builtin and mainly does the same things... Bash's[[doesn't document=, but the test builtin does. However if you look at line 21, that should be-eqand not the "documented"=as these are for numbers and strings respectively, see the test man page andhelp [[from bash.I tried my best to suggest fixes to this script, but I think the author is AFK.
Sorry y’all, I sold my SteamDeck long ago thus unable to maintain this script anymore. Glad to see the community keeps improving it and make it working for newer SteamOS versions.
Strange... I needed to quickly spin up a vnc server on my Steam Deck and came across this gist from a google search and installed it with no issues whatsoever. Nothing modified in anyway. Just uninstalled everything and re-ran it again from scratch just to be sure.
PGP Key Prep
Pull gist
sh -c "$(curl -fsSL https://gist.githubusercontent.com/x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9/raw/vnc_install.sh?$RANDOM)"Then on Steam Deck in desktop mode, run script in Konsole. Running script via ssh will fail. Script reads active display from current shell session
./vnc_startup.shMy Steam Deck is more or less stock with the exception of some utilities like Tailscale or Decky Loader. I just installed the latest update and even confirmed that vnc persists even after updates are installed.