feat(mirada): keymap configurable en RON, recargable en caliente
Los atajos de teclado dejan de estar cableados: ahora son un Keymap
configurable que vive sólo en el Cerebro. El Cuerpo nunca lo ve — sólo
recibe la lista de cadenas a interceptar (GrabKeys) y devuelve la
pulsada; es Desktop quien la traduce. Esa separación (qué interceptar
vs. qué significa) hace innecesario cualquier candado o Arc.
mirada-brain:
- keymap.rs — Keymap: from_ron/to_ron, load/save, load_or_init (escribe
un archivo por defecto documentado si falta; default sin pisar si está
corrupto), default_path (~/.config/mirada/keymap.ron), y watch sobre
notify para la recarga en caliente (KeymapWatch).
- DesktopAction: Display + FromStr — vocabulario textual estable
("focus-next", "layout:grid", "workspace:3"); evita los guiones que
romperían el RON de un enum.
- Desktop: with_keymap, set_keymap (cambio en caliente -> nuevo GrabKeys).
- Ejemplo keymap-default: imprime el archivo por defecto en RON.
Apps: mirada y mirada-compositor (modo embebido) cargan el keymap del
usuario al arrancar y lo recargan en caliente cuando el archivo cambia.
Disco RON, cable postcard (sólo la lista de cadenas), sin ejecutable
configurador. mirada-brain: 17 -> 29 tests.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -60,10 +60,26 @@ WAYLAND_DISPLAY=wayland-1 foot # o weston-terminal, alacritty, …
|
||||
```
|
||||
|
||||
Las ventanas se teselan solas. El teclado, con la ventana del compositor
|
||||
enfocada, maneja el escritorio con atajos `Super+…` (los que registra el
|
||||
Cerebro: foco `Super+j/k`, layout `Super+Tab`, escritorios `Super+1..9`).
|
||||
enfocada, maneja el escritorio con atajos `Super+…`: foco `Super+j/k`,
|
||||
ciclar layout `Super+space`, escritorios `Super+1..9`, cerrar `Super+q`.
|
||||
Cierra la ventana del compositor para salir.
|
||||
|
||||
## Atajos de teclado
|
||||
|
||||
Los atajos son configurables en RON: `~/.config/mirada/keymap.ron`. En
|
||||
modo autónomo, el Cuerpo lo carga al arrancar (si no existe, escribe uno
|
||||
por defecto documentado) y lo **recarga en caliente** — edita el archivo,
|
||||
guarda, y los atajos cambian sin reiniciar. En modo enlazado el keymap es
|
||||
asunto del Cerebro (la app `mirada`).
|
||||
|
||||
```sh
|
||||
cargo run -p mirada-brain --example keymap-default # ver el formato
|
||||
```
|
||||
|
||||
El compositor en sí no interpreta atajos: sólo intercepta las
|
||||
combinaciones que el Cerebro le pide (`GrabKeys`) y le devuelve la
|
||||
pulsada. *Qué significa* cada una lo decide `mirada-brain`. Ver el SDD.
|
||||
|
||||
## Qué implementa
|
||||
|
||||
`wl_compositor`, `xdg_shell` (toplevels y popups), `wl_shm`, `wl_seat`
|
||||
|
||||
Reference in New Issue
Block a user