The world's first native screen extender for Linux.
Your Android phone or tablet becomes a real second monitor. Not a web page in a browser tab: your GPU encodes the screen and the phone's hardware decodes it, so a window you drag across keeps up with your hand.
0 downloads
Install with one command on Ubuntu, Fedora or Arch:
curl -fsSL https://raw.githubusercontent.com/saharshbaiju/tandem/main/install.sh | bashNot a mirror.
Not a browser tab.
A real monitor.
Your compositor gets a new display, so windows, workspaces and scaling work like on any monitor you plug in. The phone shows it full screen, frame by frame, the moment each one arrives.
0ms
From the moment a pixel changes on your computer to the moment it lights up on the phone. Typically 25 to 45 ms over USB and about 30 to 60 ms over Wi-Fi, with no buffering anywhere in between. Wi-Fi is quickest on the phone's own hotspot.
Three ways to plug in
USB tethering
Just a USB cable, no developer options. Switch on USB tethering in the phone's hotspot settings and the computer finds it.no setup on the phone
Wi-Fi
No cable at all. Put both on the same network. If a firewall blocks the phone, the live view tells you and opens the port when you press f. It runs best when the computer joins the phone's own hotspot: a direct link, with no router or other devices in the way. The picture stays on that link, and only the computer's own internet use goes over mobile data.cable-free, about 30 to 60 ms
USB cable
The fastest. Turn on USB debugging once and plug in; Tandem sets up the link by itself. Works even when the phone is on mobile data.
One command.
That's the install.
curl -fsSL https://raw.githubusercontent.com/saharshbaiju/tandem/main/install.sh | bashPaste it into a terminal on Ubuntu, Fedora or Arch. It works out what your desktop is missing, asks for your password once, and adds the tandem command. Nothing to compile, nothing to configure. Run it again to update.
-
Run the command
The one above, in any terminal. Here's what it prints: about a minute on a fresh system, seconds when you update.
-
Start Tandem
Open a new terminal, run tandem and pick Start Tandem. A QR code appears with the computer's addresses and a pairing code.
While it waits, the live view checks the cable, the firewall and Wi-Fi, and says why a phone can't connect yet.
- link
- USB cable
- address
- 127.0.0.1:5000
- pairing code
- 4821 7730
-
Install the app on the phone
On the phone, open the latest release, tap Tandem.apk and open the download. Android 8 or newer. Each phone maker words the permission a little differently:
Download the APK -
Scan and connect
In the app tap Scan QR code, point it at the terminal and tap Connect. Ripples spread from your finger, then the screen dissolves into your extended desktop.
The phone's own camera app works too: the code opens Tandem and asks you to confirm the computer.
Touch the phone's screen to use it. On GNOME there's nothing to set up. On Hyprland, touch needs a one-time permission: the installer offers it, or press t in the live view.
Only your phone can connect
The QR code is the key
It carries a random pairing key and the fingerprint of the computer's certificate. Typing an address instead? Enter the pairing code too.
Both sides prove it
Nothing reaches a phone until the phone and the computer have each shown they know the key.
Everything is encrypted
Video and touches travel over TLS. Others on the same Wi-Fi can neither watch nor touch.
Runs where you work
| Hyprland | Arch, or anything running Hyprland. A headless output becomes the phone's monitor, encoded with NVENC or VA-API. |
|---|---|
| GNOME on Wayland | Ubuntu 22.04+, Fedora 36+, any GNOME 40+. Mutter makes the virtual monitor, PipeWire and GStreamer carry it. |
| Android 8+ | Phones, tablets and foldables. The app decodes in hardware and draws each frame the moment it arrives. |
Built in the open.
Every line of Tandem is on GitHub. A star helps more than you'd think: it pushes Tandem in front of a much wider audience, and the community grows with it. Share it with anyone who has a spare phone, or send a fix. Found a bug? Please open an issue on GitHub with your distro, desktop and phone, so it gets fixed for everyone. If it saved you buying a monitor, buy me a chai.
