Last active
July 26, 2026 19:24
-
-
Save cretudorin/23ae354f41cc89f641d674b9948d66c5 to your computer and use it in GitHub Desktop.
DisplayLink.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -Eeuo pipefail | |
| echo "=== DisplayLink on SteamOS / Neptune Setup ===" | |
| echo | |
| # Verify we're running on SteamOS | |
| if ! command -v steamos-readonly >/dev/null 2>&1; then | |
| echo "This does not appear to be SteamOS." | |
| exit 1 | |
| fi | |
| echo "WARNING: This script will disable SteamOS read-only mode." | |
| echo "This modifies the base operating system and may be overwritten by SteamOS updates." | |
| echo | |
| read -r -p "Type Y to continue: " CONFIRM </dev/tty | |
| if [ "$CONFIRM" != "Y" ]; then | |
| echo "Aborted." | |
| exit 0 | |
| fi | |
| echo "=== Disabling SteamOS read-only mode ===" | |
| sudo steamos-readonly disable | |
| echo "=== Initializing pacman keys ===" | |
| sudo pacman-key --init | |
| sudo pacman-key --populate archlinux | |
| sudo pacman-key --populate holo | |
| echo "=== Updating package database ===" | |
| sudo pacman -Sy --noconfirm | |
| echo "=== Installing Plymouth ===" | |
| sudo pacman -S --needed --noconfirm plymouth | |
| echo "=== Discovering latest linux-neptune kernel ===" | |
| KERNEL_PKG="linux-neptune-$(uname -r | cut -d- -f1 | awk -F. '{print $1$2}')" | |
| if [[ -z "$KERNEL_PKG" ]]; then | |
| echo "Unable to determine latest linux-neptune package." | |
| exit 1 | |
| fi | |
| echo "Using kernel package: $KERNEL_PKG" | |
| echo "=== Installing kernel and headers ===" | |
| sudo pacman -S --noconfirm \ | |
| "$KERNEL_PKG" \ | |
| "${KERNEL_PKG}-headers" | |
| echo "=== Installing build dependencies ===" | |
| sudo pacman -S --noconfirm \ | |
| python \ | |
| linux-api-headers \ | |
| glibc \ | |
| pybind11 \ | |
| base-devel \ | |
| dkms \ | |
| libdrm \ | |
| git | |
| WORKDIR="$(mktemp -d)" | |
| trap 'rm -rf "$WORKDIR"' EXIT | |
| echo "=== Building and installing EVDI ===" | |
| cd "$WORKDIR" | |
| git clone https://aur.archlinux.org/evdi.git | |
| cd evdi | |
| makepkg -si --noconfirm | |
| echo "=== Building and installing DisplayLink ===" | |
| cd "$WORKDIR" | |
| sudo rm -rf /opt/displaylink | |
| git clone https://aur.archlinux.org/displaylink.git | |
| cd displaylink | |
| makepkg -si --noconfirm | |
| echo "=== Enabling DisplayLink service ===" | |
| sudo systemctl enable --now displaylink.service | |
| echo | |
| echo "=== Installation complete ===" | |
| echo "DisplayLink has been installed and the service has been enabled." | |
| echo "A reboot is recommended." |
Update 2026-07-04: I had to reapply the script, but it worked instantly (not even a reboot was needed this time)! You've really done it!
System details:
Operating System: SteamOS 3.8.14 Build: 20260703.1
KDE Plasma Version: 6.4.3
KDE Frameworks Version: 6.16.0
Qt Version: 6.9.1
Kernel Version: 6.16.12-valve24.4-1-neptune-616-gfe145653a794 (64-bit)
Graphics Platform: Wayland
Partition: A
Processors: 8 × AMD Custom APU 0405
Memory: 17 GB of RAM (15.5 GB usable)
Graphics Processor 1: AMD Custom GPU 0405
Graphics Processor 2: AMD Custom GPU 0405
Manufacturer: Valve
Product Name: Jupiter
System Version: 1
Author
@trey-a-12 well, you will have to run the script after every steamOs update. AFAIK they push full os images and reenable read only every time
Yes, that much is known, I was just clarifying that it truly does not persist even after minor ZZ (assuming X.Y.ZZ) updates, but that it does let you set it right back up in under 2 minutes! Thanks again!
Author
Created a git repo for it
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It... really "just worked"! Thank you so much!
Tested 2026-06-27. System details below; tested on Steam Deck LCD running stock SteamOS: