Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
3deca48
Harden remote play packaging and secrets
bigbruno Jun 24, 2026
c2b5b20
Reduce low-risk pyright warnings
bigbruno Jun 24, 2026
3d9a6e2
Tighten GTK idle and display typing
bigbruno Jun 24, 2026
d43eed6
Replace dynamic main window widget state
bigbruno Jun 24, 2026
3ce14be
Mark dynamic GI imports for pyright
bigbruno Jun 25, 2026
11e8fcb
Resolve small UI pyright warnings
bigbruno Jun 25, 2026
799278f
Tighten guest view GTK typing
bigbruno Jun 25, 2026
acad43f
Tighten private network async typing
bigbruno Jun 25, 2026
f01d333
Tighten host view optional state handling
bigbruno Jun 25, 2026
0eccb99
Fix AT-SPI navigation controls
bigbruno Jun 25, 2026
0435dad
Refresh Portuguese UI translations
bigbruno Jun 25, 2026
148d778
Compact VPN selector layout
bigbruno Jun 25, 2026
af33de3
Fix server page vertical layout
bigbruno Jun 25, 2026
e7487cb
Fix libadwaita bottom bar spacing
bigbruno Jun 25, 2026
9cd0416
Fix server management a11y actions
bigbruno Jun 25, 2026
9ac024a
Fix guest advanced settings a11y action
bigbruno Jun 25, 2026
b56c62b
Fix host browser a11y actions
bigbruno Jun 25, 2026
b2013e4
Store Sunshine credentials in keyring
bigbruno Jun 25, 2026
19ee5c5
Remove shell execution from host launch paths
bigbruno Jun 25, 2026
cedabae
Name server icon buttons for accessibility
bigbruno Jun 25, 2026
65ec886
Avoid broad Sunshine kill on stop
bigbruno Jun 25, 2026
0a6129a
Polish main UI from mockups
bigbruno Jun 25, 2026
9d78584
Remove duplicate home branding
bigbruno Jun 25, 2026
2de320d
Compact page headers
bigbruno Jun 25, 2026
6ca4afc
Make stack tabs explicit
bigbruno Jun 25, 2026
eac4033
Format touched UI modules
bigbruno Jun 25, 2026
9b24829
Hide duplicate header title
bigbruno Jun 25, 2026
de64909
Reuse translated VPN subtitle
bigbruno Jun 25, 2026
302ac36
Move section titles to headerbar
bigbruno Jun 25, 2026
65a8144
Format Python sources with Ruff
bigbruno Jun 25, 2026
045ec2e
Move home branding into headerbar
bigbruno Jun 25, 2026
0010912
fix(connect): stop host-list clipping; compact natural-height scroller
bigbruno Jun 25, 2026
39ec717
feat(connect): intent-branched empty state routes novices to Rede Pri…
bigbruno Jun 25, 2026
9d0c854
feat(connect): single-column discover with guidance subtitle + quiet …
bigbruno Jun 25, 2026
3673e18
feat(connect): quality expander + render empty state outside capped s…
bigbruno Jun 25, 2026
84bf74c
feat(vpn): plain-language role framing + collapsed comparison on sele…
bigbruno Jun 25, 2026
ef88e6a
feat(vpn): prominent browser login on Tailscale form; auth key now ad…
bigbruno Jun 25, 2026
eb2ba46
i18n(pt): translate Connect/Rede Privada novice redesign strings
bigbruno Jun 25, 2026
c8e9c38
feat(vpn): detect package install status; offer one-click install in …
bigbruno Jun 25, 2026
d9d4849
feat(vpn): install-only step when package missing (pacman); detect Fl…
bigbruno Jun 25, 2026
dc45c07
fix(vpn): install Tailscale via pacman, not AUR/yay
bigbruno Jun 25, 2026
66c16c0
fix(discover): filter virtual interfaces (veth/docker/br-), dedupe li…
bigbruno Jun 25, 2026
b87ee53
fix(host): don't plot synthetic metrics when no guest connected
bigbruno Jun 25, 2026
7b30741
feat(host): show local IPs in clear; widen advanced-settings dialog p…
bigbruno Jun 25, 2026
2a559c2
docs: connect-page novice redesign spec + implementation plan
bigbruno Jun 25, 2026
dd55467
fix(vpn): open Tailscale auth URL in user's browser, not as root
bigbruno Jun 25, 2026
b057ecd
refactor(vpn): replace BigLinux bigsudo with pkexec (cross-distro ele…
bigbruno Jun 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 45 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,51 +202,59 @@ Big Remote Play acts as a **unified interface** that orchestrates multiple open-

```
big-remote-play/
├── 📁 src/
│ └── 📁 big_remote_play/ # Python package (built as a wheel)
│ ├── app.py # Application entry point (Adw.Application)
│ ├── __main__.py # `python -m big_remote_play`
│ ├── paths.py # Data/locale path resolution
│ ├── 📁 ui/ # User Interface (GTK4/libadwaita)
│ │ ├── main_window.py # Main window with sidebar nav
│ │ ├── host_view.py # Host server configuration
│ │ ├── guest_view.py # Guest client connection
│ │ ├── private_network_view.py # VPN/Private network setup
│ │ ├── performance_monitor.py # Real-time performance dashboard
│ │ ├── sunshine_preferences.py # Sunshine advanced settings
│ │ ├── moonlight_preferences.py # Moonlight advanced settings
│ │ ├── preferences.py # General app preferences
│ │ └── installer_window.py # Dependency installer
│ ├── 📁 host/ # Host module
│ │ └── sunshine_manager.py # Sunshine server management
│ ├── 📁 guest/ # Guest module
│ │ └── moonlight_client.py # Moonlight client wrapper
│ └── 📁 utils/ # Utility modules
│ ├── audio.py # PulseAudio management
│ ├── config.py # Configuration management (atomic)
│ ├── game_detector.py # Game detection (Steam/Lutris/Heroic)
│ ├── i18n.py # Internationalization
│ ├── icons.py # Icon utilities
│ ├── logger.py # Logging system
│ ├── network.py # Network discovery & tools
│ ├── script_protocol.py # Network-script marker parser
│ ├── secure_io.py # Owner-only secret writes
│ └── system_check.py # System dependency checker
├── 📁 tests/ # pytest suite
├── 📁 usr/
│ ├── 📁 bin/
│ │ └── big-remote-play # Shell launcher script
│ │ └── big-remote-play # Resilient launcher (survives Python upgrades)
│ └── 📁 share/
│ ├── 📁 applications/
│ │ └── big-remote-play.desktop # Desktop entry
│ ├── 📁 big-remote-play/
│ │ ├── main.py # Application entry point
│ │ ├── 📁 ui/ # User Interface
│ │ │ ├── main_window.py # Main window with sidebar nav
│ │ │ ├── host_view.py # Host server configuration
│ │ │ ├── guest_view.py # Guest client connection
│ │ │ ├── private_network_view.py # VPN/Private network setup
│ │ │ ├── performance_monitor.py # Real-time performance dashboard
│ │ │ ├── sunshine_preferences.py # Sunshine advanced settings
│ │ │ ├── moonlight_preferences.py # Moonlight advanced settings
│ │ │ ├── preferences.py # General app preferences
│ │ │ ├── installer_window.py # Dependency installer
│ │ └── big-remote-play.desktop # Desktop entry
│ ├── 📁 big-remote-play/ # Data assets (shipped under /usr/share, not code)
│ │ ├── 📁 ui/
│ │ │ └── style.css # Custom GTK4 styles
│ │ ├── 📁 host/ # Host module
│ │ │ └── sunshine_manager.py # Sunshine server management
│ │ ├── 📁 guest/ # Guest module
│ │ │ └── moonlight_client.py # Moonlight client wrapper
│ │ ├── 📁 utils/ # Utility modules
│ │ │ ├── audio.py # PulseAudio management
│ │ │ ├── config.py # Configuration management
│ │ │ ├── game_detector.py # Game detection (Steam/Lutris/Heroic)
│ │ │ ├── i18n.py # Internationalization
│ │ │ ├── icons.py # Icon utilities
│ │ │ ├── logger.py # Logging system
│ │ │ ├── network.py # Network discovery & tools
│ │ │ └── system_check.py # System dependency checker
│ │ ├── 📁 scripts/ # Shell scripts
│ │ │ ├── big-remoteplay-configure.sh
│ │ │ ├── big-remoteplay-firewall.sh
│ │ │ ├── big-remoteplay-install.sh
│ │ │ ├── big-remoteplay-service.sh
│ │ ├── 📁 scripts/ # Shell scripts (gettext-localized)
│ │ │ ├── configure_firewall.sh
│ │ │ ├── create-network_headscale.sh
│ │ │ ├── fix_sunshine_libs.sh
│ │ │ └── headscale_master.sh
│ │ └── 📁 icons/ # SVG/PNG icons
│ ├── 📁 icons/ # System icon theme
│ └── 📁 locale/ # Compiled translations
│ │ │ ├── create-network_tailscale.sh
│ │ │ ├── create-network_zerotier.sh
│ │ │ └── drop_guest.sh
│ │ ├── 📁 icons/ # App SVG icons
│ │ └── 📁 img/ # App images
│ └── 📁 locale/ # Compiled translations (.mo)
├── 📁 locale/ # Translation source files (.po/.pot)
├── pyproject.toml # Wheel build + ruff/pytest/pyright config
├── flake.nix # Nix build
├── default.nix # Nix package definition
├── 📁 pkgbuild/ # Arch Linux packaging
│ ├── PKGBUILD
│ └── pkgbuild.install
Expand Down
45 changes: 45 additions & 0 deletions default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{ lib
, python3Packages
, gtk4
, libadwaita
, libsecret
, pkg-config
, wrapGAppsHook4
, gobject-introspection
, gettext
, curl
, iproute2
}:
python3Packages.buildPythonApplication {
pname = "big-remote-play";
version = "2.0.0";
src = ./.;
pyproject = true;

build-system = with python3Packages; [ uv-build ];
dependencies = with python3Packages; [ pygobject3 pycairo ];

nativeBuildInputs = [ pkg-config wrapGAppsHook4 gobject-introspection gettext ];
buildInputs = [ gtk4 libadwaita libsecret ];

# Runtime tools resolved from PATH at use time (sunshine, moonlight, docker,
# tailscale, zerotier) are not Nix build inputs; the app degrades gracefully
# when they are absent.
propagatedBuildInputs = [ curl iproute2 ];

dontWrapGApps = false;

postInstall = ''
cp -a $src/usr/share/big-remote-play $out/share/big-remote-play
install -Dm644 $src/usr/share/applications/big-remote-play.desktop \
$out/share/applications/big-remote-play.desktop
cp -a $src/usr/share/locale $out/share/locale
'';

meta = with lib; {
description = "Integrated remote cooperative gaming system";
homepage = "https://github.com/biglinux/big-remote-play";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}
Loading