feat(mirada): mirada-launcher — lanzador de aplicaciones

Un escritorio en «modo launcher» necesita un lanzador. `mirada-launcher`
es una app nueva, sin dependencias: escanea los `.desktop` del estándar
XDG y lanza el que elijas desde una lista de terminal que se filtra
escribiendo.

- Recorre los directorios `applications/` de XDG en orden de prioridad
  (el del usuario tapa a los del sistema, dedup por id de archivo),
  parsea el grupo `[Desktop Entry]` (salta `NoDisplay`/`Hidden`, exige
  `Type=Application`), y limpia los códigos de campo del `Exec`.
- Interfaz de terminal sin raer modo: número = lanzar, texto = filtrar
  (si deja una sola, la lanza), Enter vacío = salir. Las apps con
  `Terminal=true` se envuelven en `foot -e`.
- Pensado para abrirse en una terminal pequeña; al lanzar termina y el
  programa queda corriendo, reparentado a init.

El keymap por defecto ata `Super+p` a `spawn:foot -e mirada-launcher`
(`Super+d` ya era el layout CenteredMaster).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 04:35:23 +00:00
parent 5ede927d34
commit b3b44e2c72
8 changed files with 319 additions and 8 deletions
+4
View File
@@ -147,6 +147,10 @@ que un front-end (`Keybind` → `lookup` → `apply`); hay otros tres:
produce un `BrainCommand::Spawn`; el Cuerpo lo ejecuta con `sh -c`, y
el hijo hereda `WAYLAND_DISPLAY`. `DesktopAction` deja de ser `Copy`
por llevar el comando.
- **Lanzador de aplicaciones** — `mirada-launcher` (app aparte, sin
dependencias): escanea los `.desktop` XDG y lanza el elegido desde una
lista de terminal que se filtra escribiendo. El keymap ata `Super+p` a
`spawn:foot -e mirada-launcher`.
- **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
@@ -231,6 +231,7 @@ pub fn default_keymap() -> Vec<(String, DesktopAction)> {
("Super+o".into(), DesktopAction::FocusOutputNext),
("Super+Return".into(), DesktopAction::PromoteToMaster),
("Super+Shift+Return".into(), DesktopAction::Spawn("foot".into())),
("Super+p".into(), DesktopAction::Spawn("foot -e mirada-launcher".into())),
("Super+,".into(), DesktopAction::IncMaster),
("Super+.".into(), DesktopAction::DecMaster),
("Super+Shift+e".into(), DesktopAction::Quit),