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>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 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` — `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.
|
||||
Reference in New Issue
Block a user