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

CrunchBang + ArchLinux = ArchBang

Es ist ArchBang Zeit. Als ich meine Liste zum Ausprobieren von leichtgewichtigen Distributionen schrieb, bezeichnete ich noch Crunchbang als „das andere Bang“. Wer war nun zuerst da? Archbang versteht sich selbst als Archlinux Derivat, welches dem Nutzer die Mühe abnimmt, Pakete für den Openbox Desktop selbst zu installieren und zu konfigurieren.

Archbang hat kaum eigene Dokumentation zu bieten und deshalb verwundert es auch nicht, dass neue Nutzer schnell an das herausragende Wiki von Archlinux verwiesen werden.

Ohne Umschweife, ist Archbang ein anderes Archlinux oder gar eine besondere neue Distribution? Nein.

Kurz zusammengefasst lässt sich der archtypische Installationsprozess durch Archbang ein wenig abkürzen, Paketquellen und Pakete müssen logischerweise nicht ausgewählt werden. Der Rest ist vollkommen identisch zur gewohnten Textinstallation.

Wenn man wie ich vor kurzem einen längeren Blick auf CrunchBang Linux werfen konnte, fallen sofort die frappierenden Ähnlichkeiten auf. Schwarz gehaltenes Desktopthema, Openbox mit einem nur in wenigen Punkten abgeänderten Rechtsklick-Menü und eine Konfiguration, die in vielen Punkten Crunchbang mehr als ähnlich ist.

Unterschiede in der Auswahl der vorinstallierten Anwendungen sind ebenfalls nur gering. Größte Auffälligkeiten sind MPlayer anstelle von VLC, das LXTerminal, geeqie als Bildbetrachter und das umfangreiche GIMP im Gegensatz zu dem auf einfache Grafikaufgaben beschränkten, aber dadurch auch schnelleren, MTPaint.

Natürlich ist das alles kein Zufall sondern auch ein wichtiger Bestandteil von Open Source. Mittlerweile gibt es vier Hauptentwickler des Projekts und irgendwann muss wohl dem Projektleiter und Initiator Crunchbang Linux so gut gefallen haben, weshalb er kurzerhand das ganze Konzept auf seine Lieblingsdistro Archlinux angewendet hat.

Im Gegensatz zu Crunchbang, welches auf das stabile Debian Squeeze setzt, hat Archbang sich die Vorteile einer rollenden Distribution wie Archlinux zu eigen gemacht. Einmal installiert und man erhält fortlaufend immer die neusten Versionen der Programme.

Wie halte ich es nun mit Archbang? Ich denke, wenn man eher zu Archlinux neigt und eine vorgefertigte, leichtgewichtige Distribution auf Basis von Openbox und Archlinux sucht, dann ist Archbang genau das Richtige. Da Archlinux-Nutzer sowieso zu den „Tu-es-selbst“-Kandidaten gehören, werden die sich auch kaum an der fehlenden Dokumentation stören und sich gleich am umfangreichen Fundus des Mutterprojekts bedienen.

Ist man mit Debian zufrieden, fällt es sicher leichter sich für Crunchbang zu entscheiden, wobei um das Projekt herum schon eine sehr aktive Gemeinschaft entstanden ist. Die Dokumentation ist zwar nicht perfekt, aber doch deutlich besser als bei Archbang. Persönlich neige ich mehr zu Crunchbang, nicht nur weil ich Debian favorisiere, sondern weil ich auch denke, dass Ruhm und Ehre für eine hervorragend konfigurierte Openbox-Distribution bei Crunchbang liegen sollte.

Beide Distributionen sind gleichermaßen geeignet, wenn man ein ressourcenschonendes Betriebssystem sucht. Am Ende ist die Frage scheinbar wirklich nur: Arch oder Debian?

Debian und Openbox in schick: Crunchbang Linux

Auf dem Weg meine kleine Liste mit leichtgewichtigen Distributionen abzuarbeiten, bin ich nun bei Crunchbang Linux, einem Debian-Derivat, angelangt. „Wie kommt man nur auf einen solchen Namen?“, dachte ich mir.

Als ich auf der offiziellen Homepage zum Download der neuesten Version mit dem Codenamen „Statler“ steuerte, musste ich das erste Mal schmunzeln. Sinngemäß wurde dort gewarnt: „Crunchbang wird nicht für jemanden empfohlen, der ein stabiles System benötigt. Cruchbang kann aus deinem Computer CRUNCH! BANG! machen“, ihn also sprichwörtlich mit einem lauten Krachen in seine Einzelteile zerlegen.

Ich ließ mich von diesem doppelten Netz mit Boden der Entwickler nicht abschrecken, lud die 32 bit Openbox Variante mit Bittorrent herunter und gab der Distribution eine Chance.

Crunchbang Linux ist als Live-CD konzipiert und setzt als Grundlage für die Distribution auf das Debian-Live-Projekt. Des weiteren wird eine grafische- bzw. Textinstallation angeboten, die identisch mit den von Debian bekannten Werkzeugen ist. Da alle wichtigen Pakete sich schon auf der CD befinden, dauerte die ganze Installation bei mir nur wenige Minuten.

Nach dem Login wird man durch das dunkel gehaltene Thema von Cruchbang, den Openbox-Fenstermanager, Tint2 als Panel und den Systemmonitor Conky begrüßt. Besonders gut gefiel mir das optisch und funktional perfekt eingerichtete Openbox-Menü. Das Thema scheint übrigens eine Abwandlung von 1977 Openbox zu sein. Bemerkenswert ist auch das nach dem Start ausgeführte Konfigurationsskript, mit welchem sich Crunchbang je nach Wunsch weiter anpassen lässt. Eine gute Idee.

Anwendungen sind manuell in die entsprechenden Kategorien einsortiert, es gibt einen Eintrag für zuletzt geöffnete Dateien und einen Abschnitt, der sich ausschließlich mit den Einstellungen und Konfigurationsdateien beschäftigt. Alles lässt sich direkt aus dem Openbox-Menü heraus editieren. Zu den Programmen ist gleich auch noch die entsprechende man-Seite verknüpft.

Crunchbang macht hierbei von Pipe-Menüs regen Gebrauch. Insgesamt betrachtet bietet ein solches Openbox-Menü die gleichen Eigenschaften wie das dreigeteilte System von Anwendungen/Orte/System des Gnome 2 Panels. Indikatoren, Applets und die Uhr befinden sich hingegen im Tint2-Panel, welches so eingerichtet ist, dass es sowohl als Umschalter zwischen den beiden virtuellen Arbeitsflächen und als Ablage für geöffnete Programme dient.

Der Systemmonitor Conky liefert die wichtigsten Informationen am oberen rechten Rand und zeigt gleichzeitig auch noch eine Übersicht über die voreingestellten Tastaturkürzel.

An vorinstallierten Programmen lässt Crunchbang nichts zu wünschen übrig. Thunar als Dateimanager, VLC als Medienabspieler, Chromium als Browser sind standardmäßig dabei. Eine vollständige Liste gibt es hier. Neu für mich waren der Terminator Terminal und Viewnior als Bildbetrachter.

Vergeblich suchte ich hingegen ein E-Mail-Programm. Dieses lässt sich aber ganz leicht wie von Debian und Ubuntu gewohnt mit Hilfe von Apt nachinstallieren. Crunchbang ist vollständig kompatibel zu Debian „Squeeze“, weswegen man sich über die Eingangs erwähnte Warnung nicht allzu große Sorgen machen muss.

Crunchbangs Eigenleistung erstreckt sich hauptsächlich auf neuere Versionen von großen Anwendungen wie Chromium, eine sehr gute Openbox-Vorkonfiguration und proprietäre Codecs, die aus lizenzrechtlichen Gründen nicht bei Debian dabei sein können. Letzteres Problem wird Crunchbang ebenso treffen, sollte es jemals den gleichen Stellenwert wie das Debian-Projekt erreichen und vielleicht sogar kommerzielle Ambitionen entwickeln.

Über die Liste der Anwendungen lässt sich natürlich streiten. Mir persönlich gefiel sie, auch wenn man im Sinne von Geschwindigkeit und Speicherverbrauch auch andere Alternativen hätte wählen können. Crunchbang Linux hat sich aber nach eigenen Angaben auch nicht das Ziel gesetzt, primär auf allen alten Computern zu funktionieren.

Wie so oft bei Debian-Derivaten fällt die große Übereinstimmung mit dem Original auf. Prinzipiell finde ich es sehr gut, dass Debian Stable als Unterbau gewählt wurde und man sich dadurch auf vertraute Konzepte verlassen kann. Auch Crunchbang definiert Debian nicht neu. Mit Vorkenntnissen zu Openbox, Tint2 und Conky lässt sich ein vergleichbares Ergebnis mit Debians Netzinstallation und zusätzlich installierten Einzelanwendungen ohne weiteres erreichen.

Der Unterschied besteht darin, dass einem diese Arbeit durch Crunchbang Linux schon abgenommen wurde, weswegen diese inoffizielle Debian-Distribution durchaus Sinn macht. Wer gerne ein alternatives Desktopkonzept kennenlernen und den Unterschied zwischen Openbox und Unity auf dem gleichen Rechner spüren möchte, ohne dabei auf gewohnte Anwendungen zu verzichten, sollte CRUNCH! BANG! auf seinen Rechner loslassen. #! 😈

Leichtgewichtige Distributionen zum Ausprobieren

Kurz notiert, ein paar Distributionen, die ich im Laufe der nächsten Wochen und Monate näher kennenlernen möchte. Einige davon haben sich schon auf den alten Laptops bewährt, der Rest setzt sich aus Distributionen zusammen, die immer wieder genannt werden, wenn es um sogenannte leichtgewichtige Software geht. Debian bietet mir schon heute hervorragende Möglichkeiten wirklich jeden noch so alten Rechner zum Laufen zu bringen.

Trotzdem sollte der Blick immer mal wieder über den Tellerrand schweifen. Leichtgewichtig ist für mich nicht alles. Die ideale Distribution läuft nicht nur auf jedem Rechner, sondern lässt sich auch von Menschen bedienen, die nicht schon seit Jahrzehnten in Assembler programmieren und das ISO/OSI Referenzmodell herunter beten können.

Update: Hier gibt es einen Zwischenstand zu meinen favorisierten und leichtgewichtigen Freien Betriebssystemen

Archlinux

Arch gehört seit mehr als zwei Jahren immer wieder zu den Linuxdistributionen, die meinen Weg kreuzen, wenn es darum geht ein möglichst leichtes i686 System aufzusetzen. Schon oft bin ich im ArchLinux Wiki gelandet oder auf Foreneinträge gestoßen, die Arch als die leichtgewichtige Linuxdistribution preisen. In der Tat konzentriert sich ArchLinux darauf nach dem K.I.S.S. Prinzip zu agieren, verschwendet keine Ressourcen an zusätzliche grafische Konfigurationswerkzeuge und zeichnet sich seit langem durch eine Gemeinschaft aus, die Wert auf effiziente Software legt.

ArchBang

ArchBang basiert auf ArchLinux und nutzt in der Standardkonfiguration Openbox als Fenstermanger. Meine Hoffnung ist, dass ArchBang die Installation und Konfiguration einfacher macht. Inwiefern sie sich gegenüber dem Original auszeichnet und hier Akzente setzt bleibt abzuwarten.

ConnochaetOS

Basiert auf ArchLinux, hat aber den großen Vorteil auch auf Rechnern mit i586, sprich Pentium I, und älterer Hardware zu funktionieren.

CrunchBang

Ein anderes Bang. Im Gegensatz zu Archbang setzt Crunchbang auf Debian als Unterbau, konzentriert sich aber ebenfalls auf den Openbox Fenstermanager. Da ich auf meinem Dell Inspiron 4000 schon Debian Sid mit Openbox einsetze, bin ich gespannt wie sich Crunchbang auf dem gleichen Rechner anfühlen wird.

Crux

K.Mandla vergleicht den Performancegewinn zwischen ArchLinux und Crux mit dem Umstieg von Ubuntu auf ArchLinux. Er selbst setzt Crux auf den ältesten Pentium I Rechnern ein. Crux ist sicher nichts für Linuxeinsteiger, aber auch eine gute Möglichkeit tiefer in Linux einzusteigen.

Lubuntu

Lubuntu ist meines Wissens zur Zeit das leichtgewichtigste Derivat der Ubuntu Distribution. Als Desktopumgebung kommt LXDE zum Einsatz, welches bekanntermaßen auf Openbox als Fenstermanger zurückgreift. Lubuntu verspricht die Bedienungsvorteile von Ubuntu mit den Vorteilen des ressourcenschonenden LXDE.

PuppyLinux

Eine Distribution mit dem Ziel alten Computern neues Leben einzuhauchen. Ziel von PuppyLinux ist es, leicht zu installieren zu sein, komplett im RAM zu laufen und ohne Wenn und Aber ältere Rechner produktiv nutzen zu können.

Slitaz

Zur Zeit definitiv eine meiner Lieblingsdistributionen. Slitaz schafft es nachweislich selbst einen 15 Jahre alten Toshiba Satellite 220 CS mit nur 16 MB RAM anzutreiben. Darüber hinaus bietet Slitaz aber auch eine sehr effiziente 30 MB große Live CD und gehört sicherlich zu den Top Distributionen, wenn es um alte Hardware, leichtgewichtige Software und Maximalismus geht. Ich warte gespannt auf die kommende Veröffentlichung Slitaz 4.0.

Das soll nicht alles gewesen sein. Gentoo oder Slackware basierte Distributionen gehören sicherlich mittelfristig noch auf den Merkzettel. Prinzipiell lässt sich jede Distribution auf die Liste setzen, welche einen sparsamen Fenstermanger wie Fluxbox, IceWM, Openbox, Awesome oder ähnliches einsetzt. Für den Anfang muss das aber erst einmal reichen. 🙂