DeckTube

Setup guide for Steam Deck — bookmark this page.

1. Install (first time)

Recommended: double-click installer

Download Install-DeckTube.desktop

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:

  1. Downloads it to ~/Downloads.
  2. Right-click it in the file manager → Properties → Permissions → tick "Is executable" (or you may just get a "trust this program?" prompt the first time you open it — accept it).
  3. From then on, double-click it and it downloads, installs, and launches DeckTube in one go — a terminal window shows progress.

Alternative: one line in a terminal

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.)

2. Launch from Gaming Mode

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.

  1. In Konsole, download and prep the launcher script — this saves it to a fixed, predictable folder (~/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.

  2. In Steam (Desktop Mode): Games → Add a Non-Steam GameBrowse → navigate to ~/decktube-launcher/ → select decktube-launch.sh → Add.
  3. Steam names the entry after the script's filename by default — right-click it in your library (or select it and look for an editable name field) and rename it to "DeckTube".
  4. Switch to Gaming Mode — DeckTube now appears in your library.
  5. Select it → open its Controller Configuration (per-game, not the generic Desktop one) to bind buttons, then launch it from there any time.

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.

3. Signing in

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:

  1. In the Deck's own Firefox (Desktop Mode), sign into youtube.com/google.com normally, the way you always would.
  2. Close Firefox (it locks its cookie database while running).
  3. Run this in Konsole:
    curl -sL https://decktube.irishdeveloper.dev/import-firefox-session.py | python3
  4. (Re)start DeckTube — it reads the imported session automatically on startup.

This reads cookies directly from Firefox's own profile on this device — nothing leaves the Deck, no extension or separate account setup needed.

4. Updating

Download Update-DeckTube.desktop

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.

5. Troubleshooting / manual steps

DeckTube won't launch from Gaming Mode

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
Just want to relaunch without updating?
cd ~/Downloads/decktube
npm start
Prefer to install manually, one step at a time? Download decktube.zip

Extract the zip

cd ~/Downloads
unzip decktube.zip -d decktube
cd decktube

Check for Node.js/npm

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.

Install and run

cd ~/Downloads/decktube
npm install
npm start

A window should open loading youtube.com — use the trackpad like a mouse to navigate.