burrow/docs/GTK_APP.md
Conrad Kramer 002bd382e9
Some checks failed
Cache: Publish Nix / Publish Nix Cache (push) Waiting to run
Build Rust / Cargo Test (push) Successful in 4m14s
Build Site / Next.js Build (push) Failing after 6s
Infra: OpenTofu / OpenTofu (grafana) (push) Successful in 5s
Lint Governance / BEP Metadata (push) Successful in 0s
Build: Android / Android Rust Core Stub (push) Failing after 23s
Wire Forge-native release infrastructure
2026-06-07 05:51:12 -07:00

3.8 KiB

Linux GTK App Getting Started

Currently, the GTK App can be built as a binary or as an AppImage. The Flatpak lane is a GUI packaging target until Burrow has a verified host daemon/helper path for TUN, routes, DNS, and firewall state. The intended Flatpak behavior is to discover and talk to a native Burrow daemon installed by DEB, RPM, or the NixOS flake/module, not to own privileged routing itself.

Dependencies

Install Build Dependencies

Debian

Note: Burrow currently cannot compile on Debian Stable (Bookworm) due to its outdated dependencies

  1. Install build dependencies
sudo apt install -y clang meson cmake pkg-config libssl-dev libgtk-4-dev libadwaita-1-dev gettext desktop-file-utils
  1. Install flatpak builder (Optional)
sudo apt install -y flatpak-builder
  1. Install AppImage build tools (Optional)
sudo apt install -y wget fuse file
Fedora
  1. Install build dependencies
sudo dnf install -y clang ninja-build cmake meson openssl-devel gtk4-devel glib2-devel libadwaita-devel desktop-file-utils libappstream-glib
  1. Install flatpak builder (Optional)
sudo dnf install -y flatpak-builder
  1. Install AppImage build tools (Optional)
sudo dnf install -y util-linux wget fuse fuse-libs file
Void Linux (glibc)
  1. Install build dependencies
sudo xbps-install -Sy gcc clang meson cmake pkg-config openssl-devel gtk4-devel gettext desktop-file-utils gtk4-update-icon-cache appstream-glib
  1. Install flatpak builder (Optional)
sudo xbps-install -Sy flatpak-builder
  1. Install AppImage build tools (Optional)
sudo xbps-install -Sy wget fuse file

Flatpak Build Dependencies (Optional)

flatpak install --user \
    org.gnome.Platform/x86_64/45 \
    org.freedesktop.Sdk.Extension.rust-stable/x86_64/23.08

Building

With Nix, enter the focused GTK shell before running the Meson build:

nix develop .#gtk
General
  1. Enter the burrow-gtk
cd burrow-gtk
  1. Perform the meson build
meson setup build
meson compile -C build
Flatpak
  1. Compile and install the flatpak
flatpak-builder
    --user --install --force-clean --disable-rofiles-fuse \
    flatpak_debug/ \
    burrow-gtk/build-aux/com.hackclub.burrow.devel.json
AppImage
  1. Enter the burrow-gtk
cd burrow-gtk
  1. Compile the AppImage
./build-aux/build_appimage.sh

Running

The GTK app mirrors the Apple home surface: a Burrow header, Networks carousel, Accounts section, Tunnel action, and the same add flows for WireGuard, Tor, and Tailnet. It talks to the daemon over the same gRPC API used by Apple clients for network storage, tunnel state, Tailnet discovery, authority probing, browser sign-in, and Tailnet payloads.

On Linux the GTK app first looks for a daemon on the configured gRPC socket. If none is reachable, it starts an embedded user-scoped daemon with a socket under XDG_RUNTIME_DIR and a database under XDG_DATA_HOME before refreshing the UI.

General

The compiled binary can be found in build/src/burrow-gtk.

./build/src/burrow-gtk
Flatpak
flatpak run com.hackclub.burrow-devel
AppImage

The compiled binary can be found in build-appimage/Burrow-*.AppImage.

./build-appimage/Burrow-*.AppImage