18. Juni 2014

In eigener Sache: Android-Library "AndroidSeekBarPreference"

Gemäß den Design-Richtlinien des mobilen Betriebssystems "Android" werden die Einstellungen einer App als sogenannte "Preferenes" angeboten. Die Android-API, die für die Entwicklung von Apps zur Verfügung steht, bietet eine Reihe solcher Preferences, wie beispielsweise solche zur benutzerdefinierten Eingabe mittels Textfelder oder zur Auswahl eines Wertes aus einer vorgegebenen Liste, an. Eine Preference zur Auswahl eines Zahlenwertes aus einem kontinuierlichen Zahlenbereich mittels eines Schiebereglers, einer sogenannten SeekBar fehlt der API jedoch. Die Android-Library "AndroidSeekBarPreference" schließt diese Lücke, indem sie die Implementierung einer solchen Funktionalität, einschließlich vielseitiger Konfigurationsmöglichkeiten anbietet. Eine Preference, die mit Hilfe der Library umgesetzt wurde, erlaubt es, wie es durch den unten stehenden Screenshot verdeutlicht wird, einen Auswahldialog zu öffnen mit dessen Hilfe es möglich ist, einen Fließkommawert oder einen ganzzahligen Wert aus einem vorgegebenen Wertebereich zu wählen. Der ausgewählte Wert wird dabei erst übernommen, wenn der Benutzer die Auswahl bestätigt. Daneben besteht auch die Möglichkeit, den Dialog zu beenden, ohne die getätigte Änderung zu übernehmen.

Das Erscheinungsbild einer Preference der Library "AndroidSeekBarPreference" (Klicken zum Vergrößern)

Die Library unterstützt dabei die folgenden Funktionen:
  • Erlaubt es, einen Fließkommawert oder einen ganzzahligen Wert aus einem kontinuierlichen Wertebereich mittels einer SeekBar zu wählen.
  • Die Anzahl der Dezimalstellen der Fließkommawerte, die durch die Preference ausgewählt werden können sollen, kann vorgegeben werden. Wenn die Anzahl der Dezimalstellen auf 0 gesetzt wird, können stattdessen nur ganzzahlige Werte ausgewählt werden.
  • Der Wertebereich, bzw. der minimale und maximale Wert, kann frei gewählt werden. 
  • Der Dialog, der dem Benutzer zur Auswahl des Wertes angezeigt wird, kann eine frei wählbare Nachricht beinhalten.
  • Der ausgewählte Wert wird erst übernommen, wenn der Benutzer die Auswahl bestätigt. Daneben besteht auch die Möglichkeit, den Dialog zu beenden, ohne die getätigte Änderung zu übernehmen.
  • Es ist möglich, eine Schrittweite zu definieren. Wenn die SeekBar von dem Benutzer bewegt wird, wird der aktuelle Wert um diese Schrittweise erhöht, bzw. erniedrigt.
  • Die Anzeige des aktuell gewählten Wertes kann dahingehend konfiguriert werden, dass eine Einheit definiert werden kann, die zur Ausgabe an den eigentlichen Wert angehängt wird und dass das Symbol, das zur Trennung von Fließkommazahlen genutzt wird, frei gewählt werden kann.
  • Die Unterschrift der Preference kann abhängig von dem aktuell ausgewählten Wert gewählt werden. Alternativ kann auch der gewählte Wert selbst angezeigt werden.
  • Das Erscheinungsbild der Preference entspricht dem der, von der Android-API bereits angebotenen, Preferences.
Die Library kann über diese Projektseite auf Sourceforge bezogen werden. Der Quellcode wird unter der GLPL 3-Lizenz veröffentlicht und steht über ein Mercurial-Repository bereit. Unter diesem Link finden sich die JUnit-Tests der Library und unter diesem Link wird eine Beispielanwendung angeboten, die zu Präsentationszwecken Gebrauch von der Library macht.

Weiterführende Links:


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: