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

2.6 KiB

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=miradaxdg-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-scheme1 oscuro / 2 claro,
  • accent-color(ddd) RGB,
  • contrast1 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.