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:
@@ -84,10 +84,13 @@ fn print_windows(windows: &[WindowLine]) {
|
||||
}
|
||||
for w in windows {
|
||||
let mark = if w.focused { '*' } else { ' ' };
|
||||
println!(
|
||||
"{mark} id {:<4} esc {} {:<24} {}",
|
||||
w.id, w.workspace, w.app_id, w.title
|
||||
);
|
||||
// El escritorio 0 es el scratchpad (ventana guardada).
|
||||
let ws = if w.workspace == 0 {
|
||||
"scratch".to_string()
|
||||
} else {
|
||||
w.workspace.to_string()
|
||||
};
|
||||
println!("{mark} id {:<4} esc {:<7} {:<24} {}", w.id, ws, w.app_id, w.title);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +125,8 @@ Acciones de mirada-ctl:
|
||||
close-focused cierra la ventana enfocada
|
||||
toggle-float alterna flotante / teselada la enfocada
|
||||
toggle-fullscreen alterna pantalla completa en la enfocada
|
||||
send-to-scratchpad guarda la ventana enfocada en el scratchpad
|
||||
toggle-scratchpad invoca u oculta la ventana del scratchpad
|
||||
cycle-layout pasa al siguiente modo de teselado
|
||||
layout <modo> master-stack · centered-master · spiral
|
||||
grid · columns · rows · monocle
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//! j / k foco siguiente/anterior , / . nmaster −/+
|
||||
//! Shift+j / k mueve la enfocada 1..9 ir a escritorio
|
||||
//! Enter promueve a maestra Ctrl+1..9 enviar a escritorio
|
||||
//! o siguiente monitor
|
||||
//! o siguiente monitor ` / Shift+` scratchpad ver/guardar
|
||||
//! ```
|
||||
//!
|
||||
//! Los pips de escritorio y las ventanas del lienzo son **clicables**, y
|
||||
@@ -301,6 +301,8 @@ impl Mirada {
|
||||
"h" => self.act(DesktopAction::ShrinkMaster),
|
||||
"l" => self.act(DesktopAction::GrowMaster),
|
||||
"o" => self.act(DesktopAction::FocusOutputNext),
|
||||
"`" if shift => self.act(DesktopAction::SendToScratchpad),
|
||||
"`" => self.act(DesktopAction::ToggleScratchpad),
|
||||
"enter" => self.act(DesktopAction::PromoteToMaster),
|
||||
"," => self.act(DesktopAction::IncMaster),
|
||||
"." => self.act(DesktopAction::DecMaster),
|
||||
|
||||
Reference in New Issue
Block a user