Skip to content

Big Screen

Velle Sinclair edited this page Sep 3, 2026 · 6 revisions

Big Screen

The couch face of the machine: one full-screen surface of tiles you drive with a controller, from four metres away, with the keyboard left on the table.

syn-arcade big start           # or Super+F10, or the pad's GUIDE button
syn-arcade big autostart on    # …and open it at login instead of the desktop

A television is not a monitor with a bigger number. Every desktop convention — a titlebar, a 12-pixel close button, a menu you aim at — fails at sofa distance, so this is a separate interface rather than a scaled one.


What is on it

  • Your installed Steam library, with its cover art, most recently played first
  • Steam Big Picture, optionally through gamescope for a TV that is not your desktop's resolution
  • GeForce NOW, wherever syn-gfn is installed — see Gaming. It takes both a pointer and a keyboard, unlike the launchers beside it: those are applications with their own controller support, and this is a web page until a game starts, so choosing one takes a cursor and signing in the first time takes letters
  • Whatever launchers and media players are actually on the machine
  • A web browser, a terminal and the controller window
  • Music — see below
  • Headlines
  • The machine's own switches — desktop, sleep, restart, power off — behind Start, along with Settings

Nothing is listed that is not installed. A tile you can press is a tile that works.

The Recent bar

Across the top, newest first, capped at eight — the last things this machine opened.

It is the desktop's list, not big screen mode's. That distinction is the whole feature: a tally of what had been launched from the television is empty for anybody who opens big screen mode, looks at it and goes back to the desktop, which is what "recently opened" plainly does not mean. synui keeps it at the one moment every launch has in common — a window turns up — so the start menu, the dock, the app grid, a desktop icon, the file manager and a terminal all count, and no launcher can forget to remember one. synctl recent prints it.

It stores ids and looks each one up when the shelf is drawn, so a tile whose program has been removed is simply not drawn, and returns to its place if it comes back. The way out (desktop) and the machine's own switches are deliberately not entries — a "recently opened" row whose first item is "go back to the desktop" is a row nobody reads twice.

It is a bar, first among Play/Media/Apps, rather than a shelf of its own: a whole row of a television for four tiles is exactly the mistake the shelf order was rearranged to undo.

The Steam library is read the way Steam stores it, which is three questions and not one: libraryfolders.vdf for every drive Steam has been pointed at (a scanner that reads only your home directory finds the runtimes and none of the games), a manifest per installed app, and a cover-art cache that has had three on-disk layouts and still has all three on any machine that has run Steam for a few years. Proton and the Steam Linux Runtimes are dropped — --all puts them back.


Getting in and out

Super+F10 start it, or show/hide it if it is already running
Guide on the pad the same, in both directions — from the desktop it brings big screen mode back, from inside it takes you to the desktop
syn-arcade big stop close it for good

It steps aside rather than closing. Opening the browser, the terminal or the controller window unmaps the surface and leaves the shell running; it comes back when you close what you opened, or the moment you press Guide.

That is why big stop exists as a separate verb. A layer-shell surface is not a toplevel — it appears in no dock and no window switcher, so without it the only exit was "hidden for the rest of the session".

A tile press fills the television. From a sofa, a titlebar and a strip of wallpaper around the edge are the whole difference between an appliance and somebody's computer left switched on, so launching from a tile fullscreens what it opened.


Music

The tile plays from a source, chosen once and remembered:

syn-arcade big music source          # what is available, and which is picked
syn-arcade big music source plex     # choose one (see the ids below)
<id> Source What it needs
plex Plex a server on your network — found by broadcast, no address to type
ytmusic YouTube Music nothing, to play. See the note below
spotify Spotify an account, through cliamp's own sign-in
local Local files your music folder
radio Radio nothing — cliamp carries the stations

Spotify is browsed inside cliamp's own interface and nowhere else, so choosing it opens cliamp on the television rather than filling a queue from a tile. The other four are reachable from outside it, which is what lets the tile end in music.

Jellyfin is not a music source — it appears as a media-server tile (big media), found on the network the same way.

syn-arcade big music plex            # the albums in the Plex library
syn-arcade big music plex <id>       # play one — the queue becomes that album
syn-arcade big music play|toggle|next|prev|stop
syn-arcade big music setup           # cliamp's sign-in wizard, in a terminal
syn-arcade big music install <id>    # what a source needs before it can play

Choosing a source is a setting, not a transport command. Picking one on a silent machine used to start playing. It does restart the player, though — cliamp takes --provider at start-up and has no verb to change it afterwards, so switching source stops and restarts the music. There is no gentler mechanism, and a picker that quietly did nothing until the next reboot would be worse.

YouTube Music needs no account to play

Signing in is a browser — Google cookies, not an API key or a Cloud project — and it is for browsing: your own playlists, and a search you can type from the sofa with the on-screen keyboard. Playback itself works signed out.

syn-arcade big music install ytmusic fetches what streaming needs (yt-dlp); without it the provider is present and returns nothing, which is the one failure that looks like an account problem and is not.

The player

cliamp — and big screen mode drives it rather than launching it, over its own socket, so the Now Playing row in Start controls playback with nothing on screen. music = cliamp in ~/.config/syn-arcade/big.conf is the default; any other player becomes a tile that opens a window somebody then has to get out of with a gamepad.

big transport is the other half and is not the same thing: it acts on whatever is making noise, over MPRIS — Spotify, a film, a browser tab — which is what the media buttons along the bottom of the screen use.

The visualizer

projectM, listening to the monitor of whatever audio output is in use rather than to a microphone. It is a tile, a row in Start, and a chord: both stick clicks at once, or V.

The chord exists because the visualizer is the one thing somebody turns on while something is already playing, and three rows into a menu is the wrong distance for that. L3 and R3 mean nothing on their own — only the pair says a word.

Behind the Now Playing row, the meter is cliamp's own FFT bands, streamed a frame per line.


Driving it

Everything is words on a pipeup, accept, page-right, one per line, read by exactly one process. Nothing is synthesised into the desktop, so a stray event cannot land in a window you left open, and stick drift cannot arrive as held arrow keys in every text field on the machine.

A keyboard and a mouse work too, mapped onto the same words: the machine that is a television in the evening is a desktop in the afternoon. The wheel is one of them — it is accumulated into notches and sent as up/down, so it reaches the shelves, the Start menu, the media buttons and the on-screen keyboard without any of them knowing a wheel exists.

The one exception is a browser, which takes pointer events and cannot be driven with words. So while one is on screen:

  • the controller is a mouse — left stick moves the pointer, right stick scrolls, A clicks, X right-clicks, the shoulders are Back and Forward
  • an on-screen keyboardStart opens it, A types, X is backspace, Y is space, the shoulders change layout, B closes it. There is an Address key, which is Ctrl+L: a browser you cannot type a URL into can only follow links somebody else opened

Both stop the instant big screen mode comes back.


Fitting an old game to the screen

A game that renders at 640×480 has no idea what a 1440p monitor is, and sits as a postage stamp in the middle of a black screen. gamescope fixes that, and the line is hard to remember:

gamescope -w 1024 -h 768 -W 2560 -H 1440 -f -F fsr -- wine Sims.exe

syn-arcade fit writes it for you and gives it a menu entry:

syn-arcade fit new --name="The Sims" --exec="wine Sims.exe" --game=1024x768
syn-arcade fit new --from=/usr/share/applications/thegame.desktop
syn-arcade fit                  # the wrappers you have made
syn-arcade fit command <id>     # the command line it builds, to check or copy
syn-arcade fit run <id>         # what the menu entry runs

-w/--game is what the GAME renders at; -W/--screen is the monitor. Getting them the wrong way round produces a wrapper that runs and looks worse than no wrapper.

--screen defaults to your primary monitor, --filter to FSR, and --force-window, --grab, --overlay and --gamemode are there for the games that need them.


Settings

Start ▸ Settings, three pages, every row a press of A.

Shelves

A switch each for Running, Games, Recent, Play, Media, Apps and News. A machine used as a console does not need a headlines row; one wired to a stereo may want nothing but Media and Music.

A shelf switched off is not drawn and is not navigable — the same state an empty one is already in, which is why nothing else had to be taught about it. The selection is remembered by name, so a shelf switched back on gets its place back.

Start menu

Whether the menu offers the Visualizer row, and whether it offers Sleep, restart and power off. The second is for a machine other people can reach.

Desktop and Quit have no switch, deliberately. They are the way out of a full-screen surface that owns the keyboard, and on a gamepad there is no key combination to fall back on — a setting able to hide them would be a setting able to trap somebody in front of their own television. The three power rows are safe to hide because leaving is still there when they are gone.

Power

Keep the screen awakenever, while playing, or always.

Big screen mode has no timeouts of its own, and must not. Dim, blank, lock and suspend are synui's idle machine, and every stage of it asks first whether anything holds a Wayland idle inhibitor. This setting decides whether big screen mode is one of the things holding one. It is the same rule the Sleep tile follows in running systemctl suspend rather than reimplementing it — there has to be one definition of "suspend this machine", or the couch and the desk drift apart.

while playing is the default because of two cases nothing else covers:

  • Music through cliamp has no surface. It is a headless player driven over a socket — no window, no MPRIS inhibit, nothing for the compositor to notice — so the desktop dims, blanks and eventually suspends in the middle of an album. Firefox and mpv hold their own inhibitor through org.freedesktop.ScreenSaver; this one cannot.
  • A gamepad is not Wayland input. A controller-only game is read from evdev by syn-arcade itself; the compositor sees no pointer and no key for as long as somebody plays, and counts the whole session as idle.

always holds it for as long as big screen mode is up, which on a launcher left showing a menu all night is a machine that should have slept at midnight and is warm at eight. That is why it is not the default.

The inhibitor is synui's own helper and is released by the holder exiting, so whatever ends big screen mode — including a crash — releases it too.


Configuration

Everything on the settings pages is ~/.config/syn-arcade/big.conf, and syn-arcade big settings is the same thing at a prompt:

syn-arcade big settings                    # every row, and what it is set to
syn-arcade big settings show_news off
syn-arcade big settings keep_awake next    # the next value round — what A does
output       = HDMI-A-1   # a connector name, `primary` or `focused`
music        = cliamp
music_source = plex
show_news    = off
keep_awake   = playing    # never | playing | always

Without output = it opens on the primary screen. It used to resolve the screen as "wherever I am", which synui answers from the output under the cursor — so a big start typed in a terminal on the second monitor opened the ten-foot interface on the second monitor.


The shortcuts

syn-arcade binds            # whether the gaming keys are installed
syn-arcade binds install    # add them to synuirc
Key Does
Super+F10 big screen mode
Super+F11 toggle the MangoHud overlay, inside a running game
Super+F12 move it

These are there on a fresh install since 0.2.9 — your session runs binds ensure, which refreshes a block that exists or writes one where there is none. A block you deliberately removed stays removed.

syn-arcade big guide off turns off the Guide-button watcher if you would rather the pad's Guide button went to Steam.


See also: Gaming for the overlay, controllers and Proton · Commands · Keybindings

Clone this wiki locally