(PaperWM) Gestión de ventanas desplazables en mosaico para Gnome Shell

PaperWM es una extensión experimental de Gnome Shell que proporciona mosaico desplazable de ventanas y áreas de trabajo por monitor. Está inspirado en cuadernos de papel y gestores de ventanas de mosaico.
Compatible con Gnome Shell 3.28, 3.30 y 3.32 en X11 y wayland.
Aunque técnicamente es una extensión , en gran medida está construida sobre el escritorio de Gnome en lugar de simplemente extenderlo.
Salimos en zulip .

Instalación

Clone el repositorio y ejecute el install.shscript desde el directorio. El instalador vinculará el repositorio a $XDG_DATA_HOME/gnome-shell/extensionspaperwm@hedning:matrix.org/donde gnome-shell puede encontrarlo.
./install.sh
La clonación del repositorio directamente $XDG_DATA_HOMEtambién funciona:
git clone ' https://github.com/paperwm/PaperWM.git ' \
     " $ {XDG_DATA_HOME : - $ HOME / .local / share} /gnome-shell/extensions/paperwm@hedning:matrix.org "
Luego puedes habilitar la extensión en Gnome Tweaks, o habilitarla desde la línea de comandos:
gnome-shell-extension-tool -e paperwm @ hedning: matrix.org
Hay algunas configuraciones de Gnome Shell que funcionan mal con PaperWM. Para utilizar la configuración recomendada ejecute set-recommended-gnome-shell-settings.shSe genera un script de "restaurar configuración anterior" para que la configuración original no se pierda.
La ejecución de la extensión instalará automáticamente un archivo de configuración del usuario como se describe en Desarrollo y configuración del usuario .

Uso

La mayoría de las funcionalidades están disponibles usando un mouse, por ejemplo. activando una ventana en el borde del monitor haciendo clic en ella. En wayland es posible navegar con movimientos de 3 dedos en el trackpad. Pero el enfoque principal es crear un entorno que funcione bien con un teclado.
Todas las combinaciones de teclas comienzan con el Supermodificador. En la mayoría de los teclados es la tecla de Windows, en los teclados de Mac es la tecla Comando. Es posible y recomendable modificar la distribución del teclado de modo que Superse cambie para que sea Altmás fácil acceder a todas las combinaciones de teclas. Esto se puede hacer a través de Gnome Tweaks en Keybard & Mouse⟶ Additional Layout Options⟶ Alt/Win key behavior⟶ Left Alt is swapped with Left Win.
La mayoría de las combinaciones de teclas agarrarán el teclado mientras Superse mantiene presionado, solo cambiar de foco cuando Superse suelta. Escapeabortará la navegación y volverá a la ventana activa anterior.
Agregar Ctrla una combinación de teclas llevará la ventana actual con usted cuando navegue.
La gestión de ventanas y la navegación se basan en los tres conceptos siguientes.

Azulejo de ventana desplazable

El mosaico de la ventana con el minimapa mostrado.
Las ventanas nuevas se colocan automáticamente en mosaico a la derecha de la ventana activa, ocupando la mayor altura posible. SuperReturnabrirá una nueva ventana del mismo tipo que la ventana activa.
La activación de una ventana asegurará que sea completamente visible, desplazando el mosaico si es necesario. Al pulsar se Super.activa la ventana a la derecha. Super,Activa la ventana a la izquierda. En un teclado de EE. UU. Estas teclas están marcadas de forma intuitiva por <>también se ordenan de la misma manera en casi todos los diseños de teclado. Se mostrará un minimapa cuando Superse presione continuamente, como se puede ver en la captura de pantalla anterior.
Al presionar SuperIse moverá la ventana a la derecha debajo de la ventana activa, agrupándolas verticalmente en una columna. SuperOhará lo contrario, empujando la ventana inferior fuera de la columna actual.
Al deslizar el trackpad horizontalmente con tres dedos, se desplazará el mosaico (solo disponible en Wayland).
AltTab Por supuesto, también está disponible.
PaperWM no maneja muy bien los cuadros de diálogo modales adjuntos, por lo que es mejor desactivarlo en Gnome Tweaks (en Windows).
Atajos de teclado
Super, o Super.Activar la ventana siguiente o anterior
SuperLeft o SuperRightActivar la ventana a la izquierda o derecha.
SuperUp o SuperDownActivar la ventana arriba o abajo.
SuperHome o SuperEndActivar la primera o la última ventana.
SuperCtrl, o SuperCtrl.Mueve la ventana actual a la izquierda o derecha
SuperCtrlLeft o SuperCtrlRightMueve la ventana actual a la izquierda o derecha
SuperCtrlUp o SuperCtrlDownMueve la ventana actual hacia arriba o hacia abajo
SupertToma la ventana, colocándola cuando haya terminado de navegar.
SuperTab o AltTabRecorre las ventanas usadas más recientemente
SuperShiftTab o AltShiftTabCiclo hacia atrás a través de las ventanas utilizadas más recientemente
SuperCCentrar la ventana activa horizontalmente
SuperRCambiar el tamaño de la ventana (ciclos a través de anchos útiles)
SuperShiftRCambiar el tamaño de la ventana (ciclos de alturas útiles)
SuperFMaximiza el ancho de una ventana
SuperShiftFCambiar a pantalla completa
SuperReturn o SuperNCrear una nueva ventana desde la aplicación activa.
SuperBackspaceCerrar la ventana activa
SuperIAbsorber la ventana a la derecha en la columna activa
SuperOExpulsa la ventana inferior hacia la derecha.

La pila de espacios de trabajo y monitores

La pila de espacios de trabajo utilizada más recientemente.
Presionando SuperAbove_Tabdeslizará el área de trabajo activa hacia abajo, revelando la pila como se muestra en la captura de pantalla anterior. Luego puede hojear los espacios de trabajo usados ​​más recientemente Above_Tabpresionando repetidamente mientras mantiene Superpresionado. Above_Tabes la clave anterior Tab`en un diseño qwerty de EE. UU.). Al igual que alt-tab Shiftse agrega para mover en orden inverso.
El nombre del área de trabajo se muestra en la esquina superior izquierda, reemplazando el Activitiesbotón y agregando algunas mejoras. Desplazarse en el nombre le permitirá navegar por la pila del área de trabajo igual que SuperAbove_TabAl hacer clic con el botón derecho en el nombre, puede acceder y cambiar el nombre del área de trabajo y el color de fondo:
El menú del área de trabajo.
Deslizar el trackpad verticalmente con tres dedos le permite navegar por la pila del área de trabajo (solo disponible en Wayland).
Hay un solo mosaico desplazable por área de trabajo. Agregar otro monitor simplemente hace posible tener otro espacio de trabajo visible. La pila del espacio de trabajo se comparte entre todos los monitores, las ventanas se redimensionan verticalmente según sea necesario cuando el espacio de trabajo se muestra en otro monitor.
PaperWM actualmente funciona mejor usando espacios de trabajo estáticos, esto se puede activar con Gnome Tweaks en Workspaces.
Atajos de teclado
SuperAbove_Tab o SuperPage_DownRecorre los espacios de trabajo utilizados más recientemente.
SuperShiftAbove_Tab o SuperPage_UpCiclo hacia atrás a través de los espacios de trabajo utilizados más recientemente
SuperCtrlAbove_Tab o SuperCtrlPage_DownRecorre la última ventana utilizada, llevándola contigo
SuperCtrlShiftAbove_Tab o SuperCtrlPage_UpRecorre hacia atrás a través del último uso, llevándose la ventana activa con usted

Capa rayada

La capa de scratch flotante, con el menú de pestaña alt abierto
La capa de scratch es una compuerta de escape para un diseño flotante familiar. Esta capa está diseñada para almacenar ventanas que son útiles a nivel mundial como las aplicaciones de chat y, en general, sirven como fregadero de la cocina. Cuando la capa de rayado está activa, flotará sobre las ventanas en mosaico, y cuando esté oculta, las ventanas se minimizarán.
Abrir una ventana cuando la capa de scratch está activa lo hará flotar automáticamente.
Al presionar se SuperEscapealterna entre mostrar y ocultar las ventanas en la capa de inicio. La activación de las ventanas en la capa de inicio se realiza usando SuperTablas ventanas flotantes que tienen prioridad en la lista mientras están activas. <
Al presionar se SuperEscapealterna entre mostrar y ocultar las ventanas en la capa de inicio. Cuando la capa de scratch está activa SuperTabda prioridad a las ventanas flotantes. Cuando el mosaico está activo, SuperShiftTabselecciona la última ventana reutilizada utilizada.
SuperCtrlEscapemoverá una ventana en mosaico a la capa de scratch o alternativamente una ventana ya flotante. También se puede acceder a esta funcionalidad a través del menú contextual de la ventana ( AltSpace).
Atajos de teclado
SuperEscapeAlternar entre mostrar y ocultar la ventana de scratch más reciente
SuperShiftEscapeAlternar entre mostrar y ocultar las ventanas de scratch
SuperCtrlEscapeAlternar entre flotar y colocar en mosaico la ventana actual
SuperTabRecorre las ventanas reutilizables más recientes
SuperHMinimizar la ventana actual

Desarrollo y configuración del usuario.

Se user.jscrea una configuración de usuario predeterminada, ~/.config/paperwm/con tres funciones initenabledisableinitse ejecutará solo una vez en el inicio, enabledisablese ejecutará siempre que se indique a las extensiones que se deshabiliten y habiliten. P.ej. Al bloquear la pantalla con SuperL.
También hicimos un paquete emacs, gnome-shell-mode , para hacer que la piratería en la configuración y las extensiones de escritura sean una experiencia más agradable. Para admitir esto de manera inmediata, también instalamos un metadata.jsonmodo gnome-shell-mode recogerá el contexto de archivo correcto, lo que le proporcionará una evaluación interactiva y completa. Mirando el cristal directamente en emacs.
Al pulsar SuperInsertasignará la ventana activa a una variable global metaWindow, su ventana el actor que actor, a su espacio de trabajo para workspacey su espacio de trabajo de estilo PaperWM a spaceEsto hace que sea fácil inspeccionar el estado y probar cosas.

Winprops

Es posible crear reglas simples para colocar nuevas ventanas. Actualmente es más útil cuando una ventana debe colocarse en la capa de cero automáticamente. Un ejemplo, mejor colocado en la initparte de user.js:
    let Tiling =  Extension . importaciones . suelo de baldosas ;
    Alicatado . defwinprop ({
        wm_class :  " Spotify " ,
        scratch_layer :  verdadero ,
        oneshot :  true 
    });
Se wm_classpuede consultar el estado de una ventana haciendo clic SuperInserty luego verificando el valor de metaWindow.wm_classen emacs o espejo.

Nuevos manejadores de ventanas

Si abrir una nueva ventana de aplicación con SuperReturnno está haciendo exactamente lo que desea, puede crear funciones personalizadas para satisfacer sus necesidades. Supongamos que desea que las nuevas ventanas de Emacs abran el búfer actual de forma predeterminada o que los nuevos terminales hereden el directorio actual:
    dejar que App =  Extension . importaciones . aplicación ;
    App . customHandlers [ ' emacs.desktop ' ] = 
        () =>  imports . misceláneos . util . spawn ([ ' emacsclient ' , ' --eval ' , ' (make-frame) ' ]);
    App . customHandlers [ ' org.gnome.Terminal.desktop ' ] =
        ( metaWindow , app ) =>  app . action_group . activate_action (
           " win.new-terminal " ,
           nuevo  imports.gi.GLib.Variant ( " (ss) " , [ " ventana " , " actual " ]));
El id de la aplicación de una ventana se puede ver de la siguiente manera:
var Shell =  importaciones . gi . Shell ;
Var Tracker =  Shell . Window Tracker . get_default ();
var aplicación =  Tracker . get_window_app (metaWindow);
aplicación . get_id ();
Las acciones de aplicación disponibles se pueden listar así:
aplicación . action_group . list_actions ();

Atajos de teclado

Debido a las limitaciones en la API de enlace de teclas de murmullo, necesitamos robar algunas acciones integradas en Gnome Shell de forma predeterminada. P.ej. la acción incorporada switch-groupcon la SuperAbove_Tabcombinación de teclas predeterminada se anula para recorrer los espacios de trabajo utilizados recientemente. Si una acción anulada tiene varias combinaciones de teclas, desafortunadamente todas activarán la anulación, así que, por ejemplo, porque AltAbove_Tabtambién está vinculada a switch-groupella, se anulará de forma predeterminada. Si quieres evitar esto, por ejemplo. que desee AltTabAltAbove_Tabutilizar el comportamiento incorporado simplemente eliminar los conflictos (es decir. SuperTabSuperAbove_Taby sus Shiftvariantes) de /org/gnome/desktop/wm/keybindings/switch-group(no se reinicia requeridos).

Keybindings definidos por el usuario

Extension.imports.keybindings.bindkey(keystr, name, handler, options)
OpciónValoresSentido
activeInNavigatortrue,falseLa combinación de teclas está activa cuando el minimapa / navegador está abierto
opensMinimaptrue,falseEl minimapa se abrirá cuando se invoque el enlace de teclas
vamos Keybindings =  Extensión . importaciones . combinaciones de teclas ;
Combinaciones de teclas . bindkey ( " <Super> j " , " my-favorite-width " ,
                    ( metaWindow ) => {
                         let f =  metaWindow . get_frame_rect ();
                        metawindow . move_resize_frame ( verdadero , f . x , f . y , 500 , f . h );
                    }
                    {activeInNavigator :  true });
Vea examples/keybindings.jspara más ejemplos.

Extensiones recomendadas

Estas extensiones son buenos complementos para PaperWM:

Trabajo prioritario

Aparentemente, se probó una idea similar hace un tiempo: http://10gui.com/

Comentarios