dwm::Konfiguration und Scripte

Dynamic Window Manager (dwm)

dwm-Desktop
dwm-Desktop: Firefox 3, Emacs, rxvt

Seit einiger Zeit bin ich vom Sommer 2006 nutze ich den Windowmanager dwm, den kleinen Bruder vom wmii. dwm ist die Abkürzung für »Dynamic Window Manager«. Ebenso wie wmii ist dwm ein schlanker Fenstermanager, der – ähnlich wie Larswm, Ion, evilwm und ratpoison – auf möglichst effektive Bedienbarkeit mit der Tastatur optimiert ist. Jedoch verzichtet dwm auf die Integration einer Skriptsprache, ja selbst auf eine klassische Konfigurationsdatei: Die Konfiguration von dwm ist ausschließlich durch Anpassung des Quelltextes möglich.

»Dynamic window management states that it is the window manager's job to manage windows – and not the user's job to have to set up some specialized layout that will only work for one specific work scenario. This has been the larswm motto for a long time. In contrast to static window management, the user rarely has to think about how to organize windows, no matter what he is doing or how many applications are running at the same time. The window manager adapts to the current environment and helps the user manage and mold it to his needs, rather than forcing it to use a preset, fixed layout and trying to shoehorn all windows and applications into it.« (suckless.org Website)

Während mir die Konfigurierbarkeit von wmii anfangs noch vorteilhaft erschien, merkte ich bald, dass sie mehr Zeit verschlang als dass sie mich produktiver werden ließ. Nach einer kurzen Eingewöhnungsphase in dwm lernte ich den simplen und logischen Aufbau dieses Fenstermanagers schätzen.

dwm verwaltet Fenster in drei Modi: tiled, monocle und floating. Im tiled-Layout wird zwischen »Master-« und »Stacking-Bereich« unterschieden. Der Master-Bereich enthält das Fenster, dem momentan die Hauptaufmerksamkeit zukommt. Alle anderen Fenster werden im Stacking-Bereich dargestellt. Im monocle-Layout werden alle Fenster auf Bildschirmgröße maximiert. Im floating-Layout können Fenster beliebig in der Größe verändert und verschoben werden. Dialog-Fenster werden immer als floating verwaltet, unabhängig vom gerade verwendeten Layout.

Fenster werden durch Tags gruppiert. Dabei kann ein Fenster ein oder mehrere Tags zugewiesen bekommen. Wenn diese Tags zur Anzeige ausgewählt werden, werden die entsprechenden Fenster dargestellt.

In einer kleinen Statuszeile werden alle vorhandenen Tags, das gewählte Layout sowie der Titel des aktiven Fensters angezeigt.

Einige meiner Plugins für wmii habe ich für die Benutzung unter dwm umgeschrieben. Dabei sind auch einige Fehler berichtigt worden, die in der früheren Version noch vorhanden sind. wmii-Nutzer sollten also meine Änderungen abgleichen (mir fehlt für diese Arbeit die Lust und eine funktionierende Testumgebung). Mauricio Fernandez' flexiblen, komplett über Tastatur bedienbaren Bookmark-Manager habe ich leider nicht portiert. Die erweiterte Lesezeichenfunktionalität von Firefox 3 leistet zusammen mit dem Foxmarks-Plugin jedoch recht gut Ersatz. Leider bietet auch dieser Bookmark-Synchronisierer nicht die Möglichkeit, die Bookmarks an einer beliebigen Stelle im Netz zu speichern, sondern setzt die Einrichtung eines Accounts bei einem proprietären Dienst (foxmarks.com) voraus.

Meine Scripte erfordern z. T. die Tools dmenu und dzen sowie den Music Player Daemons (mpd) und seinen den Client mpc. Zunächst das Script dwmrp.rb, das eine Statusanzeige bestehend aus dem gerade gespielten Song (»now playing«), der Lautstärke, der Außentemperatur sowie eine Zeitanzeige in eine Fifo-Datei schreibt, die von dwm eingelesen und als Status angezeigt werden kann:

   Banda Bassotti - Viva zapata (37%) | 86% | 17 C | 22.07.2008 20:36:27

drmrp-0.0.1.rb || Download als html | txt

Für die Wettervorhersage wird ein Service des US-amerikanischen nationalen Wetterdienstes genutzt, der die weltweit gesammelten Wetterdaten per Webinterface zur Verfügung stellt. Von Benutzerseite ist lediglich der ICAO-Code der nächstgelegenen Wetterstation bzw. des Flughafens, an den diese angeschlossen ist einzustellen. Der Code besteht aus einer vierstelligen Buchstabenfolge, von denen der erste (USA) bzw. die ersten beiden (der Rest der Welt) Buchstabe die Länderkodierung darstellen (etwa K für USA und ED für Deutschland), die restlichen den Flughafen bestimmen. Für meine Heimatstadt Hannover lautet der Code etwa EDDV, was voreingestellt ist. Der Flughafen kann eingestellt werden über die Variable metar in Zeile 33:

  metar = "eddv"
Eine Liste der verfügbaren ICAO-Codes findet sich hier.

Bei Verwendung von dzen wäre es leicht möglich, die Temperaturanzeige anklickbar zu machen und den Inhalt von der Fifo-Datei i. d. R. /tmp/dwm.weather-0.0 darzustellen.

Das Clipboard-Script merkt sich die letzten Selektierungen und stellt diese zur Anwahl bereit. Am ehesten lässt sich seine Funktionalität vielleicht anhand einer animierten Grafik aufzeigen:

Clipboard-Animation

Die verschiedenen Selektierungen können mit den Cursortasten angewählt werden. Zusätzlich kann mittels einer inkrementellen Suche die Auswahl eingegrenzt werden. Mit Return wird die Auswahl abgeschlossen.

Das Script setzt die Kommandozeilentools xclip und sselp voraus.

Ein weiteres Feature ist die Ausgabe der X-Window-Auswahl auch über einen Tastaturshortcut. Das setzt allerdings ein kleines C-Programm (updated: v0.1) voraus, das zunächst kompiliert werden muss. Dieser Erweiterung kann dann in der config.h eine Tastenkombination zugeordnet werden.

clipboard-0.1.rb || Download als html | txt

Zusätzlich zu dem Clipboard-Programm, das als Daemon im Hintergrund läuft, wird noch ein kleines Wrapper-Programm benötigt, dass ihm im Bedarfsfall ein Signal sendet, der einen Auswahldialog auslöst.

clip_select.rb || Download als html | txt

Die Skripte verteile ich unter den Bedingungen der GNU General Public License Version 2 oder eine spätere, von der Free Software Foundation herausgegebene, Version.

Interessant ist für die eine oder den anderen vielleicht noch meine dwm-Konfigurationsdatei (für dwm 5.1) sowie meine .Xsession, die die nötigen Dateien lädt. Meine Konfigurationsdateien sind etwas eigen, da ich zum einen kein vi-Nutzer bin und mich nicht so recht an die Navigation mittels der Tasten hjkl gewöhnen kann, mit der standardmäßig die Fenster zwischen den Columns und innerhalb dieser bewegt und der Fokus umgeschaltet wird. Da ich mit zehn Fingern schreibe, ruht der rechte Zeigefinger auf dem j und müßte umgreifen, um das h zu erreichen. Ich bevorzuge daher die (auf deutschen Tastaturen) jklö-Tasten zum Navigieren. Entsprechend sind diese Tasten umbelegt. Zudem schreibe ich nicht mit dem Standard-QWERTY-Layout, sondern setze auf eine alternative, auf die deutsche Sprache optimierte Tastaturbelegung: das von Hanno Behrens entwickelte NEO-Tastaturlayout. In diesem Zusammenhang könnte auch meine xmodmap-Datei von Interesse sein, aus Gründen, derer ich mich nicht mehr recht erinnere, gibt es sogar deren zwei.

config.h für dwm 5.1 || Download als html | txt

.Xsession || Download als html | txt


www.cacert.org
© 2008 Oliver Heins <olli@sopos.org>
GnuPG-Key: http://www.sopos.org/pgp/olli.asc
GnuPG-Fingerprint: F27A BA8C 1CFB B905 65A8 2544 0F07 B675 9A00 D827
Letzte Änderung dieser Seite: Mittwoch, 6. August 2008, 23:14.