Setup guide for Steam Deck — bookmark this page.
Linux won't let a downloaded file silently run itself — a deliberate security boundary, not a missing feature — so there's one one-time step before double-click works:
~/Downloads.In Desktop Mode → Konsole:
curl -sL https://decktube.irishdeveloper.dev/setup.sh | bash
Both options run the exact same script: downloads DeckTube, installs Node.js if missing, installs dependencies, starts the app. (The script itself is plain text at that URL if you want to read it first.)
Add DeckTube to your Steam library so you can launch it directly from Gaming Mode day-to-day — no Desktop Mode or terminal needed once this is set up. This also gives it its own per-game Controller Configuration screen, which is a much easier place to set up controller buttons than generic Desktop-wide settings.
~/decktube-launcher/) instead of "wherever the terminal happens to be," so there's no ambiguity about where it landed:
mkdir -p ~/decktube-launcher
cd ~/decktube-launcher
curl -LO https://decktube.irishdeveloper.dev/decktube-launch.sh
chmod +x decktube-launch.sh
ls -la ~/decktube-launcher/decktube-launch.sh
The last line confirms it: you should see the file listed with a size and an rwx permission, at exactly ~/decktube-launcher/decktube-launch.sh. If it says "No such file," the download itself failed — scroll up in the terminal output to see why (network error, 404, etc.), don't just retry blindly.
~/decktube-launcher/ → select decktube-launch.sh → Add.If it doesn't launch: Steam runs this script directly, not through an interactive terminal, so it can't rely on ~/.bashrc to put Node on PATH — the script sets PATH itself now, and logs everything to ~/decktube-launcher/launch.log if you need to check what happened. If you added the non-Steam game entry before this fix, you don't need to re-add it — just re-run the download command above to overwrite the script in place; Steam will pick up the new content next launch.
Signing in from inside DeckTube's own window doesn't work — Google blocks OAuth/sign-in from embedded browsers by policy (confirmed by logs showing a 403 on the very first step of the flow). Their own guidance is to authenticate via a real browser instead, so DeckTube pulls your session straight out of the Deck's own Firefox automatically — no extension, no manual export:
curl -sL https://decktube.irishdeveloper.dev/import-firefox-session.py | python3
This reads cookies directly from Firefox's own profile on this device — nothing leaves the Deck, no extension or separate account setup needed.
Same one-time trust step as the installer (Properties → Permissions → "Is executable"), then double-click any time to update. Or, one line in Konsole:
curl -sL https://decktube.irishdeveloper.dev/update.sh | bash
This pulls the latest code and reinstalls dependencies, but leaves node_modules alone — so unlike the full installer, it's fast (no re-downloading Electron) unless a dependency actually changed.
Check the launcher's log — it captures whatever npm start printed (or an error if the decktube folder itself is missing):
cat ~/decktube-launcher/launch.log
cd ~/Downloads/decktube
npm start
cd ~/Downloads
unzip decktube.zip -d decktube
cd decktube
SteamOS doesn't ship with Node by default:
node --version
npm --version
If that says "command not found", install a portable Node build below. This avoids touching SteamOS's read-only system partition, which is the safe way to add dev tools here.
cd ~
curl -O https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz
tar -xf node-v22.14.0-linux-x64.tar.xz
echo 'export PATH="$HOME/node-v22.14.0-linux-x64/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
node --version
Node releases move on over time — if the curl line 404s, grab the current LTS tarball URL from nodejs.org/en/download and swap it in.
cd ~/Downloads/decktube
npm install
npm start
A window should open loading youtube.com — use the trackpad like a mouse to navigate.