Skip to content

Latest commit

History

231 Commits

Folders and files

NameName
Last commit message
Last commit date

theatron

θέατρον - place for viewing

Fleet desktop UI infrastructure for the forkwright/menos ecosystem. Dioxus + Blitz primitives, theme provider, components (per kanon DESIGN-TOKENS.md), HTTP/SSE, OS integration. Consumed by:

  • aletheia/proskenion (Dioxus desktop chat)
  • aletheia/koilon (Ratatui TUI)
  • kanon/chalkeion (Dioxus desktop forge UI)
  • harmonia/desktop (Dioxus desktop media platform)
  • akroasis/desktop (Dioxus desktop RF intelligence)

Status

The public API is frozen across all eight crates per the theatron SemVer policy (kanon/projects/theatron/SEMVER.md). Consumers pin a single git tag and inherit additive minors / non-breaking patches until v2.0.

Full plan: kanon/projects/chalkeion/.

Quickstart

Add to your consumer Cargo.toml:

[dependencies]
# WHY the trailing annotations: release-please rewrites the tag on each release,# so this snippet cannot go stale. They are TOML comments and safe to paste.# A block-scoped annotation would be wrong here -- it rewrites EVERY semver# between its markers, which would stamp theatron's version onto the dioxus pins.themelion = { git = "https://github.com/forkwright/theatron.git", tag = "v1.6.2" } # x-release-please-versionmekhane = { git = "https://github.com/forkwright/theatron.git", tag = "v1.6.2" } # x-release-please-versiondioxus = "=0.7.6"dioxus-native = "=0.7.6"

Smallest working app:

use dioxus::prelude::*;use dioxus_native::launch;fnapp() -> Element{rsx!{ div {"theatron "{themelion::version()}}}}fnmain(){launch(app);}

See examples/minimal/ for a runnable version with the kanon dye-token CSS variables wired in, and examples/tray_smoke/ for the tray + menu

  • global-hotkey surface.

Consumer integration patterns (Cargo features, theme provider, OS services, mekhane launch variants): see _meta/INTEGRATION.md.

Prerequisites

Linux (Debian/Ubuntu): mekhane's tray + native-menu surface pulls tray-icon -> GTK3 (glib-sys, gobject-sys, gio-sys, gdk-sys, cairo-sys-rs, pango-sys, atk-sys, gdk-pixbuf-sys), which needs system dev headers at build time. Install before the first cargo check --workspace:

sudo apt-get install --no-install-recommends \
libgtk-3-dev libglib2.0-dev libcairo2-dev libpango1.0-dev \
libatk1.0-dev libgdk-pixbuf-2.0-dev libayatana-appindicator3-dev \
pkg-config

macOS and Windows build out of the box.

Crates

Standalone Greek names per the fleet naming convention (no theatron- prefix; each crate is its own domain abstraction).

CrateGreekRole
themelionθεμέλιον - foundationTheme provider, window lifecycle, routing scaffolding, error boundary, settings, logging
mekhaneμηχανή - stage machineryWindowing, event loop, OS hooks (tray, hotkeys, native menus). Wraps unmodified Dioxus + Blitz.
bathronβάθρον - pedestalOS services: notifications, file dialogs, window state, settings, autoupdate, logging
keryxκῆρυξ - herald/messengerHTTP client base, SSE streaming, mDNS discovery, ApiError
skeueσκευή - props/equipmentGeneric Dioxus components per DESIGN-TOKENS.md component anatomy
grammaγράμμα - written characterMarkdown + syntax highlighting (pulldown-cmark + syntect), diff state
parodosπάροδος - chorus's stage entranceTerminal UI substrate (Ratatui + theme + sanitize + clipboard + highlight + hyperlink)
dokimasiaδοκιμασία - examinationDesign-token + standards enforcement linter

Architecture

┌─ App (chalkeion, proskenion, harmonia-desktop, akroasis-desktop) ─┐
│ parameterized via configs │
└────────────────────────────────────────────────────────────────────┘
↓ depends on
┌─ theatron crates (themelion, mekhane, skeue, gramma, …) ───────────┐
│ fleet-owned, kanon-style domain crates │
└────────────────────────────────────────────────────────────────────┘
↓ depends on
┌─ Dioxus (UI framework) ─┐ ┌─ Blitz (render engine) ─┐ ┌─ winit/Vello/wgpu/accesskit ─┐
│ upstream customer │ │ upstream → dioptron │ │ upstream foundational │
└─────────────────────────┘ └──────────────────────────┘ └────────────────────────────────┘

Dioxus is a customer of theatron - we use it unmodified, never patch. Blitz today is upstream; long-term dioptron (the fleet's sovereign web runtime) owns the same render-band primitives directly, and mekhane consumes dioptron once that lands.

License

Apache-2.0 OR MIT.

About

Desktop UI infrastructure for the fleet - Dioxus/Blitz primitives, design tokens, markdown rendering, HTTP/SSE, OS integration

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages