titel_photocase.jpg

© photocase.com

WIMP ist tot

Window-Manager Wmii

01.01.2006
Moderne Window-Manager setzen ganz auf die Bedienung mit der Maus. Solche, die sich über die Tastatur bedienen lassen, bieten entweder kaum Features oder sind zu kompliziert für Einsteiger. Wmii vereint die Gegensätze.

WIMP ("Windows, Icons, Menus, Pointing device") heißt heute die gängige Methode, um mit grafischen Oberflächen zu interagieren: Dabei bedient man Menüs, Fenster und – meist bunte – Schaltflächen mit der Maus. Anselm Garbe, der Autor von Wmii (Window Manager Improved 2), hält diese Methode für ineffizient und überholt.

Bei Wmii handelt es sich um eine komplette Neuentwicklung des Window-Managers Wmi [1] in der Programmiersprache C. Anders als die meisten anderen Arbeitsumgebungen lässt sich Wmii wie sein Vorgänger Wmi komplett per Tastatur bedienen. Die Maus ist überflüssig, Sie verwenden sie auf Wunsch aber weiterhin.

Konzepte

Tastaturgesteuerte Window-Manager gibt es schon seit Jahren, jedoch bündelt Wmii die Eigenschaften altbekannter Entwicklungen wie Ratpoison [2], Ion [3] und Larswm [4]: Er nutzt beispielsweise verschiedene Layouts und bildet Fenster mit Reitern (Tabbing) ab. Eine Neuerung: Wmii lässt sich komplett über ein Socket-basiertes, virtuelles Dateisystem steuern. Der Datei-Manager ist zudem modular aufgebaut: Wmibar erzeugt die Statusbar, Wmimenu das Menü. Wmikeys zeichnet für die Shortcuts verantwortlich, Wmifs ist für das Dateisystem und Wmir für die Manipulation des Dateisystems zuständig.

Installation und Konfiguration

Für die Installation benötigen Sie das Paket wmii-2.tar.bz2, das Sie im Download-Bereich der Wmi-Projektseite [4] finden. Diese als Wiki konzipierte Seite können Benutzer beliebig erweitern. Dort gibt es auch verschiedene Pakete für Debian, Gentoo oder Arch-Linux. Sie packen das Paket über das Kommando tar xvzf wmii-2.tar.gz aus, wodruch das Unterverzeichnis wmii-2 entsteht. Hier liegt die Konfigurationsdatei config.mk liegt, die Sie gegebenenfalls an Ihre Bedürfnisse anpassen. Wmii verzichtet bewusst auf ein configure-Skript, allerdings genügen die Standardeinstellungen in der Datei den meisten Ansprüchen.

Via make und make install kompilieren Sie das Programm, wozu Sie lediglich den C-Compiler GCC und die Header-Dateien von X benötigen (unter Debian das Paket libx11-dev, unter Suse 9.3 xorg-x11-devel). Um den Window-Manager zu starten, erzeugen Debian-Nutzer eine Datei .xsession im Home-Verzeichnis und tragen dort die in Listing 1 aufgeführten Zeilen ein. Um Wmii in den Standard-Anmelde-Manager von Suse 9.3 zu integrieren (Abbildung 1), legen Sie in /usr/share/xsessions eine Datei mit dem Namen wmii.desktop an, in die Sie die Zeilen aus Listing 2 übertragen.

Abbildung 1: Um Wmii als Window-Manager in den Anmelde-Manager von Suse 9.3 zu integrieren, legen Sie im Verzeichnis /usr/share/xsessions eine Datei wmii.desktop an.

Listing 1

#!/bin/sh
exec /usr/local/bin/wmii

Listing 2

[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=wmii
TryExec=wmiiwm
Name=wmii
Comment=window manager improved 2

Erste Gehversuche

Nach dem ersten Start erscheint zunächst ein Fenster mit einem Tutorial, das Sie aufmerksam lesen sollten; anschließend greifen Sie selbst in die Tasten (Abbildung 2). Mit [Alt]+[T] rufen Sie ein Terminal auf, mit [Strg]+[Alt]+[Y] erzeugen Sie neue Desktops ("Pages") und wechseln mittels [Alt]+[H] zwischen diesen hin und her. Via [Alt]+[Umschalt]+[P] gelangen Sie in den Pager-Modus, der alle Desktops in einer Übersicht anzeigt und es ermöglicht, direkt zu diesen zu wechseln. Zum Schließen eines Fensters drücken Sie [Strg]+[Alt]+[C].

Abbildung 2: Wmii vorkonfiguriert nach dem ersten Starten: Ein Tutorial hilft Ihnen bei den ersten Schritten mit dem tastaturgesteuerten Window-Manager Wmii.

Das Standard-Layout nennt sich "tiled"-Layout (siehe Kasten "Layouts"), was bedeutet, dass sich die Fenster automatisch den auf dem Desktop vorhandenen Platz teilen. Mit [Alt]+[Eingabe] verschieben Sie ein ausgewähltes Fenster aus dem kleinen Rahmen in den großen Rahmen – unter Wmii heißt das "zoomen". Wollen Sie temporär ein Fenster auf dem ganzen Bildschirm sehen, tippen Sie [Alt]+[M] zum Maximieren der Seite. Das Minimieren funktioniert ebenso. [Alt]+[Tab] setzt den aktuellen Fokus auf das nächste Fenster.

Layouts

Wmii bietet verschiedene Bildschirm-Layouts an, die jeweils nur für einen virtuellen Desktop gelten.

Tiled-Layout

Das "tiled"-Layout wurde bereits in Larswm implementiert. Es räumt einem Fenster den Groteil des Platzes auf dem Desktop ein, die anderen Fenster müssen sich in der Rest teilen (Abbildung 3). Sie aktivieren dieses Layout mit der Tastenkombination [Alt]+[Umschalt]+[T].

Abbildung 3: Wmii mit "tiled"-Layout, das Sie über Alt+Umschalt+T aktivieren. Unten ist das Wmii-interne Menü zu sehen.

Grid-Layout

Mittels [Alt]+[Umschalt]+[G] starten Sie das "grid"-Layout. Es teilt allen Fenstern gleich viel zu Platz und ordnet die Fenster in Form eines Gitters (engl.: "grid") an.

Maximized-Layout

Drücken Sie [Alt]+[Umschalt]+[M], werden alle Fenster maximiert dargestellt, anschließend wechseln Sie mit [Alt]+[Tab] zwischen ihnen hin und her.

Floating-Layout

Das "floating"-Layout benutzen die meisten Window-Manager und Desktop-Umgebungen. Es ermöglicht den Applikationen, ihre Fenstergröße selber zu bestimmen. Für Bildbearbeitungsprogramme wie Gimp sollten Sie unbedingt dieses Layout verwenden.

Den unteren Bildschirmrand nimmt die Statusleiste ein. Sie beinhaltet eine Nummer, die den aktuellen Desktop anzeigt; dahinter steht ein Buchstabe als Abkürzung für das Layout und ein weiterer für den aktuellen Shortcut-Modus (n für "normal", r für "resize", m für "move" und b für "bare"). Daneben befindet sich ein www-Button, der einen Browser öffnet, sobald Sie ihn anklicken. Auch er ist frei konfigurierbar und zeigt zudem ein spezielles Verhalten: Durch einen Rechtsklick auf www öffnet sich Google und sucht nach dem zuvor in einem beliebigen Programm markierten Text. Durch einen Klick mit der mittleren Taste interpretiert Wmii den ausgewählten Text als URL. Auf der rechten Seite der Statusleiste sehen Sie das Datum und die Systemauslastung. An dieser Stelle erscheinen auch die Ausgaben von Programmen erscheinen, so dass Sie bei Bedarf auch das Ergebnis eines selbst geschriebenen Skripts dort betrachten können.

Drücken Sie die Tasten [Strg]+[Alt]+[P], so erscheint über der Statusleiste eine Eingabezeile: Sie ermöglicht, externe Programme aufzurufen und vervollständigt dabei die Eingaben sinnvoll. Dies funktioniert über [Strg]+[Alt]+[A] auch für interne Befehle, die den Window-Manager steuern. Richtungsaktionen nehmen Sie in Wmii stets mit den Tasten [H],[J],[K] und [L] vor (wie in Vi). Dabei steht [H] für links, [J] für unten, [K] für oben und [L] für links.

Möchten Sie über die Tastatur die Größe eines Fensters ändern, drücken Sie [Strg]+[Alt]+[R] und eine der Richtungstasten. Um den Vergrößerungsmodus zu beenden, benutzen Sie [Esc] in alter Vi-Manier. An dieser Stelle ist unschwer zu erkennen, dass Wmii verschiedene Modi besitzt, die denen des Editors Vi sehr ähneln. Zusätzlich gibt es einen Modus, um Fenster zu verschieben, den Sie mit [Strg]+[Alt]+[M] aufrufen. In welche Richtungen Sie die Fenster bewegen, bestimmen Sie wiederum mit den Richtungstasten.

Tabelle 1: Wichtige Wmii-Shortcuts

Shortcut Bedeutung
[Alt]+[Y] Öffnen eines neuen Desktops
[Alt]+[H],[L] Wechseln zwischen den Desktops
[Alt]+[T] Terminal starten
[Strg]+[Alt]+[C] Fenster schließen ("close")
[Strg]+[Alt]+[A] Interner Kommandomodus
[Strg]+[Alt]+[P] Externer Kommandomodus
[Strg]+[Alt]+[R] Fenstergröße ändern ("resize")
[Strg]+[Alt]+[M] Fenster verschieben ("move")
[Alt]+[D] Fenster verstecken ("detach")
[Alt]+[A] Fenster zurückholen ("attach")
[Alt]+[Tab] Umschalten zwischen den Fenstern
[Strg]+[Alt]+[Q] Abmelden

Das virtuelle Dateisystem

Wmii verfügt über ein virtuelles Dateisystem (VFS, "virtual filesystem"), über das Sie den Window-Manager über Befehle und Skripts vollständig steuern können, ähnlich dem Procfs von Linux. Auch die Tastatur-Shortcuts setzen nur Befehle um, die letzten Endes mit dem VFS arbeiten.

Um aus dem VFS zu lesen und hinein zu schreiben, verwenden Sie das mitgelieferte Programm wmir. Mit dem Kommandozeilenparameter read lesen Sie, mit write schreiben Sie in das Dateisystem und über create erzeugen Sie neue Einträge, wie Dateien und Verzeichnisse. So zeigt wmir read / das Wurzelverzeichnis des Dateisystems an. Der Umgang mit dem VFS ist anfangs ein wenig gewöhnungsbedürftig, lässt sich aber schnell erlernen. Um etwa dem ausgewählten Fensterrahmen eine andere Farbe zu geben, schreiben Sie:

wmir write /wm/page/sel/mode/sel/sel-style/bg-color '#FF00FF'

Möchten Sie beispielsweise das aktuelle Fenster maximieren, dann erreichen Sie dies mittels des Kommandos:

wmir write /wm/page/sel/ctl 'select zoomed'

Tabbing-Modus

Das so genannte "Tabbing" ermöglicht, mehrere (Anwendungs-)Fenster in einem Rahmen ("Frame") zusammenzufassen, wobei Sie jedes einzelne über einen Reiter erreichen. Um das Tabbing zu nutzen, müssen Sie den aktuellen Rahmen entsperren ("unlock"), sodass Sie mehrere Fenster darin platzieren können. Dies geschieht über [Alt]+[U].

Starten Sie nun anschließend mit [Alt]+[T] ein neues Terminal, befindet es sich anschließend im selben Rahmen – die Titelleiste des Rahmens teilt sich entsprechend. Um zwischen den beiden Fenstern zu wechseln, verwenden Sie jetzt [Alt]+[Shift]+[Tab] anstelle der normalen Tastenkombination. Da es sich nur um einen Modus handelt, arbeitet diese Funktion mit allen Layouts zusammen (Abbildung 4). Entsperren Sie mit [Alt]+[Shift]+[U] den Rahmen wieder, um zu verhindern, dass sich neue Fenster ebenfalls darin öffnen.

Abbildung 4: Wmii im "floating"-Layout mit "tabbed"-Fenstern.

Benutzerspezifische Konfiguration

Nach einer Standardinstallation finden Sie die Konfigurationsdateien im Verzeichnis /usr/local/etc/wmii. Kopieren Sie zunächst das gesamte Verzeichnis nach ~/.wmii. Dort befinden sich nun die Dateien bar, keys, menu, rc, rc.conf, status.sh, wm sowie ein Verzeichnis namens action. Bei den Dateien handelt es sich um gewöhnliche Shell-Skripts. Die Datei bar ist für die Statusleiste zuständig, keys für die Tastaturkürzel. Das Skript menu steuert das interne und externe Kommandomenü, wm den Window-Manager selbst. Das Skript status.sh erzeugt die Ausgabe in der Statusleiste. Für den Anfang heißt die wichtigste Datei rc.conf (Listing 3): Über diese beeinflussen Sie Einstellungen wie das Hintergrundbild und die Farben der Fenster.

Listing 3

TAB_HEIGHT=16
BAR_HEIGHT=16
BORDER_WIDTH=3
SELECTED_BG_COLOR="#666699"
SELECTED_TEXT_SIZE=10
SELECTED_TEXT_ALIGN=center
SELECTED_TEXT_FONT="fixed"
SELECTED_FG_COLOR="#FFFFFF"
SELECTED_BORDER_COLOR="#9999CC"
NORMAL_BG_COLOR="#888888"
NORMAL_TEXT_ALIGN=center
NORMAL_TEXT_FONT="fixed"
NORMAL_TEXT_SIZE=10
NORMAL_FG_COLOR="#FFFFFF"
NORMAL_BORDER_COLOR="#BBBBBB"
WALLPAPER="xsetroot -mod 2 2 -bg #666699 -fg #888888"
DEFAULT_LAYOUT=tiled  # tiled, max, grid or vsplit
TILE_WIDTH=60
MODKEY=mod1  # modifier key used by the default key bindings
NORTHKEY=k
SOUTHKEY=j
WESTKEY=h
EASTKEY=l

Die Zeilen 01 bis 18 in Listing 3 modifizieren das Aussehen des Window-Managers. Es handelt sich dabei um Shell-Variablen, wie sie die genannten Shell-Skripte verwenden. Um etwa den Standardhintergrund zu ersetzen, ändern Sie einfach die Variable WALLPAPER (Zeile 16):

WALLPAPER="Esetroot -scale -center /home/test/.wmii/wallpaper.png"

Auch die Tastenkombinationen für die Richtungsangaben verändern Sie mit Hilfe der Dateien. MODKEY (Zeile 19) definiert die Modifier-Taste, die stets die Kommandos einleitet. Die im Listing abgebildete Konfiguration setzt auf mod1, was auf der Tastatur [Alt] entspricht. Möchten Sie weitere Tastaturkombinationen ändern, bearbeiten Sie die Datei keys.

Sollen die Einstellungen nur temporär greifen, verwenden Sie den wmir-Befehl; um die Änderungen dauerhaft zu nutzen, schreiben Sie diese in die Konfigurationsdateien. Wollen Sie Änderungen im laufenden Betrieb anwenden, starten Sie dazu den Window-Manager nicht komplett neu, sondern laden einfach nur die einzelnen Komponenten erneut. Das geschieht über die Datei rc ("run command"), bei der es sich um ein schlichtes init-Skript handelt, das die üblichen Kommandozeilen-Parameter start, stop und restart verwendet. Durch ./rc restart im laufenden Betrieb initialisieren Sie also Wmii neu.

Im Verzeichnis action gibt es für jede Option ein Shell-Skript. Führen Sie mit [Strg]+[Alt]+[A] einen Befehl aus dem Aktionsmenü oder eine Tastenkombination aus, dann startet das entsprechende Skript aus dem action-Verzeichnis. Welches das jeweils ist, entnehmen Sie beispielsweise der Datei keys: So ruft das Drücken von [Alt]+[T] das Skript term auf. Möchten Sie kein xterm, sondern lieber ein aterm nutzen, passen Sie einfach das term-Skript an. Um die Tastenkombination zu verändern, modifizieren Sie die keys-Datei. Die Inhalte fallen zwar relativ selbsterklärend aus, die Änderungen verlangen aber ein wenig Geduld. Alle Skripte verwenden hauptsächlich das wmir-Programm, das es ermöglicht, den Window-Manager an eigene Vorlieben anzupassen. So schreibt der Befehl

wmir write /bar/default/70_status/label/text 'WMII rockt!'

etwa bis zur nächsten Aktualisierung des status.sh-Skripts den Text WMII rockt! in die Statusleiste. Dieses Feature eröffnet die Möglichkeit, die Ausgabe nahezu jedes Kommandozeilen-Programms in der Statusleiste darzustellen.

Weitere Informationen

Zusätzlich zur normalen Dokumentation ruft das Programm wmirefcard ein PDF-Dokument auf, das die wichtigsten Tastaturbefehle auflistet. Auf der Wmii-Projektseite [5] finden Sie zahlreiche weitere Informationen zum Thema. Dazu zählt nicht zuletzt eine Wmii-Einführung für Anfänger [6] von Steffen Liebergeld, die inzwischen auf Deutsch, Englisch und Spanisch vorliegt. Da es sich bei der Site um ein Wiki handelt, kommt ständig Wissenswertes neu hinzu. Zudem finden sich hier auch Wmii-Themes und zusätzliche – von Wmii-Benutzern geschriebene – Programme. Auf dem IRC-Server irc.oftc.net existiert ein aktiver #wmii-Kanal.

Was bringt die Zukunft?

Für November 2005 wird Wmii-3 erwartet, der interessante Neuerungen mit sich bringen soll. Bis dahin veröffentlicht das Projekt in regelmäßigen Abständen Snapshots der Software. Zu den wichtigsten Ergänzungen gehören die 9P2000-Kompatibilität [7] des virtuellen Dateisystems sowie die drastische Vereinfachung der Konfiguration durch eine neue Shell (9rc). Mit von der Partie ist auch das neue "column"-Layout. Es lehnt sich an Rob Pikes Acme-Programmier-Umgebung [8] für Plan 9 an. Dabei ersetzt und integriert die bisherigen Layouts, wie etwa "tiled", "grid" und "maximized".

Die 9P2000-Kompatibilität erlaubt es, ab Kernel 2.6.14 das Wmii-Dateisystem in das bestehende Dateisystem zu mounten und dadurch Wmii mit Standard-Programmen wie cp,mv, echo oder vi zu konfigurieren. Das ermöglicht den Verzicht auf das wmir-Tool unter Linux (für Abwärtskompatibilität zu den BSD-Systemen und weiteren Unixes bleibt wmir allerdings erhalten). Kernel 2.6.14 unterstützt auch erstmals das 9P-Protokoll.

Die drastische Vereinfachung der Konfiguration basiert auf einer Unix-Portierung der hochperformanten Plan-9-Tools, allen voran der Rc-Shell [9] sowie weiterer Tools für Shell-Skripte, die das Wmi-Projekt im Bundle als 9rc anbietet. Der Vorteil der neuen Rc-Shell von Plan 9 besteht darin, das sie statisch gelinkt ist und Shell-Skripte deutlich schneller laufen als auf der Bash-Shell.

Glossar

Socket

Bidirektionale Software-Schnittstelle zur Kommunikation zwischen Prozessen. Eine Anwendung fordert einen Socket vom Betriebssystem an und kann dann über diesen Daten verschicken und empfangen.

Plan 9

Unix-artiges Betriebssystem, das ab 1987 in den Bell Labs entwickelt wurde. Plan 9 steht seit 2002 unter einer freien Lizenz. Es behandelt alle Ressourcen (auch Rechner, Benutzer, Geräte, etc.) wie Dateien und spricht diese über das einheitliche Protokoll 9P an. Das davon inspirierte proc-Dateisystem von Linux verwendet einen ähnlichen Ansatz.

9P2000

Eine überarbeitete und stark verbesserte Version des Plan-9-Protokolls 9P. 2002 mit Plan 9 Fourth Edition erschienen.

Infos

[1] Wmi: Philipp Klein: "Aus die Maus" – Window-Manager Wmi, LinuxUser 03/2005, S. 58

[2] Ratpoison: http://www.nongnu.org/ratpoison/

[3] Ion: http://modeemi.cs.tut.fi/~tuomov/ion/

[4] Larswm: http://home.earthlink.net/~lab1701/larswm/

[5] Offizielle Wmi-Homepage: http://wmii.de

[6] Einführung in Wmii: http://wmii.de/index.php/WMII/BeginnersGuide

[7] Eine 9P-Einführung: http://www.cs.bell-labs.com/sys/man/5/INDEX.html

[8] Die Programmierumgebung Acme: http://www.cs.bell-labs.com/sys/doc/acme/acme.ps

[9] Rc-Shell: http://www.star.le.ac.uk/~tjg/rc/misc/td

Der Autor

Nico Golde ist 19 Jahre alt und studiert Informatik an der Technischen Universität Berlin. Er ist Mitglied in Projekten Freier Software – so etwa im Debian-Projekt – und beschäftigt sich mit Programmierung und Security.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare