Sleek — mobile freeq client (Vidya + freeq-sdk)
Rust 83%
Shell 7%
3%
JavaScript 2%
Starlark 2%
Java 2%
Nix 1%
Dockerfile <1%
Just <1%
Python <1%
Gleam <1%
GLSL <1%
Objective-C <1%
Meson <1%
C++ <1%
Ruby <1%
C <1%
HTML <1%

README.md

Sleek #

Mobile freeq client built with Vidya (GNOME/HIG-inspired egui theme) and freeq-sdk.

Layout and flows take cues from the freeq Android app: connect (guest), chats list, chat detail, discover, and settings — with a portrait bottom-tab shell.

Screenshot #

Sleek on Waydroid (chat + in-call video):

Sleek on Waydroid — chat with live call overlay

Screens #

Screen Role
Connect Nick + server, guest connect (TLS default irc.freeq.at:6697)
Chats Channel/DM list with last preview, unread badges, search, join
Chat Message stream + compose bar; Search finds messages across chats
Discover Popular channels + custom join
Settings Account, connection status, dark/light shell, disconnect

Stack #

  • UI: egui + vidya theme/widgets + Android safe chrome
  • Network: freeq-sdk (guest IRC, TLS / WebSocket)
  • Targets: desktop host (Wayland/X11) and Android NativeActivity (cargo-apk / Waydroid)

Installation #

Install via Flatpak (hosted OSTree repo on artifacts.latha.org):

flatpak install --user https://artifacts.latha.org/artifacts/sleek/uk.nandi.sleek.flatpakref
flatpak run uk.nandi.sleek

Run #

Dev shell + desktop host build work via either pixi or Nix — pick one. Android/Waydroid/Flatpak packaging, Buck2, and Cachix pushes below are still Nix-only (flake.nix); pixi.toml only replaces devenv.nix's job.

# pixi (conda-forge toolchain — no /nix/store, works on any Linux box):
pixi install        # once, materializes .pixi/envs/default from pixi.lock
pixi shell           # or: pixi run <task>
just host            # desktop window (cargo run) — same recipe either shell
just lib             # build android package as rlib (desktop target)
just host          # desktop window — buck2 build + run (see BUCK, cargo.bzl)
just lib           # build android package as rlib (desktop target, via buck2)
just waydroid      # cargo-apk → install → launch on Waydroid (x86_64)
nix develop        # or: direnv allow  (after .envrc)

# Or via the flake:
nix run            # flake devShell + just host --release (needs sibling vidya/freeq)
nix run .#host     # same as nix run
nix run .#sleek    # pure Nix store binary (hermetic)
nix build .#sleek  # → ./result/bin/sleek
nix build .#flatpak  # → ./result/uk.nandi.sleek.flatpak (GNOME Platform 49)

# Waydroid (x86_64 cargo-apk + install/launch + full UI window):
nix run .#waydroid                 # debug: build + install + launch + show-full-ui
nix run .#waydroid-release         # release (optimized + local signing keystore)

# Phone APK (aarch64) + adb install:
nix run .#deploy-android              # cargo apk + adb install -r
nix run .#deploy-android -- --launch  # …and start the activity
# Pure Nix store build (reproducible):
just android                   # nix build .#android
nix run .#install-android      # adb install -r that store APK

# Desktop Flatpak bundle:
just flatpak                   # → result-flatpak/*.flatpak
# Install: flatpak install --user ./result-flatpak/*.flatpak

Guest connect defaults:

  • Server: irc.freeq.at:6697 (TLS)
  • Nick: random sleekXXXX (editable)

On Android, the client prefers WebSocket (wss://host/irc) when the host looks like a freeq public server; desktop uses TLS TCP by default and can fall back to WebSocket via the connect form.

Install #

Single-command Flatpak install (OSTree repo on artifacts.latha.org):

flatpak install --user https://artifacts.latha.org/artifacts/sleek/uk.nandi.sleek.flatpakref
flatpak run uk.nandi.sleek

Or install from a tagged .flatpak bundle:

curl -LO https://tangled.org/nandi.uk/sleek/tags/v0.1.5/download/uk.nandi.sleek.flatpak
flatpak install --user ./uk.nandi.sleek.flatpak
flatpak run uk.nandi.sleek

Release artifacts are attached to version tags on tangled.org/nandi.uk/sleek — visible under Artifacts on each tag's page.

CI #

Merge / PR CI (check + APK + Flatpak) runs on boxci — see .boxci/pipeline.yml.

Job Artifact
APK sleek.apk
Flatpak uk.nandi.sleek.flatpak

CI APKs are signed with android/ci.keystore (alias androiddebugkey). If you previously installed a build signed with a different key, uninstall Sleek first before installing a new CI build.

Layout #

sleek/
  android/          # shared lib: UI + freeq-sdk bridge (cdylib for APK)
  host/             # desktop binary
  assets/           # desktop entry + icons (Flatpak / host)
  .tangled/         # Spindle CI (Tangled)
  scripts/          # enter, codespace shim, flakes ensure, Waydroid
  .github/workflows # CI: APK + Flatpak artifacts
  .devcontainer/    # GitHub Codespaces (nix feature + flakes)
  .envrc            # direnv → flake
  justfile
  flake.nix         # .#sleek, .#android, .#flatpak, …

License #

MIT