Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Repository files navigation

Big Remote Play

Your games. Any screen. Anywhere.

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.

License GPL-3.0-or-later Python 3.11 or newer GTK 4 and libadwaita Wayland and X11 Sunshine and Moonlight 32 languages

Install · User guide · Troubleshooting · Technologies · Contribute

Home: the logo with Start with the guided setup, then Share and Connect; in the sidebar Share and Connect say Stopped and Connect your devices says Running

Why Big Remote Play?

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.
🖥️ 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.
🕵️ 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.
🎮 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

Share: Source set to Game Window, listing Shadow of the Tomb Raider (Steam · Proton), SuperTuxKart (Linux native) and Cyberpunk 2077 (Steam · Proton · Gamescope), then the Image and capture card
Share: choose Full Desktop, a game to start, or only one open game window.
Connect: three game computers as cards, two on the local network and one over Tailscale, with the Computers and Advanced options tabs
Connect: pick the game computer; other ways to connect are on the Advanced options tab.
Connect your devices: Tailscale, ZeroTier and Headscale as cards with a switch each; Tailscale is connected with this computer's address and 3 online of 3 devices
Connect your devices: each method with a real switch, its address and its devices.
Image and capture sheet with automatic capture and encoding, the video bitrate ceiling and screen and encoder settings
Image and capture: automatic by default, detailed when you need it.
Preferences: audio output, play sound on this computer, and the Microphone and Voice calls switches off, audio test
Sound: what the other computer hears, said in plain words.
Home in Brazilian Portuguese
32 languages: here in Brazilian Portuguese.
Home in the Gamer appearance
Gamer appearance: a dark, colorful preset next to Automatic, Light and Dark.
Share with Game Window in the Gamer appearance
Game Window in the Gamer appearance.

Screenshots use simulated games, devices and addresses.

Try it in three steps

1. On the computer running the game — open Share, choose what to share and select Start sharing. Under Source, Game Window sends only the game you pick; Full Desktop sends the whole screen.

2. On the computer that will play — open Connect and choose the game computer. The first time, Moonlight shows a four-digit pairing code, and the sharing computer shows New connection request by itself: type the code there and choose Approve.

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.

Pairing code and search code are different. A pairing code 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.

Install

BigLinux and Manjaro

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-play

Then 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 plays

Arch Linux

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.

Build the package from source

makepkg run inside a checkout packages that checkout:

git clone https://github.com/ruscher/big-remote-play.git
cd big-remote-play/pkgbuild
makepkg -si

Set 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

nix run github:biglinux/big-remote-play

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

Run from a checkout

With the GTK requirements installed from your distribution:

PYTHONPATH=src python3 -m big_remote_play

For 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_play

The Python wheel alone is not a complete desktop installation: icons, styles, translations and helpers live under usr/share/. See the development guide.

Requirements

Packages (Arch/BigLinux names)
Required python ≥ 3.11, gtk4, libadwaita ≥ 1.7, python-gobject, libsecret, avahi, curl, iproute2, iputils, jq, polkit, hicolor-icon-theme
Share sunshine
Connect moonlight-qt
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-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), flatpak (VPN clients installed as Flatpaks). Pamac is used to install components when it is present.

Game Window: share the game, not your desktop

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"]
Loading

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.

Technologies

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
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,000 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.

Project status

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.

Documentation

Audience Start here
Players and helpers User guide, troubleshooting, Game Window
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

Contribute

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.

Security and privacy

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.

Credits

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.

Acknowledgements

Big Remote Play stands on the shoulders of excellent free software. Thank you to:

Their names and trademarks belong to their respective projects. Big Remote Play does not replace their security models, protocols or documentation.

License

Big Remote Play is free software, licensed under GPL-3.0-or-later. See COPYING.

About

No description, website, or topics provided.

Resources

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages