Skip to content

Commit 90029cd

Browse files
committed
update readme about new linux sandboxing options
1 parent 45847bc commit 90029cd

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,22 @@ Built for the [itch.io app](https://itch.io/itch) to launch game binaries, smaug
1919

2020
## Packages
2121

22-
- **`runner`** — Core package containing `GetRunner()`, the `Runner` interface, platform-specific runner implementations (`firejailRunner`, `sandboxExecRunner`, `fujiRunner`, `simpleRunner`, `appRunner`), and process group management.
22+
- **`runner`** — Core package containing `GetRunner()`, the `Runner` interface, platform-specific runner implementations (`simpleRunner`, `firejailRunner`, `bubblewrapRunner`, `flatpakSpawnRunner`, `sandboxExecRunner`, `fujiRunner`, `appRunner`), and process group management.
2323
- **`fuji`** — Windows sandbox implementation using isolated user accounts. Creates a low-privilege `itch-player-XXXXX` user, manages credentials via the Windows registry, and handles folder sharing for each launch.
2424

2525
## Sandboxing
2626

2727
### Linux
2828

29-
Uses [firejail](https://firejail.wordpress.com/). A profile is generated at `{InstallFolder}/.itch/isolate-app.profile` that blacklists sensitive directories (browser caches, itch/kitch config) and whitelists the game's install folder and temp directory. Per-game local overrides can be placed in `/etc/firejail/` (e.g. `itch_game_{name}.local`), and a global override file `itch_games_globals.local` is also included if present.
29+
Three sandbox backends are supported. `GetRunner()` selects one automatically when `Sandbox` is enabled:
30+
31+
1. **Flatpak-spawn** — chosen when running inside a [Flatpak](https://flatpak.org/) environment (detected by the presence of `/.flatpak-info`). Uses `flatpak-spawn --sandbox` to create a sub-sandbox within the Flatpak container. Supports environment variable forwarding (`--env`), working directory (`--directory`), and optional network isolation (`--no-network`). The `--watch-bus` flag ties the sandboxed process lifetime to the caller's session bus.
32+
33+
2. **Bubblewrap** — chosen when `BubblewrapParams.BinaryPath` is set (and not inside a Flatpak). Uses [bubblewrap](https://github.com/containers/bubblewrap) to create a lightweight user-namespace sandbox. Mounts system directories read-only, bind-mounts the game's install folder read-write, and forwards display/audio sockets (X11, Wayland, PulseAudio, PipeWire). Namespace isolation covers user, IPC, PID, and UTS; network access remains shared.
34+
35+
3. **Firejail** — the fallback when neither of the above apply. Uses [firejail](https://firejail.wordpress.com/) with a generated profile at `{InstallFolder}/.itch/isolate-app.profile` that blacklists sensitive directories and whitelists the game's install folder and temp directory. Per-game local overrides can be placed in `/etc/firejail/` (e.g. `itch_game_{name}.local`), and a global override file `itch_games_globals.local` is also included if present.
36+
37+
Selection priority: **Flatpak-spawn > Bubblewrap > Firejail**.
3038

3139
### macOS
3240

0 commit comments

Comments
 (0)