Skip to main content

max / alloy_tui

Strip COSMIC adoption from the stack After the sway pivot, COSMIC's actual footprint had collapsed to one app: cosmic-files as a GUI fallback to yazi. Everything else in the old COSMIC.md was already a "considered, not adopted" list. The same TUI-first logic that shelved Rnote applies here — cosmic-files is a libcosmic-flavored window in an otherwise ramp-themed system, and yazi covers the daily case. GUI apps that need file dialogs go through xdg-desktop-portal, not a bundled file manager, so the practical cost is small. - Delete docs/COSMIC.md. - STACK.md#file-manager rewritten: yazi is the shipped default, no GUI fallback; document the flatpak-install path for users who want one (same posture as ungoogled-chromium). - STACK.md GTK-covers list swaps "cosmic-files if GTK-based" for xdg-desktop-portal-gtk dialogs. - DESIGN-LANGUAGE.md adopted-apps roster drops cosmic-files. - MARQUEE-APPS.md file-manager row now points at yazi + STACK.md. - README.md docs index drops the COSMIC.md entry. Remaining cosmic-* names in STACK.md's Rejected lists stay — they still explain why each COSMIC piece wasn't picked and don't depend on the deleted doc.
Co-Authored-By
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-18 14:51 UTC
Signed with PGP, not checked
Commit: cbb8bef165e14e90623c8758b02be3efc97f2701
Parent: 3a9b670
5 files changed, +6 insertions, -39 deletions
M README.md -1
@@ -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
M docs/STACK.md +4 -5
@@ -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).