Files
brahman/docs/changelog/mirada.md
T
sergio 5369c307e4 feat(mirada): mirada-portal — backend de tema org.freedesktop.appearance
Backend de xdg-desktop-portal para carmen: implementa
org.freedesktop.impl.portal.Settings y publica color-scheme,
accent-color y contrast desde el tema activo de nahual. GTK4, Qt6,
Firefox y Chromium voltean claro/oscuro + acento por protocolo, sin
tocar sus configs. Watcher con notify del archivo de nahual-theme →
emite SettingChanged en vivo. 13 tests; smoke verificado sobre un bus
de sesión efímero.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 16:05:27 +00:00

2.0 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-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.