Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen

24. April 2014

GNOME: Shell-Extension "Hide App Icon"

In dem Post "Anwendungs-Icon in Panel ausblenden" in diesem Blog, wurde bereits erläutert, wie die Anzeige des Icons der aktuell fokussierten Anwendung in der GNOME-Shell unterbunden werden kann. Die vorgestellte Methode erforderte jedoch das manuelle Editieren einer CSS-Datei, die das Aussehen der Shell bestimmt. Eine einfachere Möglichkeit, die Anzeige des entsprechenden Icons zu unterbinden, bietet nun die Gnome Shell Extension "Hide App Icon", die ich zu diesem Zweck umgesetzt habe.

Vergleich der Standard-Ansicht des Top Panels der GNOME-Shell mit der veränderten Ansicht durch die Shell-Erweiterung "Hide App Icon" (Klicken zum Vergrößern)

Die Shell-Erweiterung ist auf Sourceforge unter diesem Link verfügbar.Auf dieser Seite kann sowohl der Source-Code eingesehen werden, als auch die jeweils aktuelle Version heruntergeladen werden. Um die Erweiterung zu installieren ist es lediglich notwendig den, in dem zip-Archiv enthaltenen, Ordner in das Verzeichnis ~/.local/share/gnome-shell/extensions/ zu kopieren und die Erweiterung anschließend über eine entsprechende Anwendung, wie beispielsweise über das "Gnome Tweak Tool" zu aktivieren.

Ziel ist es, dass die vorgestellte Gnome Shell Extension zukünftig auch über die Seite extensions.gnome.org bezogen werden kann, auf der alle, von dem GNOME-Projekt akzeptierten, offiziellen Extension angeboten werden. Die entsprechende Überprüfung des Quellcodes durch die Betreiber dieser Seite steht allerdings noch aus.

Anmerkung vom 24.04.2014 - 19:44 Uhr: Die Shell-Erweiterung wurde mittlerweile von den Autoren der Seite extensions.gnome.org zugelassen und steht auf dieser Seite unter diesem Direktlink zur Verfügung.

Weiterführende Links:

16. April 2014

GNOME: Anwendungs-Icon in Panel ausblenden

Heute habe ich die GNOME-Desktopumgebung auf meinem System auf die momentan aktuelle Version 3.12 aktualisiert und wie bei jeder dieser Aktualisierungen, nach denen sich die GNOME Shell jeweils in ihrem Standard-Look präsentiert, fielen mir einmal mehr auf, wie viele Anpassungen ich an der Benutzeroberfläche vorgenommen hab, um sie auf meine Vorlieben abzustimmen. Während der Großteil dieser Anpassungen bereits Teil der Artikel-Serie "Der Weg zu "meinem" GNOME" in diesem Blog war, wurde eine Anpassung, die ich jedoch sehr prägnant finde, bisher nicht angesprochen. Dabei handelt es sich um das Ausblenden des Icons der aktuell fokussierten Anwendung im Top-Panel. Die folgenden Screenshots verdeutlichen diese Änderung.

Das Top-Panel der GNOME-Shell mit und ohne Anzeige eines Anwendungs-Icons

Um das Ausblenden des Anwendungs-Icons zu erreichen, ist eine Anpassung der Datei /usr/share/gnome-shell/theme/gnome-shell.css mit Root-Rechten notwendig.  Hierzu kann sie beispielsweise über den folgenden Konsolenbefehl mittels des Editors "nano" geöffnet werden:
 # nano /usr/share/gnome-shell/gnome-shell.css  
Innerhalb dieser Datei gilt es nun die folgende Stelle zu finden (in dem Editor "nano" ist die Suchfunktion über den Shortcut Strg + W zu erreichen):
 .panel-button #appMenuIcon {  
   app-icon-bottom-clip: 1px;  
 }  
Der oben dargestellte Ausschnitt der Datei muss nun um zwei zusätzliche Zeilen erweitert werden, so dass das Ergebnis wie folgt aussieht:
 .panel-button #appMenuIcon {  
   app-icon-bottom-clip: 1px;  
   width: 0px;  
   height: 0px;  
 }  
Außerdem ist noch eine weitere Anpassung an einer anderen Stelle der Datei notwendig, wofür zunächst die im Folgenden dargestellte Stelle aufzufinden ist:
 .app-menu-icon {  
   width: 24px;  
   height: 24px;  
 }  
Die innerhalb dieses CSS-Blocks angegebenen Werte für die Breite und Höhe des Anwendungs-Icons müssen jeweils auf den Wert 0px gesetzt werden, wodurch sich ein geänderter CSS-Code ergibt, der dem folgenden Ausschnitt gleicht:
 .app-menu-icon {  
   width: 0px;  
   height: 0px;  
 }  
Nach dem Speichern der Datei (in "nano" über die Tastenkombination Strg + O) muss die GNOME-Shell neugestartet werden, damit die Änderungen sichtbar werden. Hierzu öffnet man zunächst über die Tastenkombination Alt + 2 einen Dialog, in den man dann den Befehl "r" (ohne Anführungszeichen) eingibt und die Eingabe mit Enter bestätigt.

Anmerkung vom 24. April 2014: In diesem Artikel dieses Blogs wird ab sofort eine Gnome Shell Extension vorgestellt, die das Ausblenden der Anwendungs-Icons, wie es in diesem Artikel beschrieben wurde, automatisiert.

7. November 2013

Linux: Datei in Terminal rekursiv nach ihrem Namen finden

Im Folgenden soll ein kurzer Tipp vorgestellt werden, der die alltägliche Arbeit im dem Terminal unter Linux erleichtern kann. Es geht dabei darum, wie ein Ordner und seine Unterordner über einen einfachen Befehl nach einer Datei durchsucht werden kann, wenn deren Name oder Teile von diesem bekannt sind.

Der folgende Befehl durchsucht alle Unterordner des aktuellen Verzeichnisses nach einer Datei mit dem Namen "test.txt":
 $ find . -name "test.txt"  
Um die Suche in einem anderen Wurzelverzeichnis zu starten, kann folgendermaßen ein entsprechender Pfad angegeben werden:
 $ find /home/user -name "test.txt"  
Wenn nur Teile des Dateinamens der gesuchten Datei bekannt sind oder mehrere Dateien gefunden werden sollen, deren Dateinamen ähnlich sind, kann dies durch Setzen des Zeichens * erreicht werden. Durch Verwendung des *-Zeichens werden alle Dateien in das Suchergebnis einbezogen, deren Dateiname an der Stelle, an der das Zeichen steht, beliebige Zeichen enthält. Der folgende Befehl wird beispielsweise alle Dateien als Ergebnis zurückliefern, die mit der Dateiendung ".txt" enden:
 $ find . -name "*.txt"  
Für die Angabe des gesuchten Dateinamens können desweiteren beliebige reguläre Ausdrücke verwendet werden. Es existieren außerdem weitere alternative Parameter zu "-name", die es beispielsweise erlauben, nach Dateien mit einer bestimmten Größe zu suchen. Eine ausführlichere Anleitung zu der Verwendung des find-Befehls findet sich unter dieser Adresse.

Beispielhafte Verwendung des find-Befehls in einem Linux-Terminal (Klicken zum Vergrößern)

Weiterführende Links:

2. Oktober 2013

Linux: Backup einer Festplatte erstellen mit dd

Um unter Linux ein Backup einer Festplatte zu erstellen bietet sich der Befehl dd (Abk. für Diskdump) an. Das Programm erstellt eine 1:1-Kopie der kompletten Festplatte indem es diese Byte für Byte in eine Image-Datei kopiert.

Erstellen eines Festplatten-Backups


Um eine Festplatte mittels dd zu spiegeln darf diese nicht in das Dateisystem eingehängt sein. Es ist also nicht möglich von einem System aus diejenige Festplatte zu sichern auf der das Linux-Betriebssystem installiert ist. Für einen solchen Fall kann das Backup etwa von einer Live-CD ausgeführt werden. Die Festplatte auf der das Backup-Image erstellt werden soll muss dagegen mit Schreibrechten eingehängt sein und über mindestens so viel Speicherplatz verfügen wie die zu sichernde Platte. Um alle vorhandenen Festplatten und Partitionen anzuzeigen ist der folgende Befehl nützlich, der mit Root-Rechten ausgeführt werden muss:
 # fdisk -l  
Um stattdessen nur diejenigen Partitionen anzuzeigen, die momentan in das Dateisystem eingehängt sind, kann der folgende Befehl genutzt werden:
 $ mount -l  
Falls Partitionen der Festplatte, die gesichert werden soll, noch gemountet sind, lassen sich diese über den folgenden Befehl aushängen. Die Bezeichnung /dev/sdb1 ist dabei durch die tatsächliche Bezeichnung der Partition zu ersetzen.
 # umount /dev/sdb1  
Um die Festplatte, auf der das Backup gespeichert werden soll, einzuhängen kann der folgende Befehl genutzt werden. Bei /dev/sdc1 handelt es sich dabei um die Bezeichnung der Partition, die gemountet werden soll, /media/sdc1 definiert das Verzeichnis unter dem die Partition eingehängt werden soll.
 # mount -t ext3 /dev/sdc1 /media/sdc1  
Nähere Informationen über das Mounten, bzw. Unmounten von Partitionen unter Linux finden sich unter diesem Link.

Beispielhafte Ausgabe des Befehls fdsisk -l (Klicken zum Vergrößern) 

Erstellen eines unkomprimierten Backups


Nachdem die Bezeichnungen der zu sichernden Festplatte und der Partition, auf der das Backup-Image erstellt werden soll, identifiziert wurde und sichergestellt ist, dass die betroffenen Partitionen wie bereits beschrieben aus-, bzw. eingehängt sind, kann ein unkomprimiertes Backup über den folgenden Konsolenbefehl erstellt werden:
 # dd if=/dev/sdb of=/media/sdc1/backup.img bs=4M  
Der Parameter if gibt die Festplatte an, die gesichert werden soll, of bezeichnet die Partition auf die die Sicherung kopiert werden soll und bs legt fest, wie groß die Blöcke sein sollen, die auf einmal kopiert werden. Dieser Wert bestimmt die Geschwindigkeit des Kopiervorgangs, wobei ausprobiert werden sollte, mit welchem Wert die Sicherung am schnellsten abläuft. Der Backup-Vorgang dauert je nach Festplattengröße eine bestimmte Zeit, während der es so scheint, als würde das Programm nicht mehr reagieren.


Erstellen eines komprimierten Backups


Um das Backup zusätzlich mittels gzip zu komprimieren kann der folgende Befehl genutzt werden:
 # dd if=/dev/sdb bs=4M | gzip > /media/sdc1/backup.img.gz  
Somit kann der Speicherplatz, den das Backup benötigt, verringert werden, was jedoch zu einer zeitaufwändigeren Erstellung führt.

Wiederherstellen eines Backups


Ein unkomprimiertes Backup lässt sich über den folgenden Befehl wiederherstellen. Die Partition auf der sich die Sicherung befindet muss hierfür gemountet sein (in diesem Beispiel unter /media/sdc1), während die Festplatte auf die das Backup zurückgespielt werden soll (hier /dev/sdb) ausgehängt sein muss.
 # dd if=/media/sdc1/backup.img of=/dev/sdb bs=4M  
Um stattdessen ein Backup wiederherzustellen, das wie oben beschrieben komprimiert wurde, kann der folgende Befehl genutzt werden:
 # gunzip -c /media/sdc1/backup.img.gz | dd of=/dev/sdb bs=4M  

Weiterführende Links:

16. September 2013

Arch Linux: Der Weg zu "meinem" GNOME - Fazit (Teil 7)

Abschließend zu dieser Serie, in der ich einige Anpassungen vorgestellt habe, die ich an meiner GNOME-Shell unter Arch Linux vorgenommen habe, möchte ich nun in diesem letzten Artikel ein persönliches Fazit zu GNOME 3 ziehen.

Als GNOME in der Version 3.0 erschienen ist, habe ich mir die Desktopumgebung bereits angeschaut, jedoch ziemlich schnell beschlossen, dass sie mir überhaupt nicht gefällt. Im Zuge meines Umstiegs auf Arch Linux, über den ich auch in diesem Blog berichtet habe, habe ich es allerdings erneut gewagt einen Blick auf die aktuelle GNOME-Shell zu werfen, da ich mit der Entwicklung von Canonical's Unity-Oberfläche, die ich zuvor unter Ubuntu genutzt habe, nicht mehr zufrieden war. Und wider Erwarten hat das aktelle GNOME einen deutlich besseren Eindruck bei mir hinterlassen, als ich ihn in Erinnerung hatte. Ich kann nicht genau sagen, was sich seitdem geändert hat, jedoch muss die Desktopumgebung einen deutlich gereifteren Eindruck gemacht haben und somit mir für den täglichen Gebrauch als besser geeignet erschienen sein. Zwar gibt es eine ganze Reihe von Designentscheidungen, die ich für falsch halte, jedoch bietet die Anpassbarkeit über Gnome Shell Extensions eine Möglichkeit diese auszugleichen.

Das Erscheinungsbild


Mein erster Gedanke, wenn ich die Standard-GNOME-Shell sehe, ist, dass mir das Standard-Thema überhaupt nicht gefällt, weil die Titelleisten von Fenstern meiner Meinung nach ziemlich hässlich aussehen und viel zu groß sind. Überhaupt scheinen die Entwickler an unnötigen Stellen an Platz zu sparen um ihn stattdessen an anderen Stellen regelrecht zu verschwenden. So kann ich die Entscheidung nicht nachvollziehen, warum standardmäßig nur noch die Schließen-Schaltfläche in der Titelleiste von Fenstern angezeigt wird, wo doch dort genug Raum für alle drei herkömmlichen Schaltflächen wäre, während die Aktivitäten-Schaltfläche im Top-Panel dauerhaft angezeigt wird, obwohl der Benutzer bereits nach einer sehr kurzen Eingewöhnungsphase weiß, wie man das Aktivitäten-Menü erreicht und welche Funktion es besitzt. Glücklicherweise lässt sich das Fenster-Thema sehr leicht anpassen und auch die Fenster-Schaltflächen lassen sich auf den gewohnten Zustand zurück versetzen. Und für andere Anpassungen, wie etwa dem Ausblenden der Aktivitäten-Schaltfläche, gibt es, wie bereits erwähnt, zahlreiche Shell-Erweiterungen.

Das Benachrichtigungssystem


Über das neue Benachrichtigungssytem kann man sich sicherlich streiten. Die Entwicklung auch bei anderen Desktopumgebungen, wie z.B. Unity, geht weg von einem System-Tray, hin zu einem alternativen System, wie der Benachrichtungsleiste von GNOME. Ich bin ebenfalls der Meinung, dass ein System-Tray, in dem jedes Programm seine Benachrichtigungen und Icons ablegen darf, nicht mehr zeitgemäß ist, weil es schnell überfüllt ist. Jedoch möchte ich mir die Möglichkeit offen halten, wenige ausgewählte Programm dort stets zugänglich anzuzeigen. Die Tray-Icons übriger Anwendungen kann man in deren Einstellungen üblicherweise deaktivieren. Um dieses Verhalten zu erreichen gibt es ebenfalls einen relativ einfachen Weg, der in dieser Serie von Artikeln vorgestellt wurde.

Das Aktivitäten-Menü


Ansonsten machte die GNOME-Shell bei mir einen sehr stabilen Eindruck und läuft stets flüssig. Auch die  von vielen geäußerte Kritik über das Fehlen einer Übersicht der aktuell geöffneten Programme, kann ich nicht teilen, da dies durch das Aktivitäten-Menü meiner Meinung nach ausreichend abbildet wird. Abgesehen davon lässt sich diese fehlende Funktion ebenfalls über eine Shell-Erweiterung in Form einer Task-Leiste nachrüsten. Ich würde mir lediglich wünschen, dass zwischen den Programmen, die in der Aktivitäten-Übersicht angezeigt werden, mit der Tastatur umgeschalten werden kann. Überhaupt gefällt mir das Konzept des Aktivitäten-Menüs sehr gut und beispielsweise besser als das des Dashboards in Unity, welches ich nur sehr ungern benutzt habe. Es bietet eine Übersicht über alle geöffneten Programme, die aktuellen Workspaces und erlaubt es, die meist genutzten Programme zu starten, womit es für mich alle Funktionen abdeckt, die ich von einer solchen Funktion erwarte. Insbesondere die Suche funktioniert sehr zuverlässig und schnell und im Vergleich mit Unity muss lobenswert erwähnt werden, dass dort glücklicherweise auf die Einbeziehung von zweifelhaften Online-Suchergebnissen verzichtet wird. Als weitere Verbesserung des Aktivitäten-Menüs könnte darüber nachgedacht werden, ob das Dock, über das die favorisierten Programme gestartet werden können, nicht auch durch eine Bewegung der Maus an den linken Bildschirmrand angezeigt werden können soll. Dies ist ebenfalls über eine Erweiterung namens "Dash to Dock" möglich, die es darüber hinaus auch erlaubt, die aktuell geöffneten Programm ebenfalls anzuzeigen. Damit würde das Dock der Sidebar von Unity ähneln und den Kritikern, die das Fehlen einer Task-Leiste bemängeln, könnte der Wind aus den Segeln genommen werden.

Globale Titelleisten


Was mir ebenfalls sehr bald negativ auffiel war, dass die Titelleisten der meisten Programm unnötig Platz wegnehmen, wenn sie maximiert sind. Meiner Meinung bietet es sich bei einer Desktopumgebung, die über ein Top-Panel verfügt, an, dass die Fenster-Schaltflächen und der Fenstertitel von maximierten Programmen in eben diesem Panel angezeigt wird, was, insbesonders bei den heute üblichen breitformatigen Monitoren, wertvollen vertikalen Platz einsparen würde. Ich halte die Wahrscheinlichkeit, dass ein solches Verhalten Einzug in kommende Versionen von GNOME finden wird, jedoch für ziemlich gering, da der Top-Leiste von Seiten der Entwickler, durch das Anzeigen der Aktivitäten-Schaltfläche und der Uhrzeit in der Mitte des Panels, eine andere Funktion eingeräumt wurde. In einem Artikel dieser Serie habe ich eine Möglichkeit vorgestellt, wie eine solche Nutzung des Top-Panels als globale Titelleiste, erreicht werden kann. Dieses Vorgehen besitzt jedoch, wie ich zugeben muss, deutliche Nachteile bei der Verwendung mit mehreren Monitoren, da die Titelleisten von Fenstern, die sich nicht auf dem primären Monitor befinden, ebenfalls ausgeblendet werden und diese deshalb nur über die Schaltflächen im Panel, das sich auf einem anderen Monitor befindet, geschlossen werden können. Falls ich eine Möglichkeit finden sollte, wie dieses Problem behoben werden kann, werde ich einen dementsprechenden Artikel auf diesem Blog veröffentlichen.

Fazit


Als letztendliches Fazit über GNOME 3 kann gesagt werden, dass ich wohl bei dieser Desktopumgebung bleiben werde. Man bekommt eine moderne, performante Shell angeboten, die über eine Vielzahl von verfügbaren Shell-Erweiterungen an die eigenen Wünsche angepasst werden kann. Diese Möglichkeit ist für mich der Punkt, weshalb sich die GNOME-Shell, trotz weitreichender Kritik, relativ großer Beliebtheit erfreut. Der Ehrlichkeit wegen muss ich jedoch zugeben, dass ich GNOME nicht nutzen würde, wenn diese Möglichkeit nicht bestehen würde.

Als Abschluss dieser Artikelserie über die Veränderungen, die ich an meiner GNOME-Shell vorgenommen habe, sind im Folgenden noch einige Screenshots als Impressionen zu sehen.

Der Desktop meiner GNOME-Shell (Klicken zum Vergrößern)

Das Dock meiner GNOME-Shell (Klicken zum Vergrößern)

Das Aktivitäten-Menü meiner GNOME-Shell (Klicken zum Vergrößern)

Darstellung der Titelleiste eines maximierten Fensters im Top-Panel (Klicken zum Vergrößern)

Arch Linux: Der Weg zu "meinem" GNOME - Benutzerdefinierte Tray-Icons (Teil 6)

Seit GNOME 3 werden von der Desktopumgebung keine Programm-Icons mehr im Top-Panel erlaubt, stattdessen wurde ein alternatives Benachrichtungssystem implementiert, das vorsieht, dass Benachrichtigungen von Programmen in einer speziell dafür geschaffenen Benachrichtungsleiste am unteren Bildschirmrand angezeigt wird. Hinweise über vorliegende Benachrichtigungen in dieser Leiste werden im Aktivitäten-Menü und auf dem Sperrbildschirm angezeigt und die Leiste selbst wird sichtbar, indem man den Mauszeiger an den unteren Bildschirmrand bewegt. Im Top-Panel werden dagegen nur noch wenige ausgewählte Icons angezeigt, wie z.B. diejenigen zum aktuellen Netzwerkstatus, der Lautstärken-Kontrolle oder dem Akku-Zustand.

Die Benachrichtigungsleiste von GNOME 3 (Klicken zum Vergrößern)

Mir persönlich gefällt dieses Verhalten nicht, da ich stattdessen lieber diejenigen wenigen Programme, die dauerhaft im Hintergrund laufen und von denen ich regelmäßig Benachrichtigungen erwarte, über ein Tray-Icon im Top-Panel zur Verfügung habe und auch dort gerne sofort sichtbar über vorliegende Benachrichtigungen informiert werde. Aus diesem Grund sollen in diesem sechsten Artikel der Serie über die Veränderungen, die ich unter der GNOME-Shell meines Arch Linux-Systems vorgenommen habe, gezeigt werden, wie man die Benachrichtungsleiste von GNOME 3 deaktivieren kann und stattdessen die Tray-Icons ausgewählter Programme dauerhaft im Top-Panel anzeigen lassen kann. Zu diesen, im Folgenden angesprochenen Programmen, die automatisch beim Systemstart im Hintergrund gestartet werden sollen und in dem Top-Panel als Icon verfügbar sein sollen, gehören der Media Player "Banshee", der Mail-Client "Thunderbird", der Instant Messenger "Pidgin" und der Cloud-Speicher-Client "Dropbox".  Die PopUp-Benachrichtigungen, die von allen Programmen ausgegeben werden können, sollen von den vorgenommenen Änderungen nicht unterbunden werden. 

Tray-Icons im Top-Panel erlauben


Um trotz des Paradigmenwechsels, der mit GNOME 3 Einzug fand, Tray-Icons im Top-Panel zu erlauben, existieren verschiedene GNOME Shell Extensions. Ich habe mich für die Extension "TopIcons" entschieden, die bereits in dem vergangenen Artikel, über die von mir verwendeten Shell-Erweiterungen, erwähnt wurde. Sie ist über diesen Link verfügbar und kann bei installiertem "Gnome Shell Integration"-PlugIn direkt aus dem Browser heraus aktiviert werden. Die Erweiterung verfügt über keinerlei Einstellungsmöglichkeiten und sorgt dafür, dass die Tray-Icons aller Anwendungen, die eine solche Funktionalität mit sich bringen, im Top-Panel angezeigt werden.

Dropbox


Der Client für den Cloud-Speicher-Service "Dropbox", der es ermöglicht, die Dateien innerhalb eines lokalen Ordners auf dem System autmatisch mit den Daten in der Cloud zu snychronisieren, ist über das AUR verfügbar. Laut der Installationsanleitung in diesem Artikel des Arch-Wikis soll neben dem Paket dropbox auch nautilus-dropbox installiert werden um eine bessere Integration in den GNOME-Dateimanager "Nautilus" zu erreichen. Die beiden Pakete können mittels des Kommandozeilentools "yaourt" über den folgenden Befehl installiert werden.
 $ yaourt -S dropbox nautilus-dropbox  
Wenn das Paket nautilus-dropbox ebenfalls installiert wurde, sollte ein neuer Autostart-Eintrag angelegt worden sein, der Dropbox beim Systemstart automatisch über den Befehl dropboxd im Hintergrund startet. In diesem Fall sollte Dropbox nach einem Neustart des Systems gestartet werden und nach der Anmeldung mit den persönlichen Benutzerdaten sollte die Synchronisation zwischen dem lokalen Ordner und der Cloud funktionieren. Die Existenz eines solchen Autostart-Eintrags lässt sich über die GNOME-Startprogrammeinstellungen überprüfen, die über den folgenden Befehl gestartet werden können. Falls in der Liste der Startprogramme kein solcher Befehl existiert muss er manuell angelegt werden.
 $ gnome-session-properties  
Bei aktivierter TopIcons-Erweiterung sollte nach dem Start des Services das Dropbox-Symbol im Top-Panel angezeigt werden. Wie zu Beginn dieser Artikelserie bereits erwähnt nutze ich das Fenster- und Icon-Thema "Numix" im Zusammenspiel mit dem Shell-Thema "EleganceColors", das das GNOME-Top-Panel farblich passend in einem sehr dunklen Grau erscheinen lässt. Im "Numix"-Icon Thema sind bereits Tray-Icons für Dropbox enthalten aber diese passen aufgrund ihrer Helligkeit leider nicht zu einem solch dunklen Panel. Aus diesem Grund habe ich diese Icons so angepasst, dass sie auch in einem dunklen Panel sehr gut sichtbar sind. Unter diesem Download-Link ist das "Numix - Dropbox Tray Icons" genannte Icon-Pack als zip-Archiv verfügbar. Nach dem Herunterladen des Archivs, lässt es sich über die folgenden Konsolenbefehle entpacken und anschließend installieren, wobei der Dateinamen der zip-Datei eventuell an die jeweilige Version anzupassen ist. Die originalen Icons des "Numix"-Icon Themas werden dadurch überschrieben.
 $ unzip numix-dropbox-tray-icons-v.1.0.zip  
 $ cd numix-dropbox-tray-icons  
 $ sudo ./INSTALL.sh  
Die Änderungen werden eventuell erst nach einem Neustart der GNOME-Shell sichtbar. Ein solcher Neustart lässt sich erzwingen, indem man die Tastenkombination Alt + F2 drückt, in den erscheinenden Dialog den Befehl "r" eingibt und anschließend mit der Enter-Taste bestätigt.

Das Icon-Pack enthält drei verschiedene Icons, die unten abgebildet sind. Dazu gehören (von links nach rechts) ein Standard-Icon, ein Icon, das bei laufender Synchronisation angezeigt wird und ein Icon, das darauf hinweist, dass bei der Synchronisation ein Fehler aufgetreten ist.

Eine Vorschau über die, in "Numix - Dropbox Tray Icons" enthaltenen, Symbole

Banshee


Auch der Media-Player "Banshee" soll beim Start meines Arch Linux im Hintergrund gestartet werden und als Symbol im GNOME-Top-Panel verfügbar sein. Er ist über das offizielle Repository "extra" verfügbar und kann dementsprechend über folgenden Befehl über den Paketmanager "Pacman" installiert werden:
 $ sudo pacman -S banshee  
Insofern die Erweiterung "Symbol im Benachrichtigungsfeld" in den Einstellungen von Banshee aktiviert ist, zeigt auch Banshee ein Tray-Icon an. Um diese Einstellung zu überprüfen, können die Einstellungen über den Menüeintrag "Bearbeiten"  "Einstellungen" geöffnet werden. Unter dem Reiter "Erweiterungen" ist eine Liste aufgeführt, die alle installierten Erweiterungen enthält.

Liste aller installierten Erweiterungen in den Einstellungen von Banshee (Klicken zum Vergrößern)

Um Banshee beim Systemstart im Hintergrund zu starten muss ein neuer Autostart-Eintrag über den Dialog "Startprogrammeinstellungen" erstellt werden, der über den folgenden Befehl erreichbar ist. 
 $ gnome-session-properties  
Über die Schaltfläche hinzufügen kann ein neuer Eintrag erstellt werden, dem eine beliebige Bezeichnung und ein Befehl zugeordnet werden muss. Um Banshee minimiert im Hintergrund zu starten muss der folgende Befehl eingegeben werden. Das Programm wird dadurch erst 10 Sekunden nach Systemstart gestartet, was sinnvoll ist, da ansonsten Funktionen, die eine Internetverbindung benötigen, eventuell nicht funktionieren, wenn das Herstellen des Internetverbindung noch nicht abgeschlossen ist.
 bash -c "sleep 10;banshee --hide"  

Anlegen eines neuen Autostart-Eintrags, um Banshee im Hintergrund zu starten (Klicken zum Vergrößern)

Auch die Tray-Icons für Banshee sind bereits im "Numix"-Icon Thema enthalten und leider passen auch diese farblich nicht zu einem dunklen Top-Panel. Deshalb habe ich auch für diese Icons ein Icon Pack erstellt, das unter diesem Downloadlink heruntergeladen werden kann. Nach dem Herunterladen des zip-Archivs kann dieses über die folgenden Befehle entpackt und die Icons installiert werden, wobei der übergebene Dateinamen des zip-Archivs eventuell an die jeweilige Version angepasst werden muss:
 $ unzip numix-banshee-tray-icons-v.1.0.zip  
 $ cd numix-banshee-tray-icons  
 $ sudo ./INSTALL.sh  
Die geänderten Icons werden eventuell erst nach einem Neustart der GNOME-Shell sichtbar. Hierfür drückt man die Tastenkombination Alt + F2 und gibt in den erscheinenden Dialog den Befehl "r" ein.

Dieses "Numix - Banshee Tray Icons" genannte Icon-Pack enthält die drei, unten in einer Vorschau dargestellten, Symbole. Von links nach rechts stellen diese Symbole das Standard-Icon, das Icon, das angezeigt wird, wenn ein Audio- oder Video-Stream gepuffert wird und das Icon, das angezeigt wird, wenn die Wiedergabe gestoppt wurde, dar.

Eine Vorschau über die, im Icon-Pack "Numix - Banshee Tray Icons" enthaltenen Symbole

Thunderbird


Als Mail-Client für diverse E-Mail-Konten verwende ich seit jeher "Thunderbird". Leider bietet das Programm von Haus aus keine Möglichkeit an, minimiert gestartet zu werden, weshalb es nicht ganz so trivial ist, den Mail-Client beim Systemstart unsichtbar im Hintergrund zu starten. Auch das Anzeigen eines Tray-Icons wird standardmäßig nicht unterstützt. Diese beiden Funktionalitäten lassen sich jedoch über das AddOn "FireTray" nachrüsten, das die Möglichkeit mit sich bringt, Thunderbird aus dem System-Tray heraus zu nutzen. Das AddOn kann entweder von dieser Seite heruntergeladen und anschließend durch Ausführen der Datei installiert werden oder man installiert es direkt aus Thunderbird heraus, indem man dessen integrierte Suchfunktion nutzt, die über die Option "Add-ons" im Anwendungsmenü erreicht werden kann.

Über die Einstellungen des AddOns kann unter dem Reiter "Windows" die Option "Start application hidden to tray" aktiviert werden, die dafür sorgt, dass Thunderbird stets minimiert gestartet wird. Die übrigen Einstellungen, die ich unter diesem Reiter getroffen habe, sind auf dem unten dargestellten Screenshot zu sehen.

Einstellungen unter dem Reiter "Windows" des Thunderbird-AddOns "FireTray" (Klicken zum Vergrößern)

Um anschließend einen neuen Autostart-Eintrag anzulegen, der das Programm beim Systemstart startet, muss der entsprechende Einstellungs-Dialog über den folgenden Befehl gestartet werden:
 $ gnome-shell-properties  
Dem neu angelegten Eintrag muss dann der folgende Befehl zugeordnet werden, der Thunderbird 10 Sekunden nach dem Systemstart startet. Diese Verzögerung ist notwendig, da das Programm ansonsten eventuell eine Fehlermeldung ausgibt, dass keine Verbindung zu dem Server hergestellt werden konnte. Dies ist der Fall, wenn die Herstellung der Internetverbindung noch nicht abgeschlossen ist, wie es bei der Verwendung von WLAN der Fall sein kann.
 $ bash -c "sleep 10;thunderbird"

Unter dem Reiter "Icon" der Erweiterung "FireTray" kann außerdem das Tray-Icon ausgewählt werden, das standardmäßig im Top-Panel von der GNOME-Desktopumgebung angezeigt werden soll. Wenn man unter dem Reiter "Mail" außerdem noch die Option "Enable mail notification" aktiviert, kann man unter diesem Reiter zusätzlich noch ein zweites Tray-Icon wählen, welches angezeigt wird, wenn neue bzw. ungelesene Mails vorliegen. Standardmäßig werden für diese Icons Dateien verwendet, die dem ausgewählten Icon-Thema entnommen werden. Im Falle des Numix-Themas, das von mir verwendet wird, ist es wiederrum so, dass diese Icons nicht für die Verwendung in einem dunklen Top-Panel geeignet sind. Aus diesem Grund habe ich wie einmal ein Icon-Pack namens "Numix - Thunderbird Tray Icons" erstellt, das passende Icons enthält. Diese Icon-Pack kann unter diesem Downloadlink heruntergeladen werden und anschließend über die folgenden Konsolenbefehle entpackt und installiert werden. Der Dateiname des zip-Archivs muss hierbei eventuell an die jeweilige Version angepasst werden.
 $ unzip numix-thunderbird-tray-icons-v.1.0.zip  
 $ cd numix-thunderbird-tray-icons  
 $ sudo ./INSTALL.sh  
Um die Icons anschließend in FireTray auszuwählen, muss für das Standard-Icon der Pfad /usr/share/icons/Numix/status/22/thunderbird-default-tray-icon.svg und für das Icon, das bei ungelesenen Nachrichten angezeigt wird, der Pfad /usr/share/icons/Numix/status/22/thunderbird-indicator-tray-icon.svg ausgewählt werden. Das unten dargestellte Bild zeigt diese beiden Grafiken in einer Vorschau.

Eine Vorschau über die, im Icon-Pack "Numix - Thunderbird Tray Icons" enthaltenen Symbole.

Pidgin


Bei dem letzten Programm, für das ich gerne ein Tray-Icon auf meinem System darstellen möchte und das hier vorgestellt werden soll, handelt es sich um den Instant Messenger "Pidgin". Es kann aus den offiziellen Repositories über den folgenden Befehl installiert werden:
 $ sudo pacman -S pidgin  
Pidgin zeigt zwar standardmäßig ein Tray-Icon an, doch um das Programm minimiert zu starten benötigt man ein dementsprechendes PlugIn namens "Extended Preferences", das über das AUR installiert werden kann. Hierfür eignet sich beispielsweise der folgende Befehl, der das Kommandozeilentool "yaourt" nutzt:
 $ yaourt -S pidgin-extprefs  
Nach der Installation des PlugIns sollten dieses in Pidgin unter den Menüpunkt "Werkzeuge" → "Plugins" aufgeführt werden. Über die Schaltfläche "Plugin konfigurieren" lassen sich dann dessen Einstellungen anpassen. Um Pidgin minimiert zu starten, muss die Option "Hide buddy list at startup" aktiviert sein. Der folgende Screenshot zeigt den Einstellungsdialog des PlugIns.

Einstellungen des Pidgin-Plugins "Extended Preferences" (Klicken zum Vergrößern)

Anschließend kann ein neuer Autostart-Eintrag für Pidgin angelegt werden. Hierfür muss ein Weiteres mal der entsprechende Einstellungsdialog über den folgenden Befehl gestartet werden:
 $ gnome-session-properties
Dem neuen Eintrag muss als Befehl der folgende Wert übergeben werden. Da auch Pidgin eine bestehende Internetverbindung benötigt, wird das Programm auch dieses mal erst 10 Sekunden nach dem eigentlichen Systemstart ausgeführt.
 bash -c "sleep 10;pidgin"  
Die Tray-Icons, die standardmäßig von Pidgin angezeigt werden, passen optisch nicht zu dem, von mir verwendeten, Numix-Thema. Über diesen Downloadlink kann jedoch das von mir erstelltes Icon-Pack "Numix - Pidgin Tray Icons" heruntergeladen werden, dessen Icons grafisch auf das Numix-Thema abgestimmt sind. Das Icon-Pack enthält verschiedene Symbole, die den aktuellen Status des Benutzers visualisieren, ein Icon das angezeigt wird, wenn die Verbindung zum Server hergestellt wird, ein Icon, das über ungelesene Mails informiert, ein Icon, das über ungelesene Nachrichten informiert und ein Icon, das über unbeantwortete Freundschaftsanfragen informiert. Die unten dargestellte Abbildung zeigt eine Vorschau dieser Symbole.

Eine Vorschau über die, in dem Icon-Pack "Numix - Pidgin Tray Icons" enthalten Symbole (Klicken zum Vergrößern)

Nach dem Herunterladen kann das zip-Archiv über die folgenden Befehle entpackt und die Icons installiert werden. Der übergebene Dateiname des Archivs muss dabei eventuell an die konkrete Version angepasst werden.
 $ unzip numix-pidgin-tray-icons-v.1.0.zip  
 $ cd numix-pidgin-tray-icons  
 $ sudo ./INSTALL.sh  
Die Änderungen werden eventuell erst nach einem Neustart der GNOME-Shell oder von Pidgin sichtbar. Um die Shell neu zu starten drückt man die Tastenkombination Alt + F2. In den erscheinenden Dialog gibt man anschließend den Befehl "r" ein und bestätigt die Eingabe mit der Enter-Taste.

GNOME-Benachrichtigungsleiste deaktivieren


Mich störte außerdem die Benachrichtigungsleiste, die am unteren Bildschirmrand eingeblendet wird, wenn man den Mauszeiger dort hin bewegt, da ich sie des Öfteren aus Versehen aktivierte, die Benachrichtigungen die dort angezeigt wurden, jedoch nie benötigte. Alle Benachrichtigungen, die für mich von Interesse sind, werden durch die bereits angesprochenen Tray-Icons abgedeckt und weitere Statusmeldungen von diesen und anderen Programmen werden von den PopUp-Benachrichtigungen, die am unteren Rand des Bildschirms für kurze Zeit eingeblendet werden, ausreichend kenntlich gemacht.

Um aus diesem Grund die Benachrichtungsleiste zu deaktivieren existiert die GNOME Shell Extension "Remove Bottom Bar", die zwar scheinbar nicht über extensions.gnome.org, doch stattdessen über das AUR, verfügbar ist. Über den folgenden Befehl kann sie etwa über das Kommandozeilentool "yaourt" installiert werden:
 $ yaourt -S gnome-shell-extension-remove-bottom-bar  
Offiziell unterstützt die Extension aktuelle Versionen der GNOME-Shell nicht und daher wird sie nach der Installation auch nicht automatisch aktiviert und ist nicht in der Liste der installierten Extensions, wie sie beispielsweise das Programm "Gnome Tweak Tool" anbietet, sichtbar. Jedoch funktioniert die Extension technisch auch weiterhin problemlos und durch eine kleine Anpassung der Datei metadata.json, die sich im Installationsverzeichnis der Extension befindet und unter anderem festlegt, für welche Versionen der GNOME-Shell sie verwendbar ist, kann sie auch aktiviert werden. Um die Datei, die sich in dem Verzeichnis /usr/share/gnome-shell/extensions/remove_bottom_bar@k2z.com befindet mit dem Editor "nano" zu editieren kann beispielsweise der folgende Konsolenbefehl genutzt werden:
 $ sudo nano /usr/share/gnome-shell/extensions/remove_bottom_bar@k2z.com/metadata.json  
Zu den Werten der Zeile "shell-version", die alle unterstützen Versionen der GNOME-Shell beinhaltet, muss anschließend die Versionsnummer der genutzten Shell hinzugefügt werden. Um diese Versionsnummer herauszufinden kann der folgende Befehl in einem Terminal ausgeführt werden:
 $ gnome-shell --version  
Nach dem Hinzufügen der Shell-Version könnte die geänderte Datei z.B. wie folgt aussehen. Dabei wurde der Wert "3.8.4" zu der ersten Zeile hinzugefügt.
 {  
     "shell-version": ["3.0", "3.1.90", "3.1.91", "3.2", "3.4", "3.6", "3.8"],  
     "uuid": "remove_bottom_bar@k2z.com",  
     "name": "Remove bottom bar",  
     "description": "Removes the Message tray (bottom bar). I recommend to use with gnome-shell-gnome2-notifications.",  
     "url": "http://www.k2z.com"  
 }  
Anschließend sollte die Extension z.B. in dem Gnome Tweak Tool aktivieren aufgelistet sein und kann von dort aus aktiviert werden.

Die Extension verhindert, dass die Benachrichtigungsleiste beim Bewegen des Mauszeigers zur unteren Bildschirmkante angezeigt wird. Jedoch werden vom System weiterhin Benachrichtigungen dort abgelegt und wenn dies der Fall ist, wird am unteren Rand des Aktivitäten-Menüs ein entsprechender Hinweis angezeigt. Um dies zu verhindern, sollten außerdem die Benachrichtigungen der individuellen Programme deaktiviert werden. Man kann dies erreichen, indem man in den entsprechenden Einstellungen, die unter der Kategorie "Benachrichtigungen" der Systemeinstellungen erreichbar sind, den Regler "Benachrichtigungen" für jedes aufgeführte Programm auf den Wert "Aus" stellt. Über diesen Dialog kann man außerdem wählen, ob die Benachrichtigungen im Sperrbildschirm angezeigt werden sollen. Insofern man die Option "Einblend-Banner anzeigen" für die verschiedenen Programme aktiviert lässt, bleiben PopUp-Benachrichtigungen von der Änderung jedoch unangetastet und werden weiterhin angezeigt.

Die Einstellungen zu Benachrichtigungen in GNOME 3 (Klicken zum Vergrößern)

Weiterführende Links:

12. September 2013

Arch Linux: Automatische Google Drive-Synchronisation mit Grive

Obwohl schon lange von Google gefordert wird, einen Google Drive-Client für Linux bereit zu stellen, ist dies bisher noch nicht geschehen. Mit "Grive" existiert jedoch ein inoffizieller Client, der es erlaubt, die Dateien aus der Google Drive-Cloud mit einem lokalen Ordner unter Linux zu synchronisieren. Die Projektseite von Grive findet man unter diesem Link.

Grive installieren


Grive ist unter Arch Linux im AUR verfügbar und kann so z.B. über den folgenden Befehl über das Kommandozeilen-Tool "Yaourt" installiert werden:
 $ yaourt -S grive  
Anschließend muss ein Ordner erstellt werden, in dem die auf Google Drive befindlichen Dateien synchronisiert werden sollen. Um den Ordner "Google Drive" im Home-Verzeichnis zu erstellen kann etwa der folgende Konsolenbefehl genutzt werden:
 $ mkdir ~/Google\ Drive
Anschließend wechselt man über den folgenden Befehl in den neu angelegten Ordner:
 $ cd ~/Google\ Drive
Beim ersten Start von Grive muss das Programm mit dem Parameter -a ausgeführt werden, um den Zugriff auf Google Drive zu autorisieren (Wichtig ist dabei ist, dass das Programm aus dem Ordner heraus ausgeführt wird, der zur Synchronisation genutzt werden soll):
 $ grive -a
Durch den Befehl wird ein Link ausgegeben, der in einem Browser eingegeben wird. Dadurch wird eine Seite angezeigt über die man den Zugriff von Grive auf Google Drive autorisieren kann. Dadurch wird ein Code angezeigt, der wiederum in das Terminal eingefügt werden muss, über das zuvor der Befehl ausgeführt wurde. Nach dem Bestätigen der Eingabe über Enter wird der lokale Ordner mit Google Drive synchronisiert.

Autorisierung von Grive über einen Browser (Klicken zum Vergrößern)

Cronjob für automatische Synchronisation einrichten


Um den lokalen Ordner zu synchronisieren muss normalerweise aus einem Terminal heraus der Befehl "grive" in diesem Ordner ausgeführt werden. Um eine automatische Synchronisation zu erreichen kann alternativ ein Cronjob eingerichtet werden, der regelmäßig diesen Befehl ausführt und somit eine Synchronisation nach einem bestimmten Intervall anstößt.

Hierfür muss zunächst ein Bash-Skript erstellt werden, das die Grive-Synchronisation für den gewünschten Ordner ausführt. Um eine solches Skript mit dem Namen "grive-cron.sh" in dem Verzeichnis /bin über den Editor "nano" zu erstellen kann z.B. der folgende Befehl genutzt werden. Der Befehl muss dabei mit Root-Rechten ausgeführt werden, da nur der Root-Benutzer für dieses Verzeichnis Schreibrechte besitzt.
 $ sudo nano /bin/grive-cron.sh  
Als Inhalt der zu erstellenden Datei muss das folgende Shell-Skript eingegeben werden, das dafür sorgt, dass in den Ordner gewechselt wird, der synchronisiert werden soll und anschließend Grive ausgeführt wird. Ders absolute Pfad zu dem zu synchronisierenden Ordner muss natürlich je nach Anwendungsfall angepasst werden.
 #!/bin/bash  
 cd /home/user/Google\ Drive  
 grive  
Anschließend gilt es, einen neuen Cronjob zu erstellen, der in einem bestimmten Intervall dieses Skript ausführt. Um die Konfiguration der Cronjobs des aktuellen Benutzers beispielsweise mit dem Editor "nano" zu editieren kann der folgende Befehl genutzt werden.
 $ env EDITOR=nano crontab -e  
Die Datei die dadurch geöffnet wird, kann verschiedene Cronjobs enthalten, von denen jeder in einer neuen Zeile eingetragen wird. Jeder dieser Cronjobs bestehen aus sechs Spalten von denen die ersten fünf die Zeiten definieren zu denen der Job ausgeführt werden soll und die letzte Spalte den Befehl aufnimmt, der ausgeführt werden soll. Indem die folgende Zeile in die Datei eingefügt wird, wird ein neuer Cronjob definiert, der das zuvor erstellte Skript minütlich ausführt. Weitere Informationen über die Konfiguration der Ausführungszeit von Cronjobs finden sich unter diesem Wiki-Artikel.
 * * * * * /bin/grive-cron.sh
Nach dem Speichern der geänderten Datei über den Shortcut Strg+O und dem Schließen des Editors über Strg+X wird der neue Cronjob automatisch erstellt und gestartet. Über den folgenden Befehl kann man sich eine Liste der aktuell definierten Cronjobs anzeigen lassen:
 $ crontab -l
Über den erstellten Cronjob sollte die Synchronisierung des lokalen Ordners mit Google Drive minütlich oder je nach definiertem Intervall ausgeführt werden und dessen Inhalt somit stets abgeglichen sein.

Weiterführende Links:

11. September 2013

Arch Linux: Aktives GNOME-Fenster per Shortcut auf anderen Monitor verschieben

In diesem Artikel soll eine Möglichkeit vorgestellt werden, wie unter Arch Linux, bei Benutzung der GNOME 3-Shell, Shortcuts definiert werden können, die das aktuell fokussierte Fenster auf den linken, bzw. den rechten Monitor schieben. Dabei sollen zwei verschiedene Tastaturkürzel vergeben werden, von denen eines das Fenster auf den linken Monitor verschiebt, falls es sich dort nicht bereits befindet und das andere das Fenster auf den rechten Monitor verschiebt, falls notwendig. Bei den hierfür verwendeten Shell-Skripten handelt es sich um abgewandelte Versionen des Skripts, das unter diesem Artikel von "sabel's blog" zu finden ist.

Der wesentliche Unterschied zwischen dem dort vorgestellten Skript und der Variante, die in diesem Artikel verwendet wird, liegt darin, dass das Original-Skript in zwei Skripte aufgeteilt wurde. Eines dieser Skripte verschiebt das Fenster auf den linken Bildschirm, das andere verschiebt es auf den rechten Bildschirm. Hierdurch lassen sich diese beiden Aktionen auf zwei verschiedene Shortcuts legen, während das Original-Skript das aktuelle Fenster stets auf den anderen Monitor verschiebt. Wie auch das originale Skript funktioniert die hier vorgestellte Variante nur mit zwei Monitoren der gleichen Auflösung korrekt. Als kleine Optimierung muss jedoch diese Auflösung nicht manuell in das Skript eingetragen werden. Unter dem oben verlinkten Blog-Eintrag findet sich auch eine alternative Variante, die mit unterschiedlichen Auflösungen arbeitet, welche jedoch manuell in das Skript eingetragen werden müssen. Außerdem wurde das originale Skript insofern verbessert, als dass nicht maximierte Fenster nach dem Verschieben an der selben Position in Relation zu dem jeweiligen Monitor angezeigt werden, wie es auf dem ursprünglichen Monitor der Fall war, statt das Fenster einfach immer an den linken Monitor-Rand zu verschieben.

Erstellen der nötigen Bash-Skripte


Zunächst müssen zwei Bash-Skripte erstellt werden, die später über die zu vergebenden Shortcuts aufgerufen werden. Eines davon sorgt davon, dass das aktuell fokussierte Fenster auf den linken Monitor verschoben wird, das andere verschiebt das Fenster auf den rechten Monitor. In diesem Artikel werden diese Skripte in dem Verzeichnis /bin abgespeichert.

Um die Datei für das erste Skript zu erstellen, das das Fenster auf den linken Monitor verschiebt, kann etwa der Editor gedit über den folgenden Befehl geöffnet werden. Da nur der Root-Benutzer Schreibrechte in dem Verzeichnis /bin hat, muss der Befehl als sudo ausgeführt werden.
 $ sudo gedit /bin/move-window-to-left-monitor.sh  
In das dadurch geöffnete Editor-Fenster muss dann der folgende Inhalt eingefügt werden und die Datei anschließend abgespeichert werden:
 #!/bin/bash  
    
 # screen width  
 total_screen_width=$(xdpyinfo | grep dimensions | uniq | awk '{print $2}' | cut -d 'x' -f1);  
 screen_width=$(($total_screen_width/2));  
   
 # active window  
 window=`xdotool getactivewindow`  
    
 # get active window size and position  
 x=`xwininfo -id $window | grep "Absolute upper-left X" | awk '{print $4}'`  
 w=`xwininfo -id $window | grep "Width" | awk '{print $2}'`  
    
 maximized=false  
 if [[ "$w" -eq "$screen_width" ]]; then  
   maximized=true  
 fi  
   
 # window on left monitor  
 if [ "$x" -lt "$screen_width" ]; then   
  :  
 # window on right monitor  
 else  
      
   if $maximized; then  
     wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz  
   fi  
   
   vert_offset=$(($x-$screen_width));  
   wmctrl -r :ACTIVE: -e 0,$vert_offset,-1,-1,-1  
   
   if $maximized; then  
     wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz  
   fi  
    
 fi  
Analog kann dann für das andere Bash-Skript vorgegangen werden, das das aktuell aktive Fenster auf den rechten Monitor schiebt. Um hierfür den Editor zu öffnen, kann zunächst der folgende Befehl genutzt werden:
 $ sudo gedit /bin/move-window-to-right-monitor.sh  
Bei dem Inhalt, der in diese Datei eingefügt werden muss, handelt es sich um das folgende Skript:
 #!/bin/bash  
    
 # screen width  
 total_screen_width=$(xdpyinfo | grep dimensions | uniq | awk '{print $2}' | cut -d 'x' -f1);  
 screen_width=$(($total_screen_width/2));  
   
 # active window  
 window=`xdotool getactivewindow`  
    
 # get active window size and position  
 x=`xwininfo -id $window | grep "Absolute upper-left X" | awk '{print $4}'`  
 w=`xwininfo -id $window | grep "Width" | awk '{print $2}'`  
    
 maximized=false  
 if [[ "$w" -eq "$screen_width" ]]; then  
   maximized=true  
 fi  
   
 # window on left monitor  
 if [ "$x" -lt "$screen_width" ]; then   
   
   if $maximized; then  
     wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz  
   fi  
    
   vert_offset=$(($screen_width+$x));  
   wmctrl -r :ACTIVE: -e 0,$vert_offset,-1,-1,-1  
    
   if $maximized; then  
     wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz  
   fi  
   
 # window on right monitor  
 else  
   :  
 fi  
Außerdem müssen die Ausführungsrechte der beiden erstellten Dateien über die folgenden beiden Befehle angepasst werden:
 $ sudo chmod 755 move-window-to-left-monitor.sh  
 $ sudo chmod 755 move-window-to-right-monitor.sh  

Notwendige Pakete installieren


Um die zuvor erstellten Skripte ausführen zu können, müssen zusätzlich noch die Pakete xorg-utils, wmctrl und xdotool installiert werden. All diese Pakete sind über das offizielle Community-Repository von Arch Linux verfügbar und können über dessen Paketmanager "Pacman" installiert werden. Um die drei Pakete zu installieren genügt somit der folgende Befehl:
 $ sudo pacman -S xorg-utils wmctrl xdotool

Shortcuts definieren


Zuletzt müssen noch die Tastaturkürzel definiert werden, über die die beiden Bash-Skripte ausgeführt werden. Hierfür bietet die GNOME-Shell bereits von Haus aus eine Möglichkeit an. Die entsprechende Einstellungsmöglichkeit findet man unter den Systemeinstellungen in der Kategorie "Tastatur". In dem Tab "Tastaturkürzel" können eigene Tastenkombinationen definiert werden, indem man die entsprechende Option aus der links dargestellten Liste auswählt. Über die Hinzufügen-Schaltfläche öffnet sich ein Dialog, in dem man eine Bezeichnung für den Shortcut, sowie den Befehl, der über ihn ausgeführt werden soll, eintragen kann. Dieser Dialog ist auf dem unten abgebildeten Screenshot zu sehen.

Der Dialog zur Konfiguration eigener Tastaturkürzel unter GNOME 3 (Klicken zum Vergrößern)
Als Befehl für den Shortcut, der das aktuell fokussierte Fenster auf den linken Monitor verschieben soll, muss der Befehl /bin/move-window-to-left-monitor.sh eingetragen werden, für den anderen Shortcut, der das Fenster auf den rechten Monitor verschieben soll, muss der Befehl /bin/move-window-to-right-monitor.sh lauten. Nach dem die neuen Einträge erstellt wurden, können über die Rechte Spalte die jeweiligen Tastaturkürzel vergeben werden.

Weiterführende Links: