feat(mirada): scratchpad — ventana desplegable estilo terminal quake

Una ventana se puede guardar en el scratchpad (oculta, en ningún
escritorio) e invocar a voluntad como overlay flotante — el patrón de
la terminal desplegable.

- Desktop.scratchpad: Vec<WindowId>. SendToScratchpad saca la ventana
  enfocada del teselado y la guarda; ToggleScratchpad (Super+`) la
  invoca flotando y centrada en el escritorio activo, o la oculta.
- Invocarla desde otro escritorio la trae consigo (sale de donde
  estuviera). WindowClosed la quita del scratchpad.
- window_lines marca las guardadas como workspace 0; mirada-ctl windows
  las lista como «esc scratch».

Sin cambios de protocolo — una ventana del scratchpad invocada no es
más que una flotante. Verificado end-to-end con headless-ctl.
mirada-brain 58->63 tests.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 01:23:17 +00:00
parent 799dcef22e
commit 13d2ae71fb
8 changed files with 159 additions and 7 deletions
@@ -52,7 +52,8 @@ pub struct WindowLine {
pub id: WindowId,
pub app_id: String,
pub title: String,
/// Escritorio virtual donde está (1-based).
/// Escritorio virtual donde está (1-based); `0` = guardada en el
/// scratchpad, en ningún escritorio.
pub workspace: usize,
/// `true` si es la ventana enfocada del escritorio activo.
pub focused: bool,