max / alloy_tui
- Co-Authored-By
- Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 files changed,
+6 insertions,
-39 deletions
| @@ -22,7 +22,6 @@ | |||
| 22 | 22 | - [`docs/COMPONENT-LIBRARY.md`](docs/COMPONENT-LIBRARY.md) — `alloy_ui` crate idioms (functions, builders, HOFs, `impl Widget`) and the design-token pipeline. | |
| 23 | 23 | - [`docs/RESEARCH-IMMEDIATE-MODE-DESIGN.md`](docs/RESEARCH-IMMEDIATE-MODE-DESIGN.md) — late-term research sketch: what does Figma look like for immediate-mode UI? How do designers and engineers collaborate without designers writing Rust? | |
| 24 | 24 | - [`docs/DESIGN-LANGUAGE.md`](docs/DESIGN-LANGUAGE.md) — tinted-greyscale chrome, color reserved for information. | |
| 25 | - | - [`docs/COSMIC.md`](docs/COSMIC.md) — which System76/COSMIC components Alloy adopts, considers, and skips. | |
| 26 | 25 | - [`docs/CONSOLE.md`](docs/CONSOLE.md) — Alloy Console: the ratatui unified control surface (`alloy net`, `alloy audio`, `alloy config <path>` schema-driven editor). Replaces the "graphical settings app" question. | |
| 27 | 26 | - [`docs/CONTINUITY.md`](docs/CONTINUITY.md) — Tailscale and Syncthing as base-image citizens: an Alloy install should be rejoinable, not just installable. | |
| 28 | 27 | - [`docs/SHELL.md`](docs/SHELL.md) — Nushell as the login shell; bash unchanged as `/bin/sh` and `/bin/bash`. Architecture, interop rules, accepted costs. |
| @@ -77,4 +77,4 @@ | |||
| 77 | 77 | ||
| 78 | 78 | ## Scope | |
| 79 | 79 | ||
| 80 | - | Binding for the ratatui surfaces Alloy authors (`alloy_tui`, the console). Adopted apps (sway chrome, swaylock, mako, cosmic-files, helix, yazi, bottom) are themed toward the ramp where their theming permits, and accepted as-is where it does not. Heterogeneity at the seam between authored and adopted is a known trade, called out in [MANIFESTO.md](MANIFESTO.md#what-we-author-vs-what-we-adopt). | |
| 80 | + | Binding for the ratatui surfaces Alloy authors (`alloy_tui`, the console). Adopted apps (sway chrome, swaylock, mako, helix, yazi, bottom) are themed toward the ramp where their theming permits, and accepted as-is where it does not. Heterogeneity at the seam between authored and adopted is a known trade, called out in [MANIFESTO.md](MANIFESTO.md#what-we-author-vs-what-we-adopt). |
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | | TextEdit-equivalent | **Dropped:** the editor is a TUI (helix, then deox). | | |
| 15 | 15 | | Notification daemon | **Adopted: mako.** See [STACK.md](STACK.md#notification-daemon). | | |
| 16 | 16 | | Bar | **Adopted: swaybar** (sway built-in). See [STACK.md](STACK.md#bar). | | |
| 17 | - | | File manager | **Adopted: cosmic-files** (GUI fallback to yazi). See [COSMIC.md](COSMIC.md). | | |
| 17 | + | | File manager | **Adopted: yazi** (TUI, no GUI fallback shipped). See [STACK.md](STACK.md#file-manager). | | |
| 18 | 18 | ||
| 19 | 19 | ## What carried over | |
| 20 | 20 |
| @@ -56,12 +56,11 @@ | |||
| 56 | 56 | ||
| 57 | 57 | ## File manager | |
| 58 | 58 | ||
| 59 | - | - **TUI primary: yazi** (Rust, async, plugin system, sixel/kitty/iTerm image preview). Where keyboard-driven Alloy users will live by default. | |
| 60 | - | - **GUI fallback: cosmic-files** (Rust + iced, by System76). For drag-drop, thumbnail browsing, and the cases TUI can't cover. Accepts libcosmic's visual flavor in those windows as a knowing trade — see [COSMIC.md](COSMIC.md). | |
| 59 | + | **yazi** (Rust, async, plugin system, sixel/kitty/iTerm image preview). TUI-only, no GUI fallback shipped — the pivot's TUI-first line applies here the same way it applied to Rnote. Firefox and other GUI apps that need file dialogs go through xdg-desktop-portal, not a bundled file manager, so the daily case is covered. | |
| 61 | 60 | ||
| 62 | - | No custom egui file manager planned. Scope is too large (file ops, permissions, drag-drop, thumbnails, archives, mounts, trash, search, batch ops, associations) and cosmic-files already does this work in Rust. | |
| 61 | + | No custom egui file manager planned. Scope is too large (file ops, permissions, drag-drop, thumbnails, archives, mounts, trash, search, batch ops, associations) for a marquee-app slot, and the pivot moved off graphical authored surfaces anyway. | |
| 63 | 62 | ||
| 64 | - | Rejected: broot (Rust TUI, useful as a complement but different paradigm), nautilus / dolphin (not Rust). | |
| 63 | + | Rejected: broot (Rust TUI, useful as a complement but different paradigm), nautilus / dolphin (not Rust), cosmic-files (was the pre-pivot GUI fallback; dropped along with the rest of the graphical stack). Users who want a graphical file manager install one themselves — `flatpak install flathub com.system76.CosmicFiles` (or thunar, nautilus) — same posture as ungoogled-chromium. | |
| 65 | 64 | ||
| 66 | 65 | ## Text editor | |
| 67 | 66 | ||
| @@ -285,7 +284,7 @@ | |||
| 285 | 284 | ||
| 286 | 285 | Config at [`etc/skel/.config/gtk-3.0/`](../etc/skel/.config/gtk-3.0/) and [`etc/skel/.config/gtk-4.0/`](../etc/skel/.config/gtk-4.0/) with matching `gtk.css` and `settings.ini` per version. | |
| 287 | 286 | ||
| 288 | - | **What this covers:** any GTK 3 or GTK 4 app that consumes libadwaita's named tokens — swayosd (GTK-rendered overlays), Firefox's system dialogs, cosmic-files if GTK-based, etc. | |
| 287 | + | **What this covers:** any GTK 3 or GTK 4 app that consumes libadwaita's named tokens — swayosd (GTK-rendered overlays), Firefox's system dialogs, xdg-desktop-portal-gtk dialogs, etc. | |
| 289 | 288 | ||
| 290 | 289 | **What this doesn't cover:** | |
| 291 | 290 | - Legacy GTK 3 apps with their own token sets (rare — most have migrated). |
| @@ -1,31 +1,0 @@ | |||
| 1 | - | # COSMIC adoption | |
| 2 | - | ||
| 3 | - | System76's COSMIC desktop is the deepest Rust + Linux investment outside Mozilla. GPLv3, permissively-compatible with Alloy (which authors in ratatui, MIT). Project Alloy pulls on COSMIC's libraries and one app, with deliberate restraint to avoid ceding visual identity. | |
| 4 | - | ||
| 5 | - | Architectural note: libcosmic and iced are reactive, which conflicts with Alloy's non-reactive principle ([MANIFESTO.md](MANIFESTO.md) principle 3) for *authored* apps. Adopted COSMIC components are exempt: they are not our code, they are upstream's. The principle binds what Alloy writes, not what Alloy ships. | |
| 6 | - | ||
| 7 | - | ## Adopted | |
| 8 | - | ||
| 9 | - | - **cosmic-text** — text rendering library (font shaping, layout, BiDi). Pure library, no visual coupling. Dependency-grade adoption. (Reaches Alloy transitively today; a direct dependency only if an authored surface needs shaping beyond what ratatui provides.) | |
| 10 | - | - **cosmic-files** — GUI file manager, named in [STACK.md](STACK.md) as the graphical fallback to yazi. Since the pivot dropped Alloy's authored GUI, this is effectively the one non-session GUI app Alloy ships, and it wears libcosmic's visual flavor as a knowing trade. | |
| 11 | - | ||
| 12 | - | ## Considered, deferred | |
| 13 | - | ||
| 14 | - | - **cosmic-term** — a Rust terminal option to revisit only if the rio decision is reopened. libcosmic-flavored but standalone-runnable. | |
| 15 | - | - **cosmic-edit** — not relevant now: Alloy's editor is a TUI (helix, then deox). No graphical-editor default. | |
| 16 | - | - **cosmic-notifications** — mako is settled as the notification daemon; revisit only if mako proves inadequate. | |
| 17 | - | - **cosmic-screenshot** — skip; grim + slurp is the picked screenshot stack under sway. | |
| 18 | - | - **cosmic-icons** — worth taking only if a graphical surface ever needs a themed icon set; the TUI uses Nerd Font glyphs (see [ICONOGRAPHY.md](ICONOGRAPHY.md)). | |
| 19 | - | - **cosmic-bg** — wallpaper daemon; swww is the pick and works on sway. | |
| 20 | - | ||
| 21 | - | ## Skipped — conflicts with picks or DE-coupled | |
| 22 | - | ||
| 23 | - | - **libcosmic** as an app framework — Alloy authors in ratatui, and libcosmic is reactive anyway. | |
| 24 | - | - **cosmic-panel** — picked swaybar. | |
| 25 | - | - **cosmic-launcher** — no graphical launcher (terminal-driven). | |
| 26 | - | - **cosmic-comp** — picked sway. | |
| 27 | - | - **cosmic-session, cosmic-settings, cosmic-randr, cosmic-workspaces, cosmic-store** — DE-coupled or overlap with the `alloy` console (`alloy update` fronts rpm-ostree, replacing the store; `alloy net`/`display`/`audio` replace the settings surfaces). | |
| 28 | - | ||
| 29 | - | ## Known tension | |
| 30 | - | ||
| 31 | - | Adopting cosmic-files means a libcosmic-flavored window sits alongside an otherwise terminal-native, ramp-themed system. Accepted as a knowing trade: building a Rust GUI file manager is wrong-scope against the value of having a graphical fallback at all, and yazi is the primary anyway. Heterogeneity at the authored/adopted seam is the price, per [MANIFESTO.md](MANIFESTO.md#what-we-author-vs-what-we-adopt). |