Pop Shell ist eine tastaturgesteuerte Ebene für GNOME Shell, die eine schnelle und sinnvolle Navigation und Verwaltung von Fenstern ermöglicht. Die Kernfunktion von Pop Shell ist die Hinzufügung einer erweiterten Kachelfensterverwaltung – eine Funktion, die in unserer Community sehr gefragt ist. Für viele – uns eingeschlossen – ist i3wm zum führenden Konkurrenten des GNOME-Desktops geworden.
Die Verwaltung von Kachelfenstern in GNOME ist praktisch nicht vorhanden, was die Interaktion mit dem Desktop erschwert, wenn Ihre Anforderungen die von zwei Fenstern gleichzeitig überschreiten. Glücklicherweise ist GNOME Shell ein erweiterbarer Desktop mit den Grundlagen, die es ermöglichen, einen Kachel-Fenstermanager auf dem Desktop zu implementieren.
Daher sehen wir hier eine Chance, die Benutzerfreundlichkeit des GNOME-Desktops zu verbessern, um mit Pop Shell besser auf die Bedürfnisse unserer Community einzugehen. Eine erweiterte Kachelfensterverwaltung ist ein Muss für den Desktop. Deshalb haben wir die i3-ähnliche Kachelfensterverwaltung mit dem GNOME-Desktop zusammengeführt, um das Beste aus beiden Welten zu erhalten.
Der Vorschlag: Mögliches Upstreaming in GNOME
Das Problem: Warum wir das in GNOME brauchen
Installation: Für diejenigen, die dies auf ihrer Distribution installieren möchten
Die Lösung:
Gemeinsame Funktionen: Gemeinsame Verhaltensweisen zwischen den Stapel- und automatischen Kachelmodi
Floating-Modus: Spezifische Verhaltensweisen für den Floating-Modus
Kachelmodus: Spezifische Verhaltensweisen für den automatischen Kachelmodus
Entwickler: Leitfaden für den Einstieg in die Entwicklung
Ein Vorschlag zur Integration der Kachelfenster-Verwaltungsfunktionen von Pop Shell in GNOME befindet sich derzeit in der Entwicklung. Es wird als GitLab-Problem auf der GNOME-Shell für zukünftige Diskussionen erstellt, sobald wir unsere Zeit in die Erstellung eines funktionierenden Prototyps investiert und gelernt haben, was in der Praxis funktioniert und was nicht.
Im Idealfall sind die in Pop Shell untersuchten Funktionen für jede Umgebung verfügbar, in der Mutter verwendet wird – was die derzeit vorhandene Kachelfunktion für halbe Monitore erheblich erweitert. Indem es als Shell-Erweiterung beginnt, kann jeder, der die GNOME-Shell verwendet, diese auf seinem System installieren, ohne einen Pop-spezifischen Zweig von GNOME auf seinem System installieren zu müssen.
Warum ist das für uns ein Problem und warum wechseln so viele unserer Benutzer zu i3wm?
GNOME unterstützt derzeit nur die Halbkachelung, bei der ein Fenster auf einer Seite des Bildschirms und ein anderes Fenster auf der anderen Seite des Bildschirms angeordnet wird. Wenn Sie mehr als zwei Fenster haben, sollten Sie diese auf separaten Arbeitsbereichen oder Monitoren platzieren oder mit Alt
+ Tab
zwischen den Fenstern wechseln.
Dies funktioniert in der Regel gut, wenn Sie nur eine kleine Handvoll Anwendungen haben. Wenn Sie mehr als zwei Fenster gleichzeitig auf einem Display benötigen, besteht Ihre einzige Möglichkeit darin, die Fenster manuell an ihre Position zu ziehen und ihre Größe so zu ändern, dass sie nebeneinander passen – ein sehr zeitaufwändiger Prozess, der leicht automatisiert und optimiert werden könnte.
Angenommen, Sie haben Glück – oder vielleicht Pech – Besitzer eines Ultra-Wide-Displays. Bei einem maximierten Fenster sind viele seiner Einstellungen und Steuerelemente in der äußersten linken und äußersten rechten Ecke verteilt. Die Anwendung platziert möglicherweise ein Bedienfeld mit Schaltflächen ganz links, während andere Schaltflächen entweder in die entfernte Mitte oder ganz rechts verschoben werden.
Halbkachelung bedeutet in diesem Szenario, dass jedes Fenster so groß ist wie ein gesamtes 2560x1440- oder 4K-Display. In beiden Fällen wird die Maus bei solch extremen Größen in der Praxis völlig unbrauchbar – und die Verwendung von Anwendungen wird unerträglich.
Während Sie sich mit dem Fenstermanager herumschlagen, wird Ihnen schnell klar, dass jeder Versuch, Fenster auf traditionelle Weise zu verwalten, d. Menschen sind bei der Ausrichtung von Fenstern auf einem Display nicht annähernd so präzise und schnell wie Algorithmen.
Der GNOME-Desktop verfügt über viele nützliche Desktop-Integrationsfunktionen, die beim Wechsel zu einer i3wm-Sitzung verloren gehen. Obwohl es möglich ist, verschiedene GNOME-Sitzungsdienste mit einer i3wm-Sitzung zu verbinden, geht dabei immer noch ein Großteil des GNOME-Desktop-Erlebnisses verloren. Die Anwendungsübersicht, das GNOME-Panel und GNOME-Erweiterungen.
Noch schlimmer ist, dass viele Benutzer mit dem Kacheln von Fenstermanagern überhaupt nicht vertraut sind und sich möglicherweise nicht wohl fühlen, wenn sie auf einen „kalten Entzug“ umsteigen. Indem wir die Verwaltung von Kachelfenstern als Funktion anbieten, die aktiviert werden kann, können wir es dem Benutzer ermöglichen, einfacher eine größere Kontrolle über seinen Desktop zu erlangen, sodass die Idee der Verwaltung von Kachelfenstern plötzlich zugänglich wird.
Darüber hinaus gibt es diejenigen, die die traditionelle Stapelfensterverwaltung wünschen, aber auch die Möglichkeit haben möchten, sich für die erweiterte Kachelfensterverwaltung zu entscheiden. Daher sollte es möglich sein, bei Bedarf die Kachelfensterverwaltung zu aktivieren. Andere Betriebssysteme haben die Funktionen zur Kachelfensterverwaltung erfolgreich mit der traditionellen Stapelfensterverwaltung kombiniert, und wir glauben, dass wir dies auch mit GNOME erreichen können.
Verwenden Sie den Zweig, der Ihrer GNOME-Shell-Version entspricht ( git checkout branch_name
):
GNOME 3.36 bis 41: Verwenden Sie den Zweig master_focal
.
GNOME 42 bis 44: Verwenden Sie den Zweig master_jammy
.
GNOME 45: Verwenden Sie den Zweig master_mantic
.
GNOME 46+: Verwenden Sie den Zweig master_noble
.
Zum Erstellen des Projekts sind außerdem GNU Make und TypeScript erforderlich.
Für die ordnungsgemäße Funktionalität der Shell müssen die Standard-Tastaturkürzel von GNOME geändert werden. Für eine lokale Installation führen Sie make local-install
aus.
Wenn Sie die Erweiterung deinstallieren möchten, können Sie make uninstall
aufrufen und dann das Bedienfeld „Tastaturkürzel“ in den GNOME-Einstellungen öffnen, um die Schaltfläche „Alle zurücksetzen.“ in der Kopfleiste auszuwählen.
Beachten Sie, dass beim Packen für Ihre Linux-Distribution viele Funktionen in Pop Shell nicht sofort funktionieren, da sie Änderungen an den Standard-Tastenkombinationen von GNOME erfordern. Eine lokale Installation ist erforderlich, wenn Sie Ihre GNOME-Sitzung nicht mit nicht festgelegten oder geänderten Standard-Tastaturkürzeln packen.
Fedora: sudo dnf install gnome-shell-extension-pop-shell xprop
Gentoo: emerge gnome-shell-extension-pop-shell
openSUSE Tumbleweed: sudo zypper install gnome-shell-extension-pop-shell
Arch Linux (Verwendung von Yay als AUR-Helfer):
yay -S gnome-shell-extension-pop-shell
Für die vorkompilierte Binärversion: yay -S gnome-shell-extension-pop-shell-bin
Für GitHub-Repository-Version: yay -S gnome-shell-extension-pop-shell-git
Gemeinsame Funktionen für den Stapel- und den automatischen Kachelmodus.
Diese sind der Schlüssel zu vielen Verknüpfungen, die von Kachelfenstermanagern verwendet werden. In diesem Dokument werden diese Schlüssel künftig als <Direction>
bezeichnet, wobei standardmäßig die folgenden Schlüssel verwendet werden:
Left
oder h
Down
oder j
Up
oder k
Right
oder l
Super
+ q
: Fenster schließen
Super
+ m
: Maximiert das fokussierte Fenster
Super
+ ,
: Minimiert das fokussierte Fenster
Super
+ Esc
: Bildschirm sperren
Super
+ f
: Dateien
Super
+ e
: E-Mail
Super
+ b
: Webbrowser
Super
+ t
: Terminal
Dieser Modus wird mit
Super
+Return
aktiviert.
Der Fensterverwaltungsmodus aktiviert eine zusätzliche Tastatursteuerung über die Größe und Position des aktuell fokussierten Fensters. Das Verhalten dieses Modus ändert sich geringfügig, je nachdem, ob Sie sich im automatischen Kachelmodus oder im Standardstapelmodus befinden. Im Standardmodus wird eine an einem Raster ausgerichtete Überlagerung angezeigt, die eine mögliche zukünftige Position und Größe Ihres fokussierten Fensters darstellt. Dieses Verhalten ändert sich geringfügig im automatischen Kachelmodus, wo Größenänderungen sofort durchgeführt werden und Überlagerungen nur beim Austauschen von Fenstern angezeigt werden.
Wenn Sie dies aktivieren, werden folgende Verhaltensweisen aktiviert:
<Direction>
Im Standardmodus wird dadurch die angezeigte Überlagerung basierend auf einem Raster verschoben
Im automatischen Kachelmodus wird dadurch die Größe des Fensters geändert
Shift
+ <Direction>
Im Standardmodus wird dadurch die Größe des Overlays geändert
Im automatischen Kachelmodus hat dies keine Auswirkung
Ctrl
+ <Direction>
Wählt ein Fenster in der angegebenen Richtung der Überlagerung aus
Wenn Return
gedrückt wird, werden die Fensterpositionen vertauscht
Shift
+ Ctrl
+ <Direction>
Im automatischen Kachelmodus ändert sich die Größe in die entgegengesetzte Richtung
O
: Schaltet im automatischen Kachelmodus zwischen horizontaler und vertikaler Kachelung um
~
: Schaltet im automatischen Kachelmodus zwischen schwebend und kachelnd um
Return
: Wendet die angeforderten Änderungen an
Esc
: Verwirft alle angeforderten Änderungen
Wenn Sie sich nicht im Fensterverwaltungsmodus befinden, wird durch Drücken von Super
+ <Direction>
der Fensterfokus auf ein Fenster in der angegebenen Richtung verschoben. Dies wird auf der Grundlage des Abstands zwischen der Mitte der Seite des fokussierten Fensters, von der aus das Fenster verschoben wird, und der gegenüberliegenden Seite der es umgebenden Fenster berechnet.
Wenn Sie den Fokus nach links verschieben, wird von der Mitte der Ostseite des fokussierten Fensters zur Mitte der Westseite aller anderen Fenster gerechnet. Das Fenster mit dem geringsten Abstand ist das Fenster, das wir auswählen.
Pop Shell bietet einen integrierten Launcher, der direkt mit unserem Pop-Launcher-Dienst verbunden ist. JSON IPC wird für die asynchrone Kommunikation zwischen der Shell und dem Launcher verwendet. Diese Funktionalität wurde aufgrund von Leistungs- und Wartbarkeitsproblemen von der Shell getrennt. Der neue Launcher ist in Rust geschrieben und vollständig asynchron. Der Launcher verfügt über umfangreiche Funktionen, die für die Implementierung von Desktop-Launchern über eine Shell-Erweiterung hinaus nützlich wären.
Lücken verbessern die Ästhetik von Fliesenfenstern und erleichtern das Ergreifen der Kante eines bestimmten Fensters. Wir haben beschlossen, Unterstützung für innere und äußere Lücken hinzuzufügen und diese Einstellungen im Popup-Menü der Erweiterung konfigurierbar zu machen.
Bei Fenstern mit serverseitigen Dekorationen sind die Titelleisten möglicherweise vollständig ausgeblendet, was zu mehr Platz auf dem Bildschirm für Ihre Anwendungen und einer optisch aufgeräumteren Umgebung führt. Diese Funktion kann im Popup-Menü der Erweiterung umgeschaltet werden. Fenster können mit der Maus verschoben werden, indem Sie Super
gedrückt halten, während Sie auf ein Fenster klicken und es an eine andere Position ziehen, oder indem Sie die nativen Tastenkombinationen von Pop-Shell verwenden. Fenster können durch Drücken von Super
+ Q
geschlossen und mit Super
+ M
maximiert werden.
Dies ist der Standardmodus von Pop Shell, der die traditionelle Stapelfensterverwaltung mit optionalen Funktionen zur Kachelfensterverwaltung kombiniert.
In diesem Modus werden die Anzeigen in ein Raster aus Spalten und Zeilen aufgeteilt. Beim Aufrufen des Kachelmodus werden Fenster beim Platzieren an diesem Raster ausgerichtet. Die Anzahl der Zeilen und Spalten kann im Popup-Menü der Erweiterung im Panel konfiguriert werden.
Eine optionale Funktion zur Verbesserung Ihres Kachelerlebnisses ist die Möglichkeit, Fenster am Raster auszurichten, wenn Sie sie mit der Maus verschieben und in der Größe ändern. Dies bietet die gleiche Präzision wie das Aufrufen des Fensterverwaltungsmodus zum Positionieren eines Fensters mit Ihrer Tastatur, jedoch mit dem Komfort und der Vertrautheit einer Maus. Diese Funktion kann über das Popup-Menü der Erweiterung aktiviert werden.
Dieser Modus ist standardmäßig deaktiviert und verwaltet Fenster mithilfe eines baumbasierten Kachelfenstermanagers. Ähnlich wie bei i3 repräsentiert jeder Knoten des Baums zwei Zweige. Ein Zweig kann ein Fenster, ein Zweig mit mehreren Zweigen oder ein Stapel mit vielen Fenstern sein. Jeder Zweig stellt einen rechteckigen Raumbereich auf dem Bildschirm dar und kann durch die Erstellung weiterer Zweige innerhalb eines Zweigs unterteilt werden. Wenn Fenster erstellt werden, werden sie dem aktiv fokussierten Fenster oder Stapel zugewiesen, wodurch eine neue Verzweigung auf einem Fenster erstellt oder das Fenster an den fokussierten Stapel angehängt wird. Wenn Fenster zerstört werden, wird das Gegenteil durchgeführt, um den Baum zu komprimieren und die Fenster auf ihre neuen Abmessungen neu anzuordnen.
Super
+ O
Schaltet die Ausrichtung der Kachelausrichtung einer Gabelung um
Super
+ G
Schaltet ein Fenster zwischen schwebend und kachelnd um.
Siehe #Anpassen der Fenster-Float-Liste
Es gibt die Datei $XDG_CONFIG_HOME/pop-shell/config.json
in der Sie die folgende Struktur hinzufügen können:
{ class: "<WM_CLASS String from xprop>", title: "<Optional Window Title>" }
Wenn Sie beispielsweise xprop
in den GNOME-Einstellungen (oder im GNOME-Kontrollzentrum) ausführen, lauten die WM_CLASS-Werte gnome-control-center
und Gnome-control-center
. Verwenden Sie den zweiten Wert (Gnome-Control-Center), den Pop-Shell liest. Das title
ist optional.
Nachdem Sie die Änderungen in config.json
übernommen haben, können Sie die Kachelung neu laden, wenn sie beim ersten Mal nicht funktioniert.
Aufgrund der riskanten Natur von einfachem JavaScript ist diese GNOME-Shell-Erweiterung in TypeScript geschrieben. Neben der Bereitstellung statischer Typprüfung und selbstdokumentierender Klassen und Schnittstellen ermöglicht es uns das Schreiben moderner JavaScript-Syntax und unterstützt gleichzeitig die Generierung von Code für ältere Ziele.
Bitte installieren Sie beim Entwickeln Folgendes als Abhängigkeiten:
Node.js
LTS+ (v12+)
Neueste npm
(wird mit NodeJS geliefert)
npm install typescript@latest
Während Sie an der Shell arbeiten, können Sie die GNOME-Shell mit Protokollierung mit make debug
neu kompilieren, neu konfigurieren, neu installieren und neu starten. Beachten Sie, dass dies nur in X11-Sitzungen zuverlässig funktioniert, da Wayland beim Neustart der Shell zum Anmeldebildschirm zurückkehrt.
Diskussionen willkommen im Pop Chat
Lizenziert unter der GNU General Public License, Version 3.0, (LIZENZ oder https://www.gnu.org/licenses/gpl-3.0.en.html)
Jeder Beitrag, den Sie absichtlich zur Aufnahme in das Werk einreichen, unterliegt der GNU GPLv3-Lizenz.