Steam Machine test bench.
Nothing here has run on the hardware yet. Copy a command, try it on the machine, mark what happened. Results live in this browser only — hit export when you want them out.
Probe
3 testsEstablish what the box actually is before trusting any result below.
- 01
SteamOS build & kernel
- unknown
- Which SteamOS release and kernel does the Steam Machine ship, and does it differ from Deck 3.x?
- pass looks like
- VERSION_ID and BUILD_ID from os-release; record them — every other result on this page is only valid for this build.
cat /etc/os-releaseuname -srmhostnamectl | sed -n "1,12p"Chassis / hardware vendor line tells us how the machine self-identifies.
- 02
Session & compositor
- unknown
- Is the desktop session the same Plasma/gamescope pairing as the Deck, and is it Wayland-only?
- pass looks like
- XDG_CURRENT_DESKTOP=KDE, XDG_SESSION_TYPE=wayland, and a running gamescope process in Game Mode.
echo "desktop=$XDG_CURRENT_DESKTOP session=$XDG_SESSION_TYPE"pgrep -a gamescope | head -3plasmashell --version - 03
Read-only rootfs
low risk- unknown
- Is / still immutable? Anything that writes outside $HOME needs this answered first.
- pass looks like
- "enabled" — themes must then live under ~/ (which survives updates) and never in /usr.
sudo steamos-readonly statusfindmnt -no FSTYPE,OPTIONS / /homeConfirms the btrfs/ext4 split and which mount is writable.
Theming
10 testsDoes the Deck theming stack — CSS Loader, Plasma, boot video — transfer to the Steam Machine untouched?
- unknown
- Does Decky Loader install and stay running on this build? CSS Loader is a Decky plugin, so everything downstream depends on it.
- pass looks like
- plugin_loader.service active (running), and ~/homebrew/plugins exists.
systemctl status plugin_loader --no-pager | sed -n "1,6p"ls -1 ~/homebrew/plugins 2>/dev/null || echo "no decky plugins dir"- unknown
- Does the upstream installer's Deck assumptions (paths, service restart) hold on Steam Machine?
- pass looks like
- Installer exits 0, plugin appears in the Decky menu in Game Mode, no restart loop in the service log.
curl -L https://github.com/suchmememanyskill/SDH-CssLoader/raw/main/install_release.sh | shExternal script — read it once before piping if you have not already.
journalctl -u plugin_loader -n 20 --no-pagerundo
rm -rf ~/homebrew/plugins/SDH-CssLoader && sudo systemctl restart plugin_loader.service- 03
Hand-rolled theme + manifest version
low risk- unknown
- Which CSS Loader manifest_version does this build accept? Writing a minimal theme by hand isolates that from any store download.
- pass looks like
- "magus test" shows up in the CSS Loader plugin list and the Quick Access panel picks up the accent colour.
mkdir -p ~/homebrew/themes/magus-test && cat > ~/homebrew/themes/magus-test/theme.json <<'JSON' { "name": "magus test", "version": "v1.0", "author": "magus.sh", "manifest_version": 8, "inject": { "shared.css": ["QuickAccess", "SP", "Desktop"] } } JSONBump manifest_version and re-run if the plugin rejects it — that number is the actual thing under test.
cat > ~/homebrew/themes/magus-test/shared.css <<'CSS' :root { --magus-probe: #7aa2f7; } body { outline: 2px solid var(--magus-probe); outline-offset: -2px; } CSSA visible outline is a blunt but unmistakable "the CSS landed" signal.
sudo systemctl restart plugin_loader.serviceundo
rm -rf ~/homebrew/themes/magus-test && sudo systemctl restart plugin_loader.service - 04
Plasma colour scheme
desktop mode- unknown
- Do the plasma-apply-* CLI tools exist on this image, or has Valve trimmed them?
- pass looks like
- A scheme list prints, and applying one repaints the desktop session immediately.
plasma-apply-colorscheme --list-schemesplasma-apply-colorscheme BreezeDarkundo
plasma-apply-colorscheme BreezeDark - 05
Global (look-and-feel) theme
desktop modemedium risk- unknown
- Does lookandfeeltool survive here, and does applying a global theme break the Return-to-Game-Mode shortcut?
- pass looks like
- Theme list prints; after applying, the Return to Gaming Mode desktop icon still works.
lookandfeeltool -llookandfeeltool -a org.kde.breezedark.desktopundo
lookandfeeltool -a org.kde.breezedark.desktop - 06
Cursor, icon & desktop theme
desktop mode- unknown
- Are the Steam-branded cursor and icon themes present, and do Wayland clients pick up a change without a relog?
- pass looks like
- Each --list-themes prints; the cursor changes without logging out.
plasma-apply-cursortheme --list-themesplasma-apply-desktoptheme --list-themesls -1 /usr/share/icons ~/.local/share/icons 2>/dev/null - 07
Flatpak apps following the system theme
desktop mode- unknown
- Do Flatpaks read the host GTK theme once the config dirs are exposed, or do they stay Adwaita-light?
- pass looks like
- Overrides apply cleanly and a relaunched Flatpak (Brave, VLC) matches the desktop.
flatpak override --user --filesystem=xdg-config/gtk-3.0:ro --filesystem=xdg-config/gtk-4.0:rogsettings get org.gnome.desktop.interface color-schemeflatpak override --user --showundo
flatpak override --user --reset - 08
Boot video override
low risk- unknown
- Does the Steam Machine honour the Deck uioverrides/movies path for the startup animation?
- pass looks like
- Directory exists (or can be created) and a webm dropped in as deck_startup.webm plays on next boot.
mkdir -p ~/.steam/root/config/uioverrides/moviesls -la ~/.steam/root/config/uioverrides/moviesls -1 ~/.steam/root/steamui/movies 2>/dev/null | headStock animations — filenames here tell us what an override has to be called on this build.
undo
rm -f ~/.steam/root/config/uioverrides/movies/deck_startup.webm - 09
Custom fonts
- unknown
- Do user fonts in ~/.local/share/fonts get picked up by both Plasma and the Steam client?
- pass looks like
- fc-cache sees the new font and it is selectable in Plasma settings; note whether Game Mode also picks it up.
mkdir -p ~/.local/share/fonts && fc-cache -fv ~/.local/share/fonts | tail -3fc-list : family | sort -u | wc -lundo
rm -rf ~/.local/share/fonts && fc-cache -f - 10
Survives a SteamOS update
- unknown
- Which of the above live on the writable /home partition and therefore survive an OS update?
- pass looks like
- Everything under ~/homebrew, ~/.local, ~/.steam resolves inside /home — anything that does not will be wiped.
for p in ~/homebrew ~/.local/share/fonts ~/.steam/root/config/uioverrides ~/.config/kdeglobals; do printf "%-46s %s\n" "$p" "$(df --output=target "$p" 2>/dev/null | tail -1)"; done
Anything that passes here graduates to a card in/setup. Anything that breaks is worth a note on why — that's the part upstream docs never write down.