feat(mirada): nmaster, promover a maestra y smart gaps (estilo dwm)
Tanda de funciones de tiling WM, toda pura (mirada-layout/brain), sin tocar el protocolo: - nmaster: LayoutParams.master_count — cuántas ventanas van en el área maestra. MasterStack y CenteredMaster apilan N maestras; sin pila, las maestras llenan la pantalla. Acciones inc-master/dec-master (Super+, Super+.), acotadas 1..9. - Promover a maestra: Workspace::promote_focused lleva la ventana enfocada al puesto 0. Acción promote-to-master (Super+Return). - Smart gaps: una sola ventana se tesela a sangre, sin margen. combo_string del compositor canoniza ahora teclas con nombre (Return, Tab, F5, flechas…) vía xkb::keysym_get_name, no sólo caracteres imprimibles — sin eso Super+Return no sería un atajo expresable. Cableado en keymap por defecto, HUD de mirada y mirada-ctl. Verificado end-to-end con headless-ctl. mirada-layout 26->30, mirada-brain 39->41. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -51,8 +51,10 @@ ejecuta operaciones de geometría".
|
||||
- **`mirada-layout`** — `Rect` + `split` (reparto exacto de píxeles),
|
||||
`LayoutMode` con 7 modos (`MasterStack`, `CenteredMaster`, `Spiral`
|
||||
—espiral de Fibonacci—, `Grid`, `Columns`, `Rows`, `Monocle`) y
|
||||
`LayoutMode::next()` para el ciclo, `Workspace` con foco cíclico y
|
||||
reordenado. Determinista.
|
||||
`LayoutMode::next()` para el ciclo, `Workspace` con foco cíclico,
|
||||
reordenado y `promote_focused`. `LayoutParams` lleva `master_ratio` y
|
||||
`master_count` (`nmaster`); *smart gaps* (una sola ventana va a
|
||||
sangre). Determinista.
|
||||
- **`mirada-protocol`** — `WindowPlacement`, los enums `BrainCommand` y
|
||||
`BodyEvent`, el marco `postcard` con prefijo `u32` LE
|
||||
(`write_frame`/`read_frame`, guard `MAX_FRAME`) y el puente
|
||||
@@ -111,10 +113,12 @@ que un front-end (`Keybind` → `lookup` → `apply`); hay otros tres:
|
||||
- **`DesktopAction::FocusWindow(WindowId)`** — direccionamiento directo de
|
||||
una ventana (no sólo ciclar con `FocusNext`/`Prev`); si está en otro
|
||||
escritorio, salta a él. Lo usan la taskbar y `mirada-ctl`.
|
||||
- **`SetLayout`/`CycleLayout`/`GrowMaster`/`ShrinkMaster`** — los 7 modos
|
||||
de teselado se intercambian por el API (`mirada-ctl layout spiral`), y
|
||||
el área maestra se redimensiona en caliente (`grow`/`shrink-master`,
|
||||
atajos `Super+l`/`Super+h`).
|
||||
- **Layout y área maestra por el API** — los 7 modos se intercambian
|
||||
(`SetLayout`/`CycleLayout`, `mirada-ctl layout spiral`); el área
|
||||
maestra se redimensiona (`grow`/`shrink-master`, `Super+l`/`Super+h`);
|
||||
`inc`/`dec-master` cambian `nmaster` (`Super+,`/`Super+.`); y
|
||||
`promote-to-master` lleva la enfocada al puesto maestro (`Super+Return`
|
||||
— `combo_string` ya canoniza teclas con nombre: `Return`, `Tab`, `F5`…).
|
||||
- **HUD interactivo** (app `mirada`) — los pips de escritorio y las
|
||||
ventanas del lienzo son clicables: clic = `apply` de la acción.
|
||||
- **`mirada-ctl`** — control externo por línea de comandos
|
||||
@@ -136,8 +140,8 @@ gráficos para ejercitar `mirada-ctl` en modo desatendido.
|
||||
|
||||
## Estado
|
||||
|
||||
Implementado y verde: `mirada-layout` (26 tests), `mirada-protocol`
|
||||
(9), `mirada-brain` (39), `mirada-link` (7), `mirada-body` (13), las
|
||||
Implementado y verde: `mirada-layout` (30 tests), `mirada-protocol`
|
||||
(9), `mirada-brain` (41), `mirada-link` (7), `mirada-body` (13), las
|
||||
apps `mirada` y `mirada-compositor` (compilan; verificación visual
|
||||
manual) y `mirada-ctl` (CLI, probado vía el ejemplo `headless-ctl`).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user