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>
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=mirada→xdg-desktop-portalenruta hacia el backendmirada-portal.QT_QPA_PLATFORMTHEME=gtk3→ las apps Qt siguen el tema GTK, y por tanto elgtk.cssque generanahual-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—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.