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>
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-scheme—1oscuro /2claro,accent-color—(ddd)RGB,contrast—1alto /0normal.
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 connotify; al cambiar, recomputa y emiteSettingChanged— las apps voltean en vivo. theme_facts.rs: tabla pura nombre-de-tema → hechos del portal (oscuro, acento HSL, contraste) + conversión HSL→RGB. Espejanahual_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. miradaen/org/freedesktop/portal/desktop. Mismo patrónzbus 4que los shims decompat/. data/:mirada.portal+mirada-portals.conf+ el.servicede activación D-Bus. El frontend genéricoxdg-desktop-portalenruta 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,Ready emisión deSettingChangedal cambiar el tema.