SteamOS Guide: Flatpak, Distrobox, Dev Mode and Decky Loader (2026)

Tested on: SteamOS 3.6 (Steam Deck) — Last updated: June 2026
SteamOS 3 is Valve's Arch Linux-based immutable operating system for the Steam Deck. It boots into Gaming Mode by default, but switching to Desktop Mode gives you a full KDE Plasma desktop where you can install apps, enable developer access, and run almost any Linux software via Distrobox or Flatpak. This guide covers everything you need to get the most out of SteamOS beyond gaming.
- Gaming Mode vs Desktop Mode
- Install Apps with Flatpak (No Root Needed)
- Enable Developer Mode and SSH Access
- Disable Read-Only Filesystem (Temporary)
- Install Any Linux Package with Distrobox
- Set Up a Development Environment
- Install Decky Loader (Plugin System)
- Run Windows Games with Proton
- SteamOS vs Bazzite
- Emulation with EmuDeck
- Format and Set Up a microSD Card
- Troubleshooting
- What to Do Next
Gaming Mode vs Desktop Mode
SteamOS has two modes, both accessible from the same device:
- Gaming Mode — the default TV-style interface optimized for controller input. All Steam games run here.
- Desktop Mode — a full KDE Plasma desktop. Switch to it from the Steam button → Power → Switch to Desktop.
Most of the setup in this guide happens in Desktop Mode. Connect a keyboard and mouse, or use the Steam Deck's touchscreen and trackpads.
Install Apps with Flatpak (No Root Needed)
Flatpak is the primary way to install GUI applications on SteamOS without unlocking the system. The Flathub repository is pre-configured and works out of the box from Desktop Mode.
Open the Discover software center in Desktop Mode and search for any app, or use the terminal:
# Install apps from Flathub
flatpak install flathub org.videolan.VLC
flatpak install flathub com.brave.Browser
flatpak install flathub md.obsidian.Obsidian
# List installed Flatpaks
flatpak list
# Update all Flatpaks
flatpak updateFlatpak apps are sandboxed and survive SteamOS system updates — they are the safest way to add software to an immutable system.
Enable Developer Mode and SSH Access
Developer Mode unlocks root access and enables SSH. Enable it from Gaming Mode:
- Steam button → Settings → System → scroll to Developer Mode → toggle on
- Steam button → Settings → System → SSH → enable
Set a password for the deck user in Desktop Mode (required for SSH):
passwdConnect from another machine on the same network:
ssh deck@steamdeck.local
# or by IP
ssh deck@192.168.1.XDisable Read-Only Filesystem (Temporary)
SteamOS uses an immutable root filesystem. Packages installed with pacman are wiped on every system update. For persistent installs use Distrobox (next section). If you need temporary root access:
# Disable read-only (until next update)
sudo steamos-readonly disable
# Install a package temporarily
sudo pacman -S --noconfirm htop
# Re-enable (recommended)
sudo steamos-readonly enableInstall Any Linux Package with Distrobox
Distrobox runs a full Linux container (Ubuntu, Fedora, Arch) inside SteamOS and exports apps and commands to the host. Everything installed inside Distrobox survives system updates.
# Install Distrobox (stored in home, survives updates)
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
# Create an Ubuntu container
distrobox create --name ubuntu --image ubuntu:24.04
# Enter the container
distrobox enter ubuntu
# Install anything with apt
sudo apt update && sudo apt install neovim git ripgrep nodejs npm
# Export a command to the SteamOS host
distrobox-export --bin /usr/bin/nvim --export-path ~/.local/binAfter exporting, nvim is available directly in the SteamOS terminal without entering the container. Export full GUI apps with distrobox-export --app appname.
Set Up a Development Environment
An Arch container gives you full AUR access and a complete dev environment that survives updates:
# Create an Arch container
distrobox create --name arch --image archlinux:latest
distrobox enter arch
# Inside Arch container: install dev tools
sudo pacman -S --noconfirm git base-devel python nodejs go rust
git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
# Export tools to SteamOS host
distrobox-export --bin /usr/bin/python3 --export-path ~/.local/bin
distrobox-export --bin /usr/bin/node --export-path ~/.local/binFor AI development on Steam Deck, install Ollama inside the container. The AMD GPU in Steam Deck has enough VRAM for 3B and 7B models via ROCm.
Install Decky Loader (Plugin System)
Decky Loader adds a plugin system to Gaming Mode, accessible from the Quick Access panel (three-dot button). Popular plugins:
- PowerTools — control TDP, CPU/GPU clocks and fan curve per game
- CSS Loader — custom themes for the Gaming Mode UI
- ProtonDB Badges — shows game compatibility rating inline
- SteamGridDB — custom artwork for non-Steam games
curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | shRun Windows Games with Proton
Steam ships with Proton pre-installed. Most Windows games run without configuration — install and play. For games outside Steam:
- Heroic Games Launcher — Epic Games and GOG via Flatpak
- Lutris — Battle.net, EA App, emulators via Flatpak
- ProtonUp-Qt — install ProtonGE (community Proton with extra game patches)
flatpak install flathub com.heroicgameslauncher.hgl
flatpak install flathub net.davidotek.pupgui2SteamOS vs Bazzite
SteamOS is officially for Steam Deck hardware only. If you want the same gaming-optimized immutable Linux experience on a regular PC, Bazzite is the closest equivalent — Fedora-based, immutable, with Proton and gaming drivers pre-configured out of the box. CachyOS is a good alternative if you prefer a performance-tuned Arch base with full pacman and AUR access on mutable storage.
Key differences at a glance:
- SteamOS: Steam Deck only (officially), Gaming Mode UI, immutable, rolling Arch base
- Bazzite: any PC/laptop, Gaming Mode optional, immutable Fedora base, NVIDIA and AMD support
- CachyOS: any hardware, mutable Arch with performance kernel patches, full AUR access
- Pika OS: Ubuntu-based, beginner-friendly, not immutable — closest to a traditional desktop
Emulation with EmuDeck
EmuDeck is the easiest way to set up emulators on Steam Deck. It installs and configures RetroArch, Dolphin, RPCS3, Yuzu/Ryujinx, PPSSPP and more in a single run, with correct Steam integration so every emulated game appears in Gaming Mode with artwork.
Install EmuDeck from Desktop Mode:
cd ~/Desktop
curl -L https://www.emudeck.com/EmuDeck.desktop -o EmuDeck.desktop
chmod +x EmuDeck.desktopDouble-click the EmuDeck icon on the desktop and follow the guided setup. Key decisions during install:
- Storage location: internal SSD or microSD card (microSD recommended if you have one)
- Easy Mode vs Expert Mode: Easy Mode installs everything with recommended settings — right choice for most users
- Steam ROM Manager: run it after EmuDeck to parse your ROMs and add them to Steam with artwork
Place your ROM files in the Emulation/roms/ folder on the selected storage device. Each emulator has its own subfolder (roms/ps2/, roms/switch/, etc.). After adding ROMs, run Steam ROM Manager from the EmuDeck app to generate Steam shortcuts with artwork — they then appear in Gaming Mode under Collections.
Format and Set Up a microSD Card
Steam Deck supports microSD cards up to 2TB. SteamOS formats them as ext4 by default, which is not readable on Windows but gives the best performance on Linux. Format a new card directly from Gaming Mode:
- Insert the microSD card
- Steam button → Settings → Storage → select the card → Format Drive
Or from Desktop Mode using the terminal:
# Find the microSD device name (usually /dev/mmcblk0 or /dev/sda)
lsblk
# Format as ext4 (SteamOS default)
sudo mkfs.ext4 -L "steamdeck-sd" /dev/mmcblk0p1
# Steam will detect and use it automatically after a rebootOnce formatted, Steam automatically uses the microSD as a secondary library location. Move games between internal and SD storage from: Steam button → Library → select a game → Manage → Move Install Folder.
Troubleshooting
Flatpak apps do not appear in Gaming Mode
Add the app as a non-Steam game: in Desktop Mode, open Steam → Games → Add a Non-Steam Game → browse to the Flatpak binary under /var/lib/flatpak/exports/bin/. Once added it appears in Gaming Mode under your library.
SSH connection refused after a SteamOS update
Updates can reset the SSH service. Re-enable it: Steam button → Settings → System → SSH → toggle on. Developer Mode does not need to be re-enabled separately.
distrobox command not found after update
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrcGame performance worse after a system update
Steam compiles shader caches in the background after updates — performance returns to normal once compilation finishes. Also check that PowerTools TDP settings have not reset to defaults.
What to Do Next
With Distrobox, Flatpak and SSH you have access to virtually any Linux tool on SteamOS without breaking the update system. If you want to move to a gaming PC on Linux, compare SteamOS with Bazzite — or check Arch Linux for complete control.
