Espacios de trabajo 18.04 (gnome): ¿cómo manipular (por ejemplo, reordenar arbitrariamente) espacios de trabajo?

Espacios de trabajo 18.04 (gnome): ¿cómo manipular (por ejemplo, reordenar arbitrariamente) espacios de trabajo?

Los espacios de trabajo de Gnome son muy cómodos de usar, pero los encuentro muy difíciles de administrar. Por ejemplo:

  • Cerrar la última ventana en un espacio de trabajo hace que ese espacio de trabajo se cierre (si no inmediatamente, pronto)
  • Las nuevas ventanas sólo se pueden insertar en el espacio de trabajo vacío siempre presente en la parte inferior.
  • Mover espacios de trabajo requeriría mover cada ventana individualmente, y si un espacio de trabajo queda vacío durante el proceso previsto, se cerrará.

Las características que aunque existo pero que no puedo encontrar son:

  • Capacidad para suprimir el cierre automático de espacios de trabajo, tal vez para reemplazarlo con un comando para cerrar (vaciar) el espacio de trabajo.
  • Capacidad de rotar espacios de trabajo (para que el espacio de trabajo vacío pueda colocarse en cualquier lugar)
  • Posibilidad de intercambiar cualquier espacio de trabajo con su vecino inferior

Quizás simplemente desconozco los hechos comúnmente conocidos. O tal vez Gnome ofrezca una API para programar con este comportamiento. O tal vez sea imposible.

Por favor informa.


Anexo: unos días después de seleccionar la respuesta para esta pregunta, encontré una API relativamente fácil para lograr los objetivos establecidos. Esa información se proporcionaabajocomo una nueva respuesta.

Respuesta1

Nota: Respondiendo a mi propia pregunta-dejando la respuesta aceptada porque refleja con precisión el estado de Gnome.


Hay un proyectoxdotoolque se proporciona convenientemente como paquete administrado Ubuntu 18.04. Ofrece acceso de lectura y escritura a escritorios, ventanas y sus relaciones. (También muchas otras funciones que no utilicé).

Con este paquete fue sencillo codificar las funciones deseadas. La CLI directa no es útil, pero vincularlos a los accesos directos personalizados de Ubuntu significaba que, por ejemplo, podía mover, seleccionar y mover escritorios individuales hacia arriba y hacia abajo con teclas mientras observaba todos los escritorios con la vista aérea estándar de Gnomes.

El ojo de pájaro estándar de Gnome está disponible a través de "Super+a, Super+a" y luego moviendo el mouse hacia el lado derecho de la pantalla, donde todos los escritorios aparecerán en una matriz vertical.

Para evitar interferencias con Gnome, fue necesario desactivar Gnome.escritorios dinámicosy usar elescritorios estáticosconfiguración en su lugar. Usandoescritorios estáticosfue sugerido en la respuesta seleccionada.

MiEl código completo se proporciona como una esencia..

Como ejemplo, este extracto de código es para intercambiar escritorios:

swaprelative(){
    nbr=$1
    ndt=$(xdotool get_num_desktops)
    if [[ $ndt -lt 2 ]] ; then return 0 ; fi
    adt=$(xdotool get_desktop)
    bdt=$((( adt + ndt + nbr) % ndt ))
    if [[ $bdt == $adt ]] ; then return 0; fi
    if [[ $bdt -lt 0 ]] ; then
        echo "relative neighbor value $nbr is out of bounds"
        return 1;
    fi
    xdotool search '.*' | while read w ; do
        if ! window_has_desktop $w ; then continue; fi
        wdt=$(xdotool get_desktop_for_window $w)
        if [[ $wdt -eq $adt ]] ; then
            xdotool set_desktop_for_window $w $bdt
        elif [[ $wdt -eq $bdt ]] ; then
            xdotool set_desktop_for_window $w $adt
        fi
    done
    xdotool set_desktop $bdt
}

Cabe destacar que la codificación fue tan simple debido al poder del xdotoolproyecto. Ese proyecto no depende deGnomo, sino que opera en paralelo conGnomoaccediendo al mismoXprimitivos. Probablemente se pueda utilizar en varios administradores de ventanas diferentes, siempre que se tenga cuidado de evitar interferencias mutuas entre WM y xdotool (por ejemplo, apagar escritorios dinámicos en Gnome).

Respuesta2

En GNOME Shell, de forma predeterminada, uno no puede moverse por espacios de trabajo completos con las aplicaciones que contienen. Si bien esta sería una característica poderosa, no conozco entornos de escritorio Linux que la incluyan.

Con respecto a una API, GNOME Shell tiene el mecanismo de extensiones. En realidad, esto no es una API en absoluto. Es esencialmente un "agujero (potencial de seguridad)" en el sistema donde los desarrolladores pueden inyectar su propio código javascript para cambiar el comportamiento del Shell. Las numerosas extensiones de GNOME Shell que existen ilustran lo que se puede hacer, en muchos casos con gran éxito.

Con respecto a las características que esperas, la situación es la siguiente:

Capacidad para suprimir el cierre automático de espacios de trabajo, tal vez para reemplazarlo con un comando para cerrar (vaciar) el espacio de trabajo.
De forma predeterminada, GNOME Shell viene con espacios de trabajo dinámicos. Sin embargo, esto se puede desactivar y se pueden configurar varios espacios de trabajo fijos. Para lograr esto, instale (GNOME) Tweaks y seleccione "Espacios de trabajo estáticos" en la pestaña "Espacios de trabajo".como se ilustra aquí.

Capacidad de rotar espacios de trabajo (para que el espacio de trabajo vacío pueda colocarse en cualquier lugar)
Lamentablemente, no existe la posibilidad de cambiar el orden de los espacios de trabajo (y su contenido). Sólo puedes mover aplicaciones. Por supuesto, con espacios de trabajo estáticos, un espacio de trabajo vacío permanece vacío.

Posibilidad de intercambiar cualquier espacio de trabajo con su vecino inferior
Depende de lo que quieras decir con esto. Si te refieres nuevamente a cambiar el orden de los espacios de trabajo, consulta el punto anterior. Si te refieres a cambiar rápidamente de espacio de trabajo, esto se logra fácilmente con las teclas de acceso directo Ctrl+ Alt+ Up/ Downo Super+ PgDn/ PgUp.

Cambiar a espacios de trabajo estáticos puede brindarle más control sobre qué está y dónde, con la restricción de que no puede mover espacios de trabajo completos.

Algunos consejos para mejorar un flujo de trabajo con espacios de trabajo estáticos

  • Puedes instalar elIndicador de espacio de trabajoExtensión de GNOME Shell para proporcionar un indicador del espacio de trabajo actual en el que se encuentra. La extensión le permite cambiar el nombre de sus espacios de trabajo si lo desea (por ejemplo, "1 - Navegación" en lugar de "1").

  • Puede configurar teclas de acceso rápido para cambiar rápidamente a un espacio de trabajo específico o mover una aplicación, por ejemplo:

    gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Super>4']"
    gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Super><Shift>4']"
    

Estos comandos configurarán una tecla de acceso rápido Super+ 4que lo lleva inmediatamente a WS 4, y una tecla de acceso rápido Super+ Shift+ 4que mueve una aplicación a WS 4 (muy similar a como funciona en el administrador de ventanas en mosaico i3).

Respuesta3

Posibilidad de intercambiar cualquier espacio de trabajo con su vecino inferior

Existe una extensión que permite reordenar espacios de trabajo compatibles con Gnome 3.38:Reorder Workspaces

https://extensions.gnome.org/extension/3685/reorder-workspaces/

Tenga en cuenta que los atajos solo funcionan en la descripción general del espacio de trabajo. Abrí un problema para hacerlo posible desde la vista de ventana:https://github.com/jeremiahmegel/gnome-reorder-workspaces/issues/5

información relacionada