18.04 (Gnome) Arbeitsbereiche – Wie kann ich Arbeitsbereiche bearbeiten (z. B. beliebig neu anordnen)?

18.04 (Gnome) Arbeitsbereiche – Wie kann ich Arbeitsbereiche bearbeiten (z. B. beliebig neu anordnen)?

Gnome-Arbeitsbereiche sind sehr praktisch zu verwenden, aber ich finde sie sehr schwierig zu verwalten. Zum Beispiel:

  • Das Schließen des letzten Fensters in einem Arbeitsbereich führt dazu, dass dieser Arbeitsbereich geschlossen wird (wenn nicht sofort, dann bald).
  • Neue Fenster können nur in den stets vorhandenen leeren Arbeitsbereich unten eingefügt werden.
  • Das Verschieben von Arbeitsbereichen würde das individuelle Verschieben jedes Fensters erfordern. Wenn ein Arbeitsbereich während des beabsichtigten Vorgangs leer wird, wird er geschlossen.

Von den Funktionen, von denen ich dachte, sie seien vorhanden, die ich aber nicht finden kann, sind:

  • Möglichkeit, das automatische Schließen von Arbeitsbereichen zu unterdrücken, möglicherweise durch einen Befehl zum Schließen (leeren) von Arbeitsbereichen zu ersetzen.
  • Möglichkeit zum Rotieren von Arbeitsbereichen (sodass der leere Arbeitsbereich überall platziert werden kann)
  • Möglichkeit, jeden Arbeitsbereich mit seinem darunter liegenden Nachbarn zu tauschen

Vielleicht ignoriere ich einfach allgemein bekannte Fakten. Oder vielleicht bietet Gnome eine API zum Programmieren dieses Verhaltens. Oder vielleicht ist es unmöglich.

Bitte informieren.


Nachtrag: Ein paar Tage nachdem ich die Antwort auf diese Frage ausgewählt hatte, fand ich eine relativ einfache API, um die angegebenen Ziele zu erreichen. Diese Informationen werden bereitgestelltuntenals neue Antwort.

Antwort1

Hinweis: Ich beantworte meine eigene Frage-und belasse es dabei bei der akzeptierten Antwort, da diese den Gnome-Status genau wiedergibt.


Es gibt ein ProjektAbonnierendas praktischerweise als verwaltetes Ubuntu 18.04-Paket bereitgestellt wird. Es bietet Lese- und Schreibzugriff auf Desktops, Fenster und deren Beziehungen. (Auch viele andere Funktionen, die ich nicht verwendet habe.)

Mit diesem Paket war es einfach, die gewünschten Funktionen zu codieren. Die direkte CLI ist nicht nützlich, aber durch die Verknüpfung mit benutzerdefinierten Ubuntu-Verknüpfungen konnte ich beispielsweise einzelne Desktops mit Tastenkombinationen nach oben und unten verschieben und auswählen, während ich alle Desktops mit der standardmäßigen Vogelperspektive von Gnome betrachtete.

Die Gnome-Standard-Vogelperspektive erreichen Sie über „Super+a, Super+a“ und anschließendes Bewegen der Maus auf die rechte Seite des Bildschirms, woraufhin alle Desktops in einer vertikalen Anordnung erscheinen.

Um Störungen mit Gnome zu vermeiden, war es notwendig, Gnomesdynamische Desktopsund verwenden Sie diestatische DesktopsEinstellung stattdessen. Verwenden Siestatische Desktopswurde in der ausgewählten Antwort vorgeschlagen.

MeinDer vollständige Code wird als Gist bereitgestellt.

Dieser Codeausschnitt dient beispielsweise zum Austauschen von Desktops:

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
}

Es muss betont werden, dass die Kodierung so einfach war, weil das Projekt so leistungsstark war xdotool. Dieses Projekt ist nicht abhängig vonGnom, sondern operiert parallel zuGnomZugriff auf die gleicheXPrimitive. Es kann wahrscheinlich in einer Reihe verschiedener Fenstermanager verwendet werden, vorausgesetzt, es wird darauf geachtet, gegenseitige Störungen zwischen WM und xdotool zu vermeiden (z. B. Ausschalten dynamischer Desktops in Gnome).

Antwort2

In der GNOME-Shell ist es standardmäßig nicht möglich, ganze Arbeitsbereiche mit den darin enthaltenen Anwendungen zu verschieben. Obwohl dies eine leistungsstarke Funktion wäre, kenne ich keine Linux-Desktopumgebungen, die dies bieten.

In Bezug auf eine API verfügt GNOME Shell über den Mechanismus der Erweiterungen. Dies ist eigentlich überhaupt keine API. Es handelt sich im Wesentlichen um eine „(potenzielle Sicherheits-)Lücke“ im System, in die Entwickler ihren eigenen JavaScript-Code einfügen können, um das Verhalten der Shell zu ändern. Die vielen vorhandenen GNOME Shell-Erweiterungen zeigen, was getan werden kann, in vielen Fällen mit großem Erfolg.

Bezüglich der von Ihnen erwarteten Features stellt sich die Situation wie folgt dar:

Möglichkeit, das automatische Schließen von Arbeitsbereichen zu unterdrücken, möglicherweise durch einen Befehl zum Schließen (leeren) von Arbeitsbereichen zu ersetzen.
Standardmäßig verfügt GNOME Shell über dynamische Arbeitsbereiche. Dies kann jedoch deaktiviert werden, und Sie können eine Anzahl fester Arbeitsbereiche festlegen. Installieren Sie dazu (GNOME) Tweaks und wählen Sie auf der Registerkarte „Arbeitsbereiche“ die Option „Statische Arbeitsbereiche“ aus.wie hier dargestellt.

Möglichkeit zum Rotieren von Arbeitsbereichen (sodass der leere Arbeitsbereich überall platziert werden kann)
Leider gibt es keine Möglichkeit, die Reihenfolge der Arbeitsbereiche (und deren Inhalt) zu ändern. Sie können Anwendungen nur verschieben. Bei statischen Arbeitsbereichen bleibt ein leerer Arbeitsbereich natürlich leer.

Möglichkeit, jeden Arbeitsbereich mit seinem darunter liegenden Nachbarn zu tauschen
Es kommt darauf an, was Sie damit meinen. Wenn Sie damit wieder die Reihenfolge der Arbeitsbereiche ändern möchten, lesen Sie den obigen Punkt. Wenn Sie schnell zwischen Arbeitsbereichen wechseln möchten, können Sie dies ganz einfach mit den Tastenkombinationen Ctrl+ Alt+ Up/ Downoder Super+ PgDn/ erreichen PgUp.

Durch die Umstellung auf statische Arbeitsbereiche haben Sie mehr Kontrolle darüber, was sich wo befindet, mit der Einschränkung, dass Sie nicht ganze Arbeitsbereiche verschieben können.

Einige Tipps zur Verbesserung eines Workflows mit statischen Arbeitsbereichen

  • Sie können dieArbeitsbereichsanzeigeGNOME-Shell-Erweiterung, die einen Indikator für den aktuellen Arbeitsbereich bereitstellt, in dem Sie sich befinden. Die Erweiterung ermöglicht es Ihnen, Ihre Arbeitsbereiche nach Wunsch umzubenennen (z. B. „1 – Durchsuchen“ statt „1“).

  • Sie können Hotkeys konfigurieren, um schnell zu einem bestimmten Arbeitsbereich zu wechseln oder eine Anwendung zu verschieben, zum Beispiel:

    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']"
    

Diese Befehle richten einen Hotkey Super+ ein 4, der Sie sofort zu WS 4 bringt, und einen Hotkey Super+ Shift+ 4, der eine Anwendung zu WS 4 verschiebt (ähnlich wie es im Kachelfenstermanager i3 funktioniert).

Antwort3

Möglichkeit, jeden Arbeitsbereich mit seinem darunter liegenden Nachbarn zu tauschen

Es gibt eine Erweiterung, mit der Sie Arbeitsbereiche neu anordnen können, die mit Gnome 3.38 kompatibel sind:Reorder Workspaces

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

Beachten Sie, dass die Tastenkombinationen nur in der Arbeitsbereichsübersicht funktionieren. Ich habe ein Problem gemeldet, um dies auch in der Fensteransicht zu ermöglichen:https://github.com/jeremiahmegel/gnome-reorder-workspaces/issues/5

verwandte Informationen