| 1 | [package] |
| 2 | name = "headroom-gui" |
| 3 | version.workspace = true |
| 4 | # optional, additive crate: pulls iced's gpu/system-lib stack (wgpu, |
| 5 | # cosmic-text, winit), *not* part of the graphics-free daemon/cli build. |
| 6 | # build from the nix dev shell or the `headroom-gui` nix package; both |
| 7 | # supply iced's system libs. |
| 8 | edition = "2021" |
| 9 | license.workspace = true |
| 10 | homepage.workspace = true |
| 11 | repository.workspace = true |
| 12 | authors.workspace = true |
| 13 | |
| 14 | [[bin]] |
| 15 | name = "headroom-gui" |
| 16 | path = "src/main.rs" |
| 17 | |
| 18 | [dependencies] |
| 19 | # internal — same control-plane client/types the ratatui tui uses. |
| 20 | headroom-client = { workspace = true } |
| 21 | headroom-ipc = { workspace = true } |
| 22 | |
| 23 | # iced ui, trimmed feature set on purpose: |
| 24 | # - default-features off drops `linux-theme-detection` (pulls zbus + |
| 25 | # async-process + async-io just to probe the desktop theme — we |
| 26 | # hardcode dark), plus `web-colors` / `crisp` cosmetics. |
| 27 | # - `wgpu` + `tiny-skia` (software fallback) renderers, `wayland` only. |
| 28 | # - `smol` backs the `time::every` timer (no `tokio`); `thread-pool` is |
| 29 | # the subscription executor. |
| 30 | # net: ~199 crates vs gpui-component's ~525 (no av1 encoder, no http stack). |
| 31 | # |
| 32 | # x11 off: add iced's `"x11"` feature here (and the x11 client libs back |
| 33 | # to `guiLibs` in flake.nix) to build the x11 backend. |
| 34 | iced = { version = "0.14", default-features = false, features = [ |
| 35 | "wgpu", |
| 36 | "tiny-skia", |
| 37 | "wayland", |
| 38 | "thread-pool", |
| 39 | "smol", |
| 40 | ] } |
| 41 | |
| 42 | # bridge: reader thread → ui channel. |
| 43 | crossbeam-channel = { workspace = true } |
| 44 | |
| 45 | # json event decoding (mirrors the tui's `apply_event`). |
| 46 | serde_json = { workspace = true } |
| 47 | |
| 48 | # errors / logging. |
| 49 | anyhow = "1.0" |
| 50 | tracing = { workspace = true } |
| 51 | tracing-subscriber = { workspace = true } |