feat(theme): exportación a GTK + inyección de entorno en el compositor

Segunda mitad de la uniformización del tema. nahual-theme::toolkit
traduce el Theme activo a gtk-3.0/gtk.css y gtk-4.0/gtk.css con overrides
@define-color (acento exacto + neutro claro/oscuro sintetizado).
Theme::set/install_default exportan best-effort; guarda de no-pisar
respeta un gtk.css ajeno. El compositor inyecta XDG_CURRENT_DESKTOP=mirada
y QT_QPA_PLATFORMTHEME=gtk3 a cada hijo, así GTK y Qt siguen el tema.

8 tests nuevos en toolkit; ejemplo dump-toolkit-css.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 17:41:35 +00:00
parent 5369c307e4
commit af3be482a9
6 changed files with 439 additions and 7 deletions
+21
View File
@@ -2,6 +2,27 @@
Motor GPUI: libs + widgets. Renombrado de `yahweh` el 2026-05-19.
### feat(nahual-theme): exportación del tema a GTK (módulo toolkit)
Módulo nuevo `nahual-theme/src/toolkit.rs`: traduce el `Theme` activo a
`~/.config/gtk-3.0/gtk.css` y `gtk-4.0/gtk.css` con overrides
`@define-color`. Las apps GTK adoptan el acento exacto del tema + un
neutro claro/oscuro coherente. Los fondos en gradiente de nahual no se
pueden reproducir en ventanas GTK sólidas, así que el neutro se sintetiza
con un ramp de luminancia tintado por el matiz del borde del tema.
- `gtk4_css` / `gtk3_css` — generadores puros (nombres de color de
libadwaita y de Adwaita 3 respectivamente).
- `export_toolkit_configs` + `export_toolkit_configs_to(base)`
escritura; el segundo con directorio base explícito para tests.
- **Guarda de no-pisar**: si un `gtk.css` ya existe sin la marca de
nahual, es del usuario y se respeta (`ExportReport.skipped`).
- `Theme::set` y `Theme::install_default` exportan best-effort: cambiar
de tema en cualquier app GPUI actualiza GTK al instante.
- `config_path` refactorizado sobre un nuevo `config_home()`.
- Ejemplo `dump-toolkit-css` para inspeccionar el CSS generado.
- 8 tests nuevos en `toolkit`.
### feat(yahweh-launcher): F3 — extracción del shell standard de explorers
Iter 19. Patrón con 4 consumers idénticos (nakui-explorer,
nouser-explorer, minga-explorer, brahman-broker-explorer) declaraban