Play with friends far away, or use the power of your computer on another device.
One friendly Linux app for Sunshine, Moonlight and secure private networks.
What's new · Install · User guide · Troubleshooting · Technologies · Contribute
Remote play on Linux usually means learning several unrelated tools before the first connection works. Big Remote Play keeps those tools independent but gives you one task-oriented interface for the whole journey:
| 🎮 Share a game | Share the whole desktop with Sunshine, start a Steam, Lutris or custom game, or send only one game window. The Game Library finds your installed Steam, Lutris and Heroic games and offers the ones you choose in Moonlight. |
| 🖥️ Connect from anywhere | Find the game computer and play it with Moonlight on another PC, a TV or a laptop. |
| 🔒 Play across the internet | Put both computers on the same private network with Tailscale, Headscale or ZeroTier. No open router ports needed. On a friend's ZeroTier network, Find computers to play on finds the game PC without the owner's account. |
| 🕵️ Keep your desktop private | Game Window streams one game through a private screen: notifications, chats and other windows never reach the other device. |
| 🧭 Guided from the first click | Start with the guided setup asks what you want to do and where the other device is, installs what this computer needs without a terminal, then opens the right page. |
| 🔑 Pair in seconds | Start sharing is one large button, and Pair a new device keeps the PIN field in view. When Moonlight asks to pair, the request opens by itself: type the four digits and choose Approve. The first time, Sunshine's administrator password is created for you and kept in the system keyring. |
| 👥 Play together | Up to four devices can play on the same computer at once, each with its own controller: invite friends to a local multiplayer game from wherever they are. |
| 🖱️ The pointer you can see | When the screen capture leaves the mouse pointer out (KMS on KDE and GNOME Wayland), Share notices it in Sunshine's log and offers the capture that draws it. |
| 🖥️ Every screen in its place | Choose which monitor of the game PC is shared and on which screen of this computer the game opens. |
| 📱 Play from a phone | Touch, keyboard and controller instructions for Moonlight on Android and iPhone/iPad, with a QR code to read them on the phone. |
| 🩺 Help when something fails | Support checks this computer without changing anything and explains common problems. If a stream drops because the network cannot carry it, Connect says so and offers Lower quality and connect again. |
| 🎮 Controllers too | Keyboard, mouse and controllers of the other device reach the game through Sunshine. While someone plays, Share says which controller arrived, or why none did. |
| 🔊 Sound that just works | Game audio is sent; the microphone and voice calls only when you turn them on. Everything returns to normal when sharing stops. |
| 🛡️ Respects what you have | Existing Sunshine libraries, paired devices, Moonlight identity and VPN profiles are preserved, never overwritten. |
| ♿ Made for everyone | Adaptive GTK 4/libadwaita interface for keyboard, touch, compact windows, high contrast, large text, RTL and CJK, in 32 languages. |
There is no proprietary game catalog and no requirement that the game came from a particular store. The game runs on your own computer; Big Remote Play coordinates the free-software components around it.
Screenshots use simulated games, devices and addresses.
1. On the computer running the game — open Share, choose what to share and press Start sharing. Under What to share, Game Window sends only the game you pick; Full Desktop sends the whole screen. The first time, Big Remote Play creates Sunshine's administrator password for you and keeps it in the system keyring.
2. On the computer that will play — open Connect and choose the game computer. The first time, Moonlight shows a four-digit PIN, and the sharing computer opens New connection request by itself: type the PIN there and choose Approve. You can also type it any time under Pair a new device.
Playing with friends? Each friend repeats step 2 on their own computer. Up to four devices can play at once, each with its own controller.
3. When the computers are in different places — open Connect your devices. Choose Tailscale (recommended), ZeroTier or Headscale: each opens its own page with one button for the next step (Install and continue, Set up, Sign in, Start), its devices with Copy IP, and Add device. Not sure where to start? Start with the guided setup on Home asks two questions, prepares this computer and takes you there.
The PIN and the search code are different. The PIN authorizes a device. A search code only helps find a Big Remote Play computer on a network that permits discovery.
The full walkthrough — audio, image quality, Game Window, direct public access and safety limits — is in the user guide.
This release is about finding things by themselves: your installed games, the computers on a friend's ZeroTier network and the right screen. Each item was checked on a real computer (X11 with three monitors, a ZeroTier /16 network, Steam libraries on two disks and Heroic); what still needs a real phone, Wayland desktop or second player is listed in the linked guides.
- A game library that finds your games — Steam (native and Flatpak, every library on every disk), Lutris and Heroic (Epic, GOG, Amazon). Only installed games are listed, Proton and Steam runtimes are left out, and you choose which ones Moonlight offers. It works with sharing off (details).
- Computers on someone else's ZeroTier network — Find computers to play on asks the network which computers share games, without the owner's ZeroTier account; they appear in Connect as Ready to play (how it works).
- ZeroTier on and off without a password — a helper limited to starting and stopping the private-network service, allowed for the person at the computer; no sudoers rule (details).
- Choose the screen where the game opens — Connect → Image → Open on opens Moonlight on the chosen screen of this computer on X11 (several screens).
- The shared monitor you chose, really shared — on X11 the game PC now sends the monitor picked in Share, and each monitor is listed once instead of twice.
- Controls on the phone — Shortcuts & Instructions has a tab for Moonlight on a computer, Android, iPhone/iPad and controllers, and a QR code that opens the guide on the phone (guide).
Earlier: a simpler Share page, automatic pairing with Sunshine's password kept in the keyring, up to four players at once, streams that drop explained with Lower quality and connect again, and the mouse pointer on Wayland.
Big Remote Play is packaged for BigLinux (currently in the biglinux-testing repository). The native package installs the application, launcher, icons, translations and desktop integration together:
sudo pacman -Syu big-remote-playThen open the task you want: anything missing is listed in the app with Install what's needed, which installs it through Pamac or PolicyKit (your password is asked in the system's own window). It never installs software without that button. To install by hand instead:
sudo pacman -S --needed sunshine # on the computer that shares games
sudo pacman -S --needed moonlight-qt # on the computer that playsMoonlight installed as a Flatpak (com.moonlight_stream.Moonlight) also works.
Every dependency of the package is in Arch's own repositories; no extra repository has to be added. Moonlight, Tailscale, ZeroTier, Headscale and Caddy are in extra. Sunshine is not in the Arch repositories: on the computer that shares games, install it from the AUR or from Sunshine's own package first. Install what's needed says so instead of failing.
makepkg run inside a checkout packages that checkout. Always build from an up-to-date checkout: an old clone carries an old recipe (one that copied only usr/ installs a launcher without the application, which now says so in a window).
git clone https://github.com/ruscher/big-remote-play.git
cd big-remote-play/pkgbuild
makepkg -siSet BIGREMOTEPLAY_FROM_GIT=1 to build ruscher/main instead of the local checkout. The package version is dated automatically at build time (YY.MM.DD).
nix run github:biglinux/big-remote-playThe flake dates each build from its commit (YY.MM.DD), like the native package. It does not include GStreamer, so add its plugins to the environment to use Game Window. The PolicyKit helpers and their /usr paths are not installed by Nix: on NixOS the actions that need administrator rights (firewall rules, a Headscale server, host input priority) are unavailable.
With the GTK requirements installed from your distribution:
PYTHONPATH=src python3 -m big_remote_playFor an isolated editable environment that still uses the distribution's GI bindings:
uv venv --python /usr/bin/python3 --system-site-packages ../brp-dev-venv
uv pip install --python ../brp-dev-venv/bin/python --no-deps -e .
PYTHONPATH=src ../brp-dev-venv/bin/python -m big_remote_playThe Python wheel alone is not a complete desktop installation: icons, styles, translations and helpers live under usr/share/. See the development guide.
| Packages (Arch/BigLinux names) | |
|---|---|
| Required | python ≥ 3.11, gtk4, libadwaita ≥ 1.7, glib2, gdk-pixbuf2, pango, python-gobject, python-cairo, libsecret, avahi, curl, iproute2, iputils, jq, polkit, procps-ng, systemd, util-linux, hicolor-icon-theme |
| Share | sunshine; for the Game Library, the launchers whose games you offer: steam, lutris, Heroic Games Launcher (native or Flatpak) |
| Connect | moonlight-qt (or the Moonlight Flatpak with flatpak) |
| Game Window | Sunshine ≥ 2026.516; KDE Plasma (kwin, xdg-desktop-portal-kde) on Wayland or an X11 desktop with compositing; gst-plugin-pipewire, gst-plugins-base, gst-plugins-bad-libs, gst-plugins-good |
| Connect your devices | one of tailscale or zerotier-one; to host your own Headscale server on this computer, headscale and caddy (miniupnpc reads the router's public address) |
| Optional | a Secret Service provider (GNOME Keyring or KWallet) for saved passwords, libpulse and pipewire for sound, libkscreen (screen mode and HDR for the connecting device), pciutils (graphics detection), xorg-xrandr (monitors and the main screen on X11), flatpak (Moonlight, VPN clients, Steam, Lutris or Heroic installed as Flatpaks), xdg-utils (start Heroic games when only its link handler exists). Pamac is used to install components when it is present. |
Sunshine can only capture whole screens, so Game Window gives it a private one. A headless KWin screen holds nothing but a mirror of the chosen game; the desktop, panels, notifications and every window placed over the game simply do not exist there. If the game closes or crashes, sharing stops at once — it never falls back to the desktop.
flowchart LR
G["Game window"] -->|"ScreenCast portal · KWin<br/>PipeWire DMA-BUF"| M["Mirror<br/>(GStreamer)"]
M --> P["Private screen<br/>headless kwin_wayland"]
P -->|"capture = kwin"| S["Sunshine<br/>hardware encoder"]
S --> C["Moonlight"]
Games are listed by name from their process tree — Steam, Proton, Wine, Lutris, Heroic, Gamescope and native games — and the private screen runs at 240 Hz so the game picture is not held back. Design, safety rules, measurements and limits: Game Window.
| Area | What Big Remote Play uses |
|---|---|
| Language and UI | Python 3.11+, GTK 4, libadwaita, PyGObject |
| Streaming | Sunshine server (NVENC, VAAPI, Vulkan and software encoders) and Moonlight Qt client, configured through their native files and APIs |
| Game Window | xdg-desktop-portal ScreenCast, KWin scripting and a headless kwin_wayland, PipeWire DMA-BUF, GStreamer; EWMH through libX11 on X11 |
| Screen and colors | kscreen-doctor for HDR-to-SDR and per-session resolution, restored after every session |
| Audio | PipeWire/PulseAudio through pactl and pw-link: automatic output capture, voice calls kept out and the microphone left out unless you choose otherwise, PipeWire port links ("bridges") made by the app, which removes only what it created |
| Networks | mDNS discovery with Avahi; Tailscale, Headscale and ZeroTier clients and APIs; a bounded, on-demand search of ZeroTier networks for Sunshine |
| Games | Steam (libraryfolders.vdf, appmanifest_*.acf), Lutris (pga.db) and Heroic (Legendary, GOG, Nile) libraries, read-only |
| Security | Secret Service keyring (libsecret) for passwords and tokens, narrowly scoped PolicyKit helpers, ufw/firewalld checks, owner-only atomic writes |
| Internationalization | gettext, 32 translated catalogs (distinct pt/pt_BR and zh_CN/zh_TW) |
| Packaging | PEP 517 build on uv_build, private /usr/lib/big-remote-play layout that survives Python upgrades, PKGBUILD and Nix flake, reproducible YY.MM.DD versions |
| Quality | pytest (over 1,700 tests, GTK task flows under Xvfb and D-Bus), ruff, pyright, catalog and metadata validators |
How the pieces fit together is described in architecture and the host and network policy.
The source tree runs automated checks for Python, GTK task flows, translations, desktop metadata, shell helpers, packaging and release hygiene. A stable release still requires target-machine validation of real streaming, GPU capture and encoding, audio routing, VPN sign-in, PolicyKit, keyring behavior and assistive technologies. See release acceptance.
Version fields in the checkout stay at 0.0.0. Builds derive YY.MM.DD automatically from SOURCE_DATE_EPOCH, or from the current UTC date when no reproducible-build epoch is supplied. Maintainers never edit version strings by hand.
| Audience | Start here |
|---|---|
| Players and helpers | User guide, troubleshooting, Game Window, game library, phone controls, several screens |
| ZeroTier | Finding computers on a network, no repeated passwords |
| Playing over the internet | Router, NAT and firewall, your own Headscale server, Cloudflare |
| Contributors | Contributing, development, documentation index |
| UI contributors | Visual design, UI instructions |
| Maintainers | Architecture, maintainer guide, release testing |
| Repository rules | AGENTS.md and the nested AGENTS.md files |
Contributions are welcome in English or Portuguese. Good starting points:
- reproduce and document a bug;
- improve a confusing task flow;
- add a focused regression test;
- test real hardware, games or networks;
- review a translation in context;
- improve screenshots or user documentation.
Read CONTRIBUTING.md before opening a pull request. Reports are actionable when they include the versions, session type, network setup and sanitized evidence needed to reproduce the problem.
If Big Remote Play helps you, star the repository, test it on your hardware and share what worked — that feedback helps other Linux players find the project and helps maintainers prioritize real-world compatibility.
Run the app as your normal user. Pair only trusted computers. Full Desktop can show notifications and other windows; use Game Window to send only the game. Backups may contain private certificates: protect them like passwords.
Never publish passwords, API tokens, authentication keys, private certificates, unredacted backups or private network addresses. Report sensitive vulnerabilities privately through the security policy, not a public issue.
Author / Lead Developer: Rafael Ruscher
- Development: Rafael Ruscher, with contributions from Bruno Gonçalves, Tales A. Mendonça and everyone in the contributors list, for the BigLinux community.
- Translations, testing and feedback: the BigLinux community, whose real computers, games and networks shape every release.
Big Remote Play stands on the shoulders of excellent free software. Thank you to:
- LizardByte for Sunshine, and the Moonlight Game Streaming Project for Moonlight — the streaming heart of this app;
- GNOME for GTK, libadwaita and PyGObject;
- KDE for Plasma, KWin and xdg-desktop-portal-kde, which make Game Window possible;
- PipeWire, GStreamer, freedesktop.org and Avahi;
- Tailscale, Headscale and ZeroTier for private networking;
- Valve (Steam, Proton, Gamescope), Lutris, Heroic and Wine for bringing so many games to Linux.
Their names and trademarks belong to their respective projects. Big Remote Play does not replace their security models, protocols or documentation.
Big Remote Play is free software, licensed under GPL-3.0-or-later. See COPYING.










