Openbox und feh: Einfacher Zugriff auf Bilder und Dateien im Rechtsklickmenü

Als ich gestern durch das Rechtsklickmenü von Openbox gewandert bin, fiel mir auf, dass ich ein nützliches Pipe-Menü noch nicht vorgestellt habe. Mir ist es zuerst bei Crunchbang Linux aufgefallen und es nennt sich „dash_places_menu“. Die wesentlichen Merkmale sind schnell erklärt. Die zuletzt geöffneten Dateien und alle Ordner und Dateien im Home-Ordner werden angezeigt, wodurch die notwendigen Dinge per Rechtsklick zur Verfügung stehen.

Ich weiß, dass viele das Openbox-Menü als zu minimalistisch empfinden. Desktopkonzepte, benutzerfreundliche Bedienung, optimierte Schnittstellen, das Thema lässt sich ordentlich breittreten. Der wesentliche Unterschied zwischen etablierten Formen und dem Rechtsklickmenü besteht für mich darin, dass das klassische Konzept einen bestimmten Ort vorsieht, an dem man ein Anwendungsmenü oder Funktionen aufrufen kann. Bei dem Openbox-Menu hingegen ist die gesamte Arbeitsfläche der Startpunkt für neue Aufgaben, was es deutlich flexibler macht. Das Wichtigste ist aber, es kann eben mehr als nur Programme aufrufen.

An verschiedenen Stellen in diesem Blog habe ich schon erwähnt, dass mir Dateimanager nicht besonders wichtig sind. Natürlich schimmert in all dem Chaos auf meinem Rechner auch ein Funken Ordnung, ich brauche dafür in der Regel aber nicht zwangsläufig einen Dateimanager, der dort immer für mich aufräumt.

Meine ständigen Begleiter sind cp, mv, und rm. Die meiste Zeit will ich Dateien öffnen, benutzen und ansehen. Mit einem Rechtsklick, dem Auswählen des Menüeintrags und einem Klick ist es in der Regel passiert. Es sei denn ein Tastenkürzel war schneller.

Damit der Zugriff auf Ordner und Dateien zum Kinderspiel wird muss das kleine Pipe-Menü in der menu.xml oder mit obmenu verankert werden.

<menu execute="~/.config/openbox/pipemenus/dash_places_menu.sh --recent " id="places" label="Orte"/>

Ansonsten genügt es die beiden Skripte von John Crawley in der folgenden Tar-Datei nach ~/.config/openbox/pipemenus/ zu kopieren und ggf. den Dateimanager Thunar und den Editor Leafpad mit den eigenen Favoriten auszutauschen.

Download: places.tar
Lizenz: GPL3

Wenn wir gerade beim Rechtsklickmenü sind, ein weiterer Klassiker bleibt feh. Ich denke, feh wird gehörig unterschätzt, wenn man ihn nur zum Setzen des Hintergrundbildes verwendet. Feh ist ein vollwertiger Bildbetrachter und kann auch Vorschaubilder und Diashows anzeigen. Warum nicht das Ganze aus dem Openbox-Menü heraus starten?

Mir persönlich gefällt der Montage- und Thumbnail-Modus, den man mit der -m oder -t Option aufrufen kann. Ein weiterer Favorit ist

feh -g 640x480 -d -S filename /home/apo/Bilder/

womit ich alle Hintergrundbilder in meinem Ordner auf 640×480 Pixel verkleinert angezeigt bekomme, der Dateiname eingeblendet wird und ich mich per Rechtsklick auf das Bild entscheiden kann, ob ich es nicht direkt als Hintergrund setze. Ist feh als Bildbetrachter voreingestellt, entsteht so im Zusammenspiel mit den zusätzlichen Pipe-Menüs mehr als nur ein äußerst flexibles Menü.

Lubuntu: Der Weg von LXDE zu einem reinen Openbox-Desktop mit Tint2 und Conky

Ich wollte meinem Lubuntu einen neuen Anstrich verpassen und die standardmäßige LXDE-Desktopumgebung gegen meinen Openbox-Arbeitsplatz austauschen. Ziel war es aber nicht wie üblich von einer minimalen Installation das System aufzubauen, sondern so wenig wie möglich an den vorinstallierten Einstellungen von Lubuntu zu ändern. Ich habe die einzelnen Schritte hier noch einmal dokumentiert, nützliche Quellen angegeben und meine eigene Konfiguration vorgestellt. Ich hoffe, es ist für diejenigen nützlich, die eine schnelle Lubuntu-Installation schätzen, aber anschließend gerne mit wenig Aufwand den Desktop an die eigenen Vorstellungen anpassen möchten.

Vorher und Nachher

Lubuntu benutzt von Haus aus das LXPanel am unteren Bildschirmrand und den Dateimanager PCManFM zum Verwalten des Desktops und der darauf befindlichen Icons. Damit entsteht das klassische Desktopgefühl, wodurch Lubuntu sich in der Standardeinstellung als perfekter Ersatz für all diejenigen eignet, die Gnome 3 und den zahlreichen Gnome-Shell-Varianten nichts abgewinnen können.

Mit ein paar Handgriffen lässt sich aus Lubuntu aber auch ein typischer Openbox-Desktop machen mit Rechsklickmenü, Tint2-Panel und Conky. Zusätzlich habe ich noch Ubuntu One installiert, in das PCManFM-Menü integriert und mir die Alpha des Lubuntu-Software-Centers angeschaut.

vorher
nachher

Konfiguration

Die folgenden Abschnitte sollen nur kurz erklären, was installiert und konfiguriert wurde ohne dabei zu sehr jedes Detail auszuschmücken. Im Idealfall könnt ihr meine Konfigurationsdateien an den entsprechenden Ort kopieren und die Textdateien bearbeiten, wonach sich das entsprechende Ergebnis einstellen sollte.

Wer mehr Informationen zu LXDE und Openbox haben möchte, sollte einen Blick auf die Artikel im Wiki von ubuntuusers.de oder meine kurze Übersicht „Erste Schritte mit Openbox“ werfen.

Diese Pakete haben ich insgesamt entfernt oder zusätzlich installiert.

  • Entfernte Pakete: lxpanel
  • Installierte Pakete: tint2, conky, menu, obmenu, nitrogen, ubuntuone-client, ubuntuone-control-panel, lubuntu-software-center

Hintergrundbild

Der einfachste Teil des Ganzen. Damit nicht mehr PCManFM das Hintergrundbild zeichnet, bietet sich dafür z.B. das Programm Nitrogen an, das leicht zu bedienen ist. Programm aufrufen, Bilderverzeichnis mit dem gewünschten Hintergrundbild auswählen, fertig. Eine gute Alternative dazu bleibt weiterhin feh. Das Bild habe ich auf wallbase.cc gefunden.

Openbox- und GTK-Thema

Das Thema des Fenstermanagers lässt sich mit obconf, die Themen der GTK-Anwendungen bequem mit LXAppearance ändern. Ich habe mich erneut für Alghattas entschieden, da es mir schon als Thema für meinen Openbox-Desktop mit Arch Linux gefiel. Ein Problem scheint derzeit zu sein, dass Alghattas nicht für GTK3-Applikationen geeignet ist oder LXAppearance hier einfach schlapp macht.

Lösungen: Wählt ein anderes Thema, tauscht die GTK3-Anwendungen aus oder ignoriert das Ganze. 😉

Entpackt Alghattas nach ~/.themes/ und ihr solltet keine Probleme haben das neue Thema mit obconf und LXAppearance auszuwählen.

Conky

Normalerweise bevorzuge ich eher schlichte Conky-Themen. Mir genügen die wichtigsten Systeminformationen in Textform. Das wars. Langweilig, ich weiß. Für den Showeffekt habe ich deswegen mal nach etwas anderem gesucht und bin bei webupd8.org fündig geworden. Ihr könnt euch das Original des Benutzers despot77 von gnome-look.org herunterladen.

Ich habe die Version leicht angepasst, die Farben geändert und das Lubuntu-Logo verwendet. Mit diesem Conky-Beispiel sieht man recht gut die Möglichkeiten von Lua, womit die Kreise und die Uhr dynamisch gezeichnet werden.

Damit Conky sauber beim Abmelden beendet wird, ist es derzeit noch notwendig in der Datei /etc/lxdm/PostLogout

pkill -9 conky

einzutragen.

Download: Mein Conky
Kopieren nach: ~

Tint2

Ich weiß auch nicht genau, was mich an Tint2 so begeistert. Ich denke, es ist dieser schlichte, aber trotzdem so effektive Ansatz. Aufmerksame Leser erkennen auch hier wieder die Vorlage von Crunchbang Linux. Dieses Mal habe ich mich für einen transparenten Hintergrund und vier Arbeitsflächen entschieden. Da ich mit Conky schon Datum und Uhrzeit darstelle, entfiel der entsprechende Konfigurationsteil bei Tint2. Die Anzahl der Desktops lässt sich mit obconf unter dem Reiter „Arbeitsfläche“ ändern.

Download: Meine tint2rc
Kopieren nach: ~/.config/tint2/

Autostart

Es ist ziemlich umständlich bei jedem Neustart das neue Panel, Conky und Nitrogen manuell auszuführen. Damit dies automatisch geschieht, gibt es eine Autostartfunktion, die man bei Lubuntu meiner Meinung nach an zu vielen Stellen suchen muss.

LXDE greift auf die freedesktop.org Standards zurück, was ungewohnt erscheint, wenn man es bisher lediglich mit der Datei autostart im Ordner ~/.config/openbox/ zu tun hatte.

Anwendungen lassen sich bei Lubuntu global in /etc/xdg/lxsession/Lubuntu/autostart automatisch ausführen. Diese Datei sieht bei mir so aus.

@nitrogen --restore
@xscreensaver -no-splash
@xfce4-power-manager
@/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1

Wo sind Tint2 und Conky geblieben? Aus Gründen, die ich nicht nachvollziehen konnte, wurden beide trotz des Eintrags nicht gestartet. Die Alternative ist eine .desktop Datei, z.B. tint2.desktop, anzulegen, sie gemäß dem folgenden Muster zu editieren und dann nach ~/.config/autostart/ zu kopieren.

[Desktop Entry]
Encoding=UTF-8
Name=Tint2
Comment=Panel
GenericName=Tint2
Categories=GTK;Utility;
Exec=tint2
Icon=/usr/share/pixmaps/gksu.png
Terminal=false
Type=Application
NoDisplay=false
StartupNotify=true

Mehr Informationen dazu gibt es im Wiki von ubuntuusers.de unter dem Stichwort Menue.

Rootmenü

Mir gefällt das Openbox-Menü, weil ich hiermit schnellen Zugriff auf alle Anwendungen an jedem Punkt der Arbeitsfläche haben kann, indem ich nur die rechte Maustaste drücke. Im Zusammenspiel mit Tastenkürzeln ist das eine große Zeitersparnis. Zuerst muss man das Menü wie folgt aktivieren.

Rechsklick auf den Desktop -> Einstellungen der Arbeitsfläche -> Fortgeschritten -> Option „Menü mit Fenstermanager anzeigen“ aktivieren.

Um den Vorgang rückgängig zu machen, kann man pcmanfm --desktop-pref in einem Terminal ausführen.

Ein Nachteil ist aber am Anfang, dass man dieses Menü zum einen mit obmenu manuell an seine Vorstellungen anpassen muss. In der Regel ändere ich aber nur einige wenige Einträge von Hand, der Rest wird automatisch mit Hilfe des Debian-Menüs generiert. Nach der Installation von menu, trägt man noch folgende Zeilen an die passende Stelle in ~./config/openbox/lubuntu-rc.xml ein.

<!-- You can specify more than one menu file in here and they are all loaded,
       just don't make menu ids clash or, well, it'll be kind of pointless -->

<file>debian-menu.xml</file>
<file>menu.xml</file>

Die beiden Namen zwischen den tags verweisen auf die gleichlautenden Dateinamen in ~/.config/openbox/. Mit dem Befehl update-menus als normaler Benutzer wird das spezielle Debian-Menü neu generiert. Einziger Nachteil, wenn man es nicht global benutzt: Man muss nach dem Entfernen oder einer Neuinstallation von Software update-menus erneut ausführen, damit das Menü angepasst wird.

Download: Meine Openbox-Konfiguration
Kopieren nach:~/.config/openbox/

Ubuntu One und Software-Center

Ubuntu One und das Software-Center werden beide standardmäßig bei Lubuntu nicht vorinstalliert. Sie lassen sich aber schnell mit

aptitude install ubuntuone-client ubuntuone-control-panel software-center

nachinstallieren. Möchte man mit PCManFM Ordner zur Synchronisation freigeben, kann man sich einen zusätzlichen Menüeintrag im Dateimanager erstellen.

Rechtsklick auf einen Ordner -> Öffnen mit -> Befehlszeile -> u1sdtool --create-folder %f

Das Kommandozeilenprogramm u1sdtool lässt sich dann auch genauso zum Auflisten und Entfernen von Ordnern aus UbuntuOne benutzen.

u1sdtool --list-folder
u1sdtool --delete-folder "ID"

Lubuntu entwickelt zusätzlich zum normalen Software-Center noch eine leichtgewichtige Version, die schlicht Lubuntu-Software-Center heißt. Es lässt sich aus dem Lubuntu-Desktop PPA einbinden. Da es sich um eine Entwicklungsversion handelt, sollte man dementsprechend mit dem Paket umgehen. Zur Zeit bemerkt man deutlich das reaktionsfreudige Verhalten, einige der Funktionen des normalen Software-Centers wurden aber noch nicht integriert.

Fazit

Ich denke die größte Hürde bei der Umstellung auf einen klassischen Openbox-Desktop ist zum einen das Finden der passenden Stelle für den Autostart und das Anpassen des Rechtsklickmenüs. Der Rest ist Geschmackssache und schnell erledigt. Zum Schluss noch der Desktop ohne geöffnete Fenster.

Ein geschmackvolles Openbox-Thema

Ich hatte schon seit ein paar Wochen angedacht, ein neues Thema für meine Openbox Installation mit Archlinux auf dem Inspiron 4000 zu finden. Normalerweise hänge ich ziemlich lange an einer Kreation fest und investiere nicht zu viel Zeit in die wiederkehrende Neugestaltung meines Desktops. In der Regel greife ich auf gute Ideen von box-look.org zurück oder bediene mich bei der sehr guten Konfiguration von Crunchbang Linux.

Vor zwei Tagen entschied sich Urukrama erneut einen Jahresrückblick zu machen und präsentierte seine Desktops aus den Jahren 2010 und 2011.

Urukrama war vor ca. 3 Jahren mein Einstieg in die Welt der Fenstermanager und leichtgewichtigen Desktops und schon damals gefiel mir sein untrüglicher Sinn für geschmackvolle Themen. Ich habe mich also auch diesmal ein wenig inspirieren lassen.

Zuerst fiel mir eines seiner Hintergrundbilder auf, ein Gemälde von Caspar David Friedrich „Der Mönch am Meer“, weswegen ich auf der englischen Wikipedia Seite zum Künstler etwas ähnliches gesucht habe und schließlich das Bild „Mondaufgang über dem Meer“ heruntergeladen habe. Interessanterweise unterscheidet es sich vom Bild aus der deutschen Wikipedia, ein Kunstkenner sollte diesen Widerspruch mal aufklären. 🙂

Mir gefiel es auf jeden Fall und mit Hilfe von feh war es schnell als Hintergrundbild gesetzt.

Als nächstes bediente ich mich beim Alghattas-Openbox- und Gtk-Thema von Urukrama. Nachdem man es entpackt hat, lässt es sich mit obconf in eine spezielle Obt-Datei umwandeln und installieren. Die mitgelieferte „.gtkrc“-Datei sollte nach ~/.gtk-2.0.mine kopiert werden, wodurch die GTK-Einstellungen nach einem Neustart von Openbox automatisch wirksam werden.

Danach installierte ich noch die Elementary Icons mit LXappearance und schließlich passte ich diese conkyrc so an, dass Conky linksbündig, horizontal und transparent angezeigt wurde. Nur an Tint2 von Crunchbang hielt ich wie bisher fest. Mir gefällt es so einfach.

Gut, dass sich über Geschmack nicht streiten lässt. 🙂

Ein individuelles dmenu erstellen

Das gute dmenu wurde zwar primär für die Verwendung mit dem Fenstermanager dwm entwickelt, es lässt sich aber auch mit anderen kombinieren. Zum ersten Mal habe ich das dieses Jahr bei Crunchbang beobachtet, das auf Debian Squeeze und den Openbox-Fenstermanager setzt.

Doch zuerst einmal, so sieht dmenu für gewöhnlich aus.


Indem man die Anfangsbuchstaben des gesuchten Programms eintippt und das Ganze mit Tab vervollständigt, bewegt man sich in rasender Geschwindigkeit durch alle installierten Anwendungen, die im eigenen $PATH installiert sind. Programme werden danach durch Enter gestartet, fertig. Kein Warten, sehr effizient, Gnome-Do oder gar Unity und die Gnome-Shell werden dadurch zum Ausführen von Programmen überflüssig.

Normalerweise benötige ich bei Openbox und vergleichbaren Fenstermanagern nur das Rechtsklickmenü und ein paar Tastenkürzel. Mit dem Skript dmenu-bind.sh von Gatti Paolo lässt sich aus dmenu aber ganz leicht eine übersichtliche Menüstruktur erstellen.

Der Aufbau ist einfach und leicht nachzuvollziehen. Unter die Menüpunkte wie z.B. web werden der Name des Menüpunkts und der auszuführende Befehl geschrieben.

chromium "chromium"

oder

vim "urxvtcd -e vim"

In dem Menü kann man danach wie gehabt mit den Pfeiltasten und der Enter-Taste navigieren. Das Skript lässt sich z.B. in ~/.config/dmenu/dmenu-bind.sh abspeichern und in ~/.config/openbox/rc.xml oder mit Hilfe von obmenu an eine Taste binden.

<keybind key="A-F3">
  <action name="Execute">
    <startupnotify>
      <enabled>true</enabled>
        <name>dmenu-bind</name>
    </startupnotify>
        <command>~/.config/dmenu/dmenu-bind.sh</command>
  </action>
</keybind>

Das angepasste dmenu kann nun mit Alt+F3 aufgerufen werden.

Das gesamte dmenu-bind.sh Skript sieht so aus.

#!/bin/bash

#       Custom dmenu-bind.sh
#
#       Copyright 2009, Gatti Paolo (lordkrandel at gmail dot com)
#       Distributed as public domain.

#       09.28.2009 -- First release
#       09.29.2009 -- Submenu support added

if [ "$1" == "" ]; then
    title="MainMenu"
    menu=( 
#               labels            commands
#           Main =========================================
                web               "$0 web"
                system            "$0 system"
                tools             "$0 tools"
                settings          "$0 settings"
    )
else
    case $1 in
    web)
        title="web"
        menu=( 
#           Web ==========================================
                firefox           "firefox" 
                lostirc           "lostirc" 
         )
    ;;
    tools)
        title="tools"
        menu=( 
#           Tools ========================================
                gedit             "gedit" 
                geditsudo         "gksudo gedit" 
         )
    ;;
    system)
        title="system"
        menu=( 
#           System =======================================
                home              "pcmanfm" 
                tilda             "tilda" 
                synaptic          "gksudo synaptic" 
         )
    ;;
    settings)
        title="settings"
        menu=( 
#           Settings =====================================
                volume            "$0 volume" 
                dmenu             "gedit $0" 
                obconf            "obconf" 
         )
    ;;
    volume)
        title="Volume"
        menu=( 
#           Volume controls ==============================
                0%                "amixer sset Master 0" 
                50%               "amixer sset Master 50" 
                70%               "amixer sset Master 70" 
                100%              "amixer sset Master 100" 
         )
    ;;

    esac
fi

for (( count = 0 ; count < ${#menu[*]}; count++ )); do

#   build two arrays, one for labels, the other for commands
    temp=${menu[$count]}
    if (( $count < ${#menu[*]}-2 )); then
        temp+="n"
    fi
    if (( "$count" % 2 == "0" )); then
        menu_labels+=$temp
    else
        menu_commands+=$temp
    fi

done

select=`echo -e $menu_labels | dmenu -p $title -nb black -nf white -sb darkblue -sf white`

if [ "$select" != "" ]; then

#   fetch and clean the index of the selected label
    index=`echo -e "${menu_labels[*]}" | grep -xnm1 $select | sed 's/:.*//'`

#   get the command which has the same index
    part=`echo -e ${menu_commands[*]} | head -$index`
    exe=`echo -e "$part" | tail -1`

#   execute
    $exe &
fi

Openbox 3.5 und ein paar Änderungen

Seit Anfang Oktober ist Openbox 3.5 in Debian Unstable und heute gab es eine weitere Aktualisierung. Da Openbox sowohl auf dem Inspiron 4000 als auch auf dem maximalen Spielesystem mit Debian Sid läuft, versuche ich bei der weiteren Entwicklung am Ball zu bleiben. Eine Sache, an die man vielleicht nicht zu oft denkt, ist aptitude changelog öfter zu benutzen. Regelmäßig gibt es hier doch einige interessante Kommentare und Informationen.

Wenn man zur Zeit wie ich Debian Unstable und Openbox benutzt, sollte man auf jeden Fall seine Konfigurationsdateien im Blick behalten. Seit Version 3.5 haben sich einige Syntaxregeln in der rc.xml geändert. Neu hinzugekommen ist sogar eine Datei namens environment, in der globale Einstellungen wie die Sprache speziell für Openbox geändert werden können. Im Moment sehe ich aber keinen großen Bedarf dort irgendetwas hineinzuschreiben.

Die veränderten Regeln in der rc.xml scheinen keine Auswirkungen auf die bestehenden Einträge zu haben. Sollte sich hier aber etwas merkwürdig verhalten, liegt es mit Sicherheit an dem neuen Update. Des Weiteren heißt es nun nicht mehr autostart.sh sondern nur noch autostart. Hier scheint aber das neue Openbox 3.5 noch ein Stück tolerant zu sein.

Doch was sehen meine entzückten Augen da: Das Openbox-Menü kann nun auch Icons darstellen. Endlich. 🙂