Files
brahman/docs/changelog/mirada.md
T
sergio af3be482a9 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>
2026-05-21 17:41:35 +00:00

55 lines
2.6 KiB
Markdown

# Changelog — mirada
Compositor Wayland del monorepo (nombre de proyecto: carmen). Arquitectura
Cerebro (GPUI) ↔ Cuerpo (smithay) en dos procesos. El historial previo
vive en `git log` (`feat(mirada): …`); este archivo arranca con el
trabajo de escritorio (tema, DM).
### feat(mirada): inyección de entorno de tema a los hijos del compositor
`spawn_command` del compositor inyecta `THEME_ENV` a cada proceso hijo:
- `XDG_CURRENT_DESKTOP=mirada``xdg-desktop-portal` enruta hacia el
backend `mirada-portal`.
- `QT_QPA_PLATFORMTHEME=gtk3` → las apps Qt siguen el tema GTK, y por
tanto el `gtk.css` que genera `nahual-theme`.
Cierra la segunda mitad de la uniformización del tema: portal
(claro/oscuro + acento por protocolo) + `gtk.css` generado por
`nahual-theme::toolkit` + esta inyección → GTK y Qt alineados con el
tema de nahual.
### feat(mirada-portal): backend de tema — org.freedesktop.appearance
App nueva `crates/apps/mirada-portal`: backend de `xdg-desktop-portal`
para carmen. Implementa `org.freedesktop.impl.portal.Settings` y publica
un único namespace, `org.freedesktop.appearance`, con tres claves:
- `color-scheme``1` oscuro / `2` claro,
- `accent-color``(ddd)` RGB,
- `contrast``1` alto / `0` normal.
GTK4/libadwaita, Qt6, Firefox y Chromium leen ese namespace por
protocolo: con el portal activo, todos respetan claro/oscuro + acento del
escritorio **sin tocar sus archivos de config**. Es la primera mitad de
la uniformización del tema (la segunda es inyección de entorno + CSS
generado para la paleta completa).
- **Fuente del tema**: el archivo que persiste `nahual-theme`
(`$XDG_CONFIG_HOME/nahual/theme`). El daemon lo vigila con `notify`;
al cambiar, recomputa y emite `SettingChanged` — las apps voltean en
vivo.
- **`theme_facts.rs`**: tabla pura nombre-de-tema → hechos del portal
(oscuro, acento HSL, contraste) + conversión HSL→RGB. Espeja
`nahual_theme::Theme::all()` sin enlazar GPUI, para que el daemon
quede liviano. Nombre desconocido → `FALLBACK` (oscuro, acento gris).
- **D-Bus**: bus de **sesión**, `org.freedesktop.impl.portal.desktop.
mirada` en `/org/freedesktop/portal/desktop`. Mismo patrón `zbus 4`
que los shims de `compat/`.
- **`data/`**: `mirada.portal` + `mirada-portals.conf` + el `.service`
de activación D-Bus. El frontend genérico `xdg-desktop-portal` enruta
hacia este backend; ver el README del crate.
- 13 tests (`theme_facts` + helpers del protocolo). Smoke verificado
sobre un bus de sesión efímero (`dbus-run-session`): `ReadAll`,
`ReadOne`, `Read` y emisión de `SettingChanged` al cambiar el tema.