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:

22. April 2014

GNOME: Ausführung von beliebigen Skripts bei Systemstart ohne "gnome-session-properties"

Überraschend für viele GNOME-User und wahrscheinlich auch zu Missgunsten eines fast genauso großen Teils von ihnen, wurde in Version 3.12 der Linux-Shell das Programm "gnome-session-properties" entfernt, was sogar zunächst als Bug verstanden wurde (siehe dieser Bug-Report). Wer dieses Tool bisher verwendete, um eigene Skripte oder Befehle beim Systemstart automatisch auszuführen, steht nun vor dem Problem, dass das Tool "gnome-tweak-tool", das diese Funktionalität zukünftig übernehmen soll, es nicht erlaubt, benutzerdefinierte Autostart-Befehle auszuführen. Stattdessen wird lediglich das automatische Starten von entsprechend installierten Anwendungen erlaubt. Bis das "gnome-tweak-tool" diese Funktionalität erfüllt und damit die neu entstandene Lücke füllt, falls dies denn je geschehen wird, kann man sich damit behelfen, die .desktop-Dateien, die zuvor elegant über die, von  der Anwendung "gnome-session-properties" angebotenen, Benutzeroberfläche erstellt werden konnten und jeweils einen Autostart-Eintrag repräsentieren, manuell zu erstellen. Im Folgenden soll beispielhaft gezeigt werden, wie eine solche Datei aufgebaut sein muss.

Anlegen eines Autostart-Eintrags über das Tool "gnome-session-properties" (Klicken zum Vergrößern, Quelle: itechlog.com)

Eine Suche nach den .desktop-Dateien, die das Tool "gnome-session-properties" in vorherigen GNOME-Versionen auf meinem System erstellt hat, ergab, dass sich diese Dateien in dem Verzeichnis ~/.config/autostart/ befinden. Der Aufbau einer solchen Datei, die sich dementsprechend in diesem Verzeichnis befindet, soll an dem folgenden Beispiel erläutert werden, wobei die Datei beispielsweise script.desktop genannt werden könnte:
 [Desktop Entry]  
 Type=Application  
 Exec=/path/to/script.sh
 X-GNOME-Autostart-enabled=true
 Name=Mein Skript
 Comment=Führt ein benutzerdefiniertes Skript aus
Wie in dem oben dargestellten Beispiel zu sehen ist, beginnt die Datei mit der Zeile [Desktop Entry], gefolgt von Parameter-Werte-Paaren, die jeweils in einer neuen Zeile aufgeführt werden. Der Wert "Application" des Parameters "Type" definiert dabei, dass es sich bei dem Ziel der Datei um eine Anwendung handelt (mögliche andere Werte sind "Link" und "Directory"). Der zweite Parameter "Exec" beinhaltet den auszuführenden Befehl, der in diesem Fall auf ein Skript verweist, das durch den Autostart-Eintrag ausgeführt werden soll. Durch die dritte Zeile "X-GNOME-Autostart-enabled=true" wird gekennzeichnet, dass der Autostart-Eintrag beim Start der GNOME-Shell ausgeführt werden soll. Falls auf dem System eine abweichende Desktopumgebung gestartet wird, wird der Eintrag dagegen ignoriert werden. Darüber hinaus kann über die Parameter "Name" und "Comment" eine zusätzliche Beschreibungen des Autostart-Eintrages in die Datei erfolgen. 

Neben den dargestellten Parametern existieren eine Vielzahl von weiteren möglichen Parameter-Werte-Paaren, die an dieser Stelle nicht ausführlich erläutert werden sollen, da durch eine Datei nach dem oben dargestellten Aufbau bereits die meisten aller erforderlichen Autostart-Einträge abgedeckt werden können sollten. Eine ausführliche Dokumentation findet sich dagegen unter diesem Link.

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.

4. März 2014

In eigener Sache: Bachelor-Thesis veröffentlicht

In diesem kurzen Post soll darauf hingewiesen werden, dass ab sofort für alle Interessierten die Abschlussarbeit meines Informatik-Bachelor-Studiums in der Rubrik "Publikationen" auf dieser Webseite zur öffentlichen Verfügung steht. Alternativ kann die Arbeit als PDF-Dokument unter diesem Direktlink heruntergeladen werden.

Das Titelblatt der Bachelorarbeit "Eine mobile Anwendung zur videogestützten Benutzerführung mittels Augmented Reality" (Klicken zum Vergrößern)

Im Rahmen dieser Bachelor-Thesis mit dem Titel "Eine mobile Anwendung zur videogestützten Benutzerführung mittels Augmented Reality", die 2014 an der Fakultät für Informatik und Wirtschaftsinformatik der Hochschule Karlsruhe - in Zusammenarbeit mit dem Forschungszentrum Informatik (FZI) in Karlsruhe - entstand, wird eine Möglichkeit evaluiert, eine zusätzliche Kommunikationsmöglichkeit zur Erweiterung von Video-Kommunikationen zu realisieren, die es den Teilnehmern ermöglicht, benutzerdefinierte Grafiken auf Basis des Videobildes auszutauschen. Außerdem wurde eine Android-Anwendung umgesetzt, die das entsprechende Verfahren implementiert.

Weiterführende Links:

26. Dezember 2013

GNOME: Chrome Web Apps in App-Launcher anzeigen

In diesem Artikel soll eine Möglichkeit vorgestellt werden, wie sogenannte "Google Chrome Apps" im App-Launcher der GNOME 3 Shell, der innerhalb des Aktivitäten-Menüs zur Verfügung steht, als Favoriten hinzugefügt werden können. Dadurch ist es möglich, Apps, wie z.B. Google Keep, Google Kalender oder Google Drive, unabhängig Google Chrome zu starten, wobei der Browser jedoch trotzdem auf dem System installiert sein muss. Der unten dargestellte Screenshot zeigt das Resultat der, im weiteren Verlauf dieses Artikels beschriebenen, Schritte.

Die Chrome-Apps Google Drive, Google Kalender und Google Keep im App-Launcher der GNOME-Shell (Klicken zum Vergrößern)

Die folgenden Schritte sind notwendig, um Google Chrome Apps im App-Launcher der GNOME-Shell als Favoriten anzuzeigen. Als Beispiel hierfür wird die App "Google Keep" herangezogen, die es erlaubt, in der Google-Cloud gespeicherte, Notizen zu erstellen.
  • Zunächst ist es notwendig die App, die zukünftig über den App-Launcher der GNOME-Shell unabhängig von Google Chrome gestartet werden soll, innerhalb des Browsers zu installieren.Verfügbare Chrome-Apps können in "Chrome Web Store", der unter dieser Adresse verfügbar ist, gefunden und installiert werden. Google Keep ist beispielweise innerhalb des Stores unter diesem Direktlink verfügbar und kann auf der entsprechenden Seite einfach per Klick auf die dementsprechende Schaltfläche installiert werden.
Die Chrome Web App "Google Keep" innerhalb des Google Web Stores (Klicken zum Vergrößern)
  • Alle installierten Chrome-Apps werden auf der Startseite des Chrome-Browsers angezeigt und können über die entsprechenden Icons innerhalb des Browsers gestartet werden. Um stattdessen eine Desktop-Verknüpfung anzulegen, über die die App außerhalb des Browsers gestartet werden kann, muss der Menüeintrag "Verknüpfung anlegen..." des Kontextmenüs gewählt werden, das über einen Rechtsklick auf ein solches Icon verfügbar ist. 
Kontextmenü einer Chrome-App innerhalb der Startseite des Browsers
  • In dem daraufhin angezeigten Dialog sollte die Option "Desktop" ausgewählt sein, die dafür sorgt, dass nach einem Klick auf die Schaltfläche "Erstellen" eine Datei mit der Endung .desktop in Verzeichnis, das den Desktop des aktuellen Benutzers repräsentiert, erstellt wird. In diesem Beispiel handelt es sich hierbei um das Verzeichnis "Schreibtisch" innerhalb des Home-Verzeichnisses.
Dialog zum Erstellen einer Desktop-Verknüpfung zu einer Chrome Web App (Klicken zum Vergrößern)
  • Der Dateiname der auf diese Weise erstellten Verknüpfung enthält eine unleserliche Kombination von Buchstaben und Zahlen und sollte daher umbenannt werden. Der Dateiname kann hierbei beliebig gewählt werden, wobei jedoch die Dateiendung .desktop erhalten bleiben muss. Der folgende Befehl zeigt, wie eine solche Datei mit Hilfe der Konsole umbenannt werden kann:
     $ mv ~/Schreibtisch/chrome-hmjkmjkepdijhoojdojkdfohbdgmmhki-Default.desktop ~/Schreibtisch/google-keep.desktop  
    
  • Anschließend muss die umbenannte Datei in das Verzeichnis ~/.local/share/applications/ verschoben werden, was über den folgenden Konsolenbefehl bewerkstelligt werden kann:
     $ mv ~/Schreibtisch/google-keep.desktop ~/.local/share/applications/   
  • Um diese Verknüpfungen als Icons innerhalb des App-Launchers der GNOME-Shell anzuzeigen, muss in diesem letzten Schritt der Konfigurationseditor "dconf" genutzt werden. Hierzu müssen die Dateinamen der zuvor erstellten Datei zu dem Wert favorite-apps, der sich unter dem Eintrag org/gnome/shell befindet, hinzugefügt werden. In diesem Beispiel handelt es sich hierbei um den Dateinamen google-keep.desktop, der durch ein Komma getrennt und in Anführungsstrichen ('...') innerhalb der eckigen Klammern ([...]) angegeben werden muss. Der neue Eintrag sollte anschließend unmittelbar in dem App-Launcher der Shell sichtbar werden.
    Der Eintrag "org/gnome/shell/favorite-apps" im dconf-Editor (Klicken zum Vergrößern)
Die hier beschriebene Möglichkeit hat außerdem den positiven Nebeneffekt, dass alle Verknüpfungen zu Chrome-Apps, die sich innerhalb des Verzeichnisses ~/.local/share/applications/ befinden, auch über die Suche der GNOME-Shell auffindbar sind, wie es durch den unten stehenden Screenshot gezeigt wird. 

Chrome Web Apps als Suchergebnisse innerhalb der GNOME-Shell (Klicken zum Vergrößern)

Wird eine Chrome-App wie Google Keep über eine solche Verknüpfung, entweder über den App-Launcher oder die GNOME-Suche, gestartet, wird diese unabhängig von eventuell geöffneten Instanzen des Chrome-Browsers angezeigt. Es somit also nicht weiterhin nötig, den Browser zu starten um den entsprechenden Service nutzen zu können. Der unten stehende Screenshot zeigt das Erscheinungsbild von Google Keep, wenn es über eine solche Verknüpfung gestartet wurde.

Google Keep als eigenständige Anwendung (Klicken zum Vergößern)

Weiterführende Links:

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: