Global — KDE Connect–compatible mobile companion (Gleam + egui/vidya dist-ui)
Rust 53%
Gleam 16%
Python 13%
Shell 13%
Erlang 2%
Nix 2%
Just <1%
<1%

README.md

Global #

A mobile companion for KDE Connect / Valent peers.

Global on Waydroid — paired with desktop, live channel, Ping / Unpair

Waydroid (x86_64) — egui + vidya shell, on-device KDE Connect peer

Layer Role
Gleam (global_app, dist_driver) Domain model + controller over Erlang distribution
Rust dist-ui Thin on-device UI (egui + vidya)
erl_dist / ETF Wire between Gleam and the device UI
Peer discovery Host: Valent / GSConnect / kdeconnect-cli / LAN identity (scripts/discover-peers)

There is no desktop GUI. Global always runs on a device (Waydroid or Android over adb). Peer lists are live from the host’s Valent (or similar), not mocks.

Run #

From the repo root (Waydroid session + NDK/SDK for APK builds):

nix run .#global
# or
just run

That will:

  1. cargo apk build --target x86_64-linux-android --no-default-features in dist-ui/
  2. adb install -r the APK
  3. Launch the app and run Gleam dist_driver → ui@<device-ip>

Skip a rebuild: GLOBAL_APK_SKIP_BUILD=1 nix run .#global

Layout #

Path
src/ Gleam domain (global_app)
dist_driver/ Gleam controller (erl_dist → device)
dist-ui/ Rust Android UI (egui + vidya)
flake input vidya Theme crate → tangled.org/nandi.uk/vidya (staged at .flake/vidya)
scripts/global-run.sh Device pipeline used by nix run .#global

Vidya flake input #

# default: locked git+https://knot1.tangled.sh/nandi.uk/vidya
nix run .#global

# local checkout while hacking on the theme:
nix run .#global --override-input vidya path:$HOME/code/vidya

Cargo depends on path = "../.flake/vidya"; nix run / nix develop stage the flake input there.

Docs #

License #

MIT