Druckversion | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dem originalen Entwickler Rob Nation ist leider die Bedeutung des »f« in seiner Wortschöpfung entfallen. Die gewitzten Betreuer des Projektes benennen den fvwm so: »Fill_in_the_blank_with_whatever_f_word_you_like_at_the_time Virtual Window Manager«. Der Windowmanager fvwm2 als Nachfolger des »fvwm« war vor den Zeiten von Desktopumgebungen wie K Desktop Environment oder GNU Network Object Model Environment der verbreiteste Manager unter Linux. Auch heute liegt dieser Windowmanager jeder Distribution bei. Fvwm wurde mit dem Ziel ins Leben gerufen, einen Windowmanager mit geringen Hardwareanforderungen zu präsentieren (Speicherverbrauch < 1 MByte), der die in ihm laufenden Anwendungen mit einem 3D-Outfit - analog zu Motif's mwm - austattet. Der Fvwm2 stellt in seiner Grundfunktionalität nur einen einfachen virtuellen Desktop bereit. Die Vielgestaltigkeit des Managers ergibt sich erst durch die Verwendung der im Paket enthaltenen Module. Der »fvmw2« ist hochgradig konfigurierbar, wenngleich das Einrichten der Ressourcen-Datei wohl eher dem Konsolenfreund entgegen kommt. Die aktuell stabile Version 2.2.4 kennzeichnet folgende Eigenschaften:
Den typischen Aufbau eines Desktops mit dem Windowmanager Fvwm2 zeigt folgende Abbildung. Abbildung 1: Desktop des Fvwm2 Im oberen Teil ist das Modul FvwmButton zu sehen, in ihm sind integriert (von links nach rechts):
Des Weiteren sind auf dem Desktop die Anwendungen »xterm» (Mitte), »xmessages» (links unten), »xosview« (rechts unten) und das Icon der Anwendung »gimp« zu sehen. Klickt man mit der rechten Maustaste auf den Desktophintergrund, öffnet sich das »Alles«-Menü. Bei der Standardkonfiguration ist dieses auch über die Tastenkombination [Alt]-[F1] erreichbar. Abbildung 2: Fvwm2: Menü der rechten Maustaste Die mittlere Maustaste (bei 2-Tasten-Mäusen wird diese durch simultanes Drücken beider Tasten emuliert) oder die Tastenkombination [Alt]-[F2] führt zu einer Liste der aktiven Fenster. Abbildung 3: Fvwm2: Menü der mittleren Maustaste Mittels der linken Maustaste oder der Tastenkombination [Alt]-[F3] öffnet sich das Arbeitsmenü. Abbildung 4: Fvwm2: Menü der linken Maustaste
Allein das Manual zum »fvwm2« umfasst knapp 3000 Zeilen. Nicht ganz so umfangreich, dafür umso zahlreicher sind die Manuals zu den einzelnen Modulen. Hier alle Möglichkeiten der Konfiguration zu diskutieren, würden den Leser langweilen und den Autor überfordern... Ich beschränke mich deshalb auf die Vorstellung der wesentlichen Elemente des Desktops:
Den fvmw2 konfiguriert man über eine ASCII-Datei. Die globale Datei befindet sich unter »/usr/X11R6/lib/X11/fvwm2/system.fvwm2rc«. Normalerweise wird man diese unverändert lassen, und eine lokale Kopie mit dem Namen ~/.fvwm2rc bearbeiten.
Die SuchpfadeDer »fvwm2« benötigt zunächst Kenntnis, wo er seine Module, die Pixmaps (kleine Bildchen) und Icons (Symbole für verkleinerte Anwendungen) zu suchen hat:
Die SchriftartenWeitere Einstellungen legen die verwendeten Schriftarten für die Fenstertitel und Icon-Unterschriften fest. Die meisten Leser wird die Angabe der Schriften verwirren, wer das Geheimnis zu lüften wünscht, sollte einmal das Programm »xfontsel« aufrufen. Abbildung 5: Schriften konfigurieren mit »xfontsel«
Mit Style kann das Aussehen jedes einzelnen Fensters und der Module gesteuert werden. Die Syntax der Styles besitzt folgendes Format:
»Fenstertitel« steht dabei für den konkreten Programmnamen (z.B. »xosview«), alle Programme (»*«) oder einer Kombination aus beiden (»Fvwm*«). Als Definitionen sind u.a. zulässig (mehrere Definitionen werden durch Kommas getrennt): BackColor Hintergrundfarbe der Fensterdekoration
BorderWidth Rahmenbreite in Pixel
ClickToFocus Das Fenster wird erst fokussiert, sobald ein Mausklick in dieses erfolgt
Icon Icon, das beim Verkleinern des Fensters dargestellt werden soll. Das Icon muss im Icon-Suchpfad liegen!
IconBox Wo und in welcher Größse soll ein Icon auf dem Desktop erscheinen?
IconFill Mehrere Icons werden in einem bestimmten Gitter, ausgehend von der ersten Position (IconBox) dargestellt. Ein neues Icon wird dabei in das erste freie Gitterfeld platziert. Mit IconFill kann die Ausrichtung der Darstellung beeinflusst werden. Voreingestellt ist: erst von links nach rechts, dann von oben nach unten.
ForeColor Farbe der Fensterüberschrift
MouseFocus Das Fenster erhält den Fokus, sobald der Mauszeiger über diesem steht
NoTitle Unterdrückt die Darstellung der Fenstertitelleiste (Voreinstellung ist »Title«)
SloppyFocus Wie »MouseFocus«, jedoch verliert das Fenster den Fokus erst, wenn die Maus in eine anderes »MouseFocus«-Fenster wechselt oder ein »ClickToFocus«-Fenster aktiviert wird
StaysOnTop Das Fenster wird auf jedem Desktop dargestellt
Sticky Das Fenster ist auf allen virtuellen Desktops vorhanden (Voreinstellung ist »NoSticky«)
UseDecor Zur Verwendung eines mit AddToDecor erzeugten Aussehens
WindowListSkip Das Fenster erscheint nicht in der Fensterliste (z.B. im Menü der mittleren Maustaste)
Beispielhaft sollen die Gestaltung des FvmwButtons und der Anwendung »xterm« sowie einige Einstellungen, die alle Anwendungen betreffen, skizziert werden:
Die Fensterleiste enthält meist mehrere Buttons, z.B. zum Minimieren, Maximieren oder Schließen des Fensters. Die Konfiguration der Buttons erfolgt mit dem Kommando ButtonStyle:
button kann eine Nummer zwischen 0 und 9 enthalten. Die Reihenfolge der Nummerierung ist dabei sehr seltsam: 1 3 5 7 9 0 8 6 4 2, wobei die Buttons mit ungerader Nummer links- und die anderen rechtsbündig angeordnet werden. Steht im Feld »button« »ALL«, werden alle Buttons durch das Kommando konfiguriert. »Left« und »Right« sprechen den linken bzw. rechten Schalter an. Mit »Reset« werden alle Schalter in die Voreinstellung versetzt. state kann entfallen, dann gelten die Einstellungen für den Schalter in jedem Status. Steht dort »ActiveUp«, bezieht sich die Konfiguration auf einen nicht-gedrückten Schalter, »ActiveDown« bezeichnet den gedrückten Schalter. »Inactive« konfiguriert den Schalter eines inaktiven Fensters. style betrifft nun das tatsächliche Aussehen des Buttons. Eine kleine Auswahl an Styles soll die Mannigfaltigkeit der Konfiguration andeuten: Default Setzt voreingestellte Werte, eine optionale Nummer setzt anstelle des durch »button« bezeichneten Schalters die Werte des Schalters dieser Nummer. So setzt folgende Zeile die Aussehen der Schalter 1 und 3 gleich:
Solid Setzt die Farbe des Buttons:
Vector Zeichnet Linien in einen Schalter. Dem Schlüsselwort folgen die Anzahl der Punkte und anschließend die Koordinaten für jeden Punkt in der Form »x-Koordinatexy-Koordinate@Farbe«. »Farbe« kann dabei "1" oder "0" sein, je nachdem, ob mit der Vorder- oder Hintergrundfarbe gezeichnet werden soll:
Pixmaps Dem Schlüsselwort folgt der Name einer Pixmap-Datei. Somit kann anstelle des Schalters ein Bild eingeblendet werden:
MiniIcon Das Mini-Symbol der Anwendung wird im Schalter dargestellt. Die Verbindungen von Anwendungen und MiniIcon-Dateien muss zuvor mit dem Style-Kommando definiert werden:
flag letztlich bestimmt das Verhalten des Schalters, wenn er gedrückt wird. Mehrere Flags können, durch Leerzeichen voneinander getrennt, angegeben werden. Die Auswahl kann durch ein vorangestelltes Ausrufezeichen negiert werden. Abbildung 6: Mögliches Aussehen von Schaltern Die Schalter der Abbildung werden durch folgende Konfiguration erzeugt:
Der Windowmanager »fvwm2« kennt zwei spezielle Funktionen. InitFunction wird beim ersten Aufruf des Managers aufgerufen und RestartFunction ist der Ansprungspunkt nach einem Neustart. Beide Funktionen sind identisch aufgebaut und dienen dazu, den »fvwm2« beim (Re)Start weitere Programme aufrufen zu lassen. Wir widmen uns nur der »InitFunction«.
AddToFunc gelangt stets zum Einsatz, wenn es um das Hinzufügen einer Aktion zu einer Funktion geht. Jede Zeile, die noch zur Funktionsdefinition gehört, muss mit einem Plus + eingeleitet werden. "I" besagt, dass die Aktion unmittelbar auszuführen ist. Mit Module wird der Start eines fvwm-Modules eingeleitet, alle anderen Programme sind hinter Exec anzugeben, wobei das erste Argument als Programmname und alle weiteren bis Zeilenende als Optionen für das Programm verwendet werden. Die Module des »fvwm2« sollten unbedingt in die RestartFunction aufgenommen werden, da diese im Gegensatz zu fvwm2-unabhängigen Programmen einen Neustart nicht überleben.
Die Maus ist das wichtigste Eingabegerät unter X. Prinzipiell kann alles so konfiguriert werden, dass sämtliche Aktionen per Tastenkombinationen erreichbar sind, aber wer kann sich schon all die Tastenkürzel merken? Das Aussehen des MauszeigersIn Abhängigkeit von der Umgebung kann der Mauszeiger seine Optik verändern. Hierzu ist die Option CursorStyle zu verwenden, die als Argument den Bezeichner des Kontexts und die (gerade) Nummer des Stils erhält. Einige der Kontexte sind: title Wenn sich der Mauszeiger über einen Fenstertitel bewegt
DEFAULT Überall dort, wo kein eigener Stil definiert wurde
SYS Schalter der Fensterleiste
MOVE Beim Bewegen, Ändern der Größe eines Fensters
WAIT Während ein Programm ausgeführt wird
MENU In Menüs
DESTROY Wenn ein Fenster geschlossen/zerstört wird
LEFT | RIGHT Linker/rechter Fensterrahmen
BOTTOM_LEFT In der linken unteren Fensterecke (TOP_LEFT... analog)
Das Aussehen des Mauszeigers wird als gerader numerischer Wert angegeben. Welcher Wert für welchen Zeigertyp steht, kann der Datei »/usr/X11R6/include/X11/cursorfont.h« entnommen werden.
Aktionen beim MausklickDas Binden einer Aktion an eine bestimmte Maustaste folgt immer dem selben Schema:
Taste entspricht der Tastennummer (0 alle, 1 links, 2 Mitte, 3 rechts), Kontext der Umgebung, für die die Definition zutrifft. Hier steht R für das Root-Fenster (Desktop), W für ein Anwendungsfenster. Weiterhin betrifft T den Fenstertitel, S den Rahmen, F die Ecken eines Fensters und A steht stellvertretend für jeden Kontext. 0 bis 9 binden Aktionen an die gleichnamigen Schalter der Fensterleiste. Mit den Modifizieren kann gesteuert werden, ob die Mausaktion erst in Verbindung mit einem Tastendruck ausgelöst wird. Hierbei gilt N für »keine« Tastenbetätigung, A für »egal welche«, C für [Ctrl], M für [Alt] und S für [Shift]. Kombinationen sind zugelassen, dann müssen neben der Maustaste auch noch die angegebenen Tasten der Tastatur gedrückt sein. Schließlich ist Funktion eine der fvmw-Funktionen oder auch eine selbst definierte. Wird an ihrer Stelle ein Minus eingesetzt, so wird eine bestehende Bindung aufgehoben. Das folgende Beispiel startet das Programm »gimp«, sobald auf dem Desktop die linke Maustaste zusammen mit [Ctrl]-[Shift] gedrückt wird:
Obiges Beispiel funktioniert sogar, wenn zuvor die Mausaktion für das Rootfenster mit dem Kontext "A" (jede Taste) verbunden wurde. In diesem Fall überschreibt die Konfiguration nur die Aktion für diese eine Tastenkombination. Die übliche Konfiguration verbindet die Mausklicks auf dem Desktop mit dem Eröffnen von Menüs:
Das Binden bestimmter Tastaturereignisse an bestimmte Aktionen erfolgt ähnlich dem Vorgehen bei der Maus. Der Aufruf lautet:
Der Tastenname kann der Datei »/usr/include/X11/keysymdef.h« entnommen werden, wobei das führende »XK_« zu streichen ist. Kontext, Modifizierer und Funktion sind genauso zu verwenden, wie unter Aktionen mit der Maus beschrieben. Das Beispiel ermöglicht das Bewegen des Mauszeigers mit den Navigationstasten der Tastatur bei gleichzeitigem Drücken der [Shift]-Taste. Hierbei gelangt die Funktion CursorMove zum Einsatz, die den Mauszeiger um den angegebenen Wert in x,y-Richtung verschiebt:
Menüs gehören zum guten Stil eines jeden Windowmanagers. In ihnen sammelt man alle Programme, die über einen Mausklick erreichbar sein sollen. Während bspw. KDE seine Programme während der Installation (fast immer) automatisch in die Menüstruktur integriert, ist bei den meisten Windowmanagern ein manueller Eingriff erforderlich. Da helfen auch nicht solche Skripte wie sie SuSE-Linux beiliegen, die nach jeder Installation eines neuen Paketes für die wichtigsten Manager neue Konfigurationen erstellen. Das Programm, das ich eigentlich benötige, wurde garantiert nicht aufgenommen! Im Falle des fvwm2 wird ein Menü mit AddToMenu erzeugt:
Menüname ist ein eindeutiger Bezeichner, über den in anderen Stellen der Konfiguration auf das Menü Bezug genommen werden kann. Die optionale Menüüberschrift wird als als erster Eintrag des Menüs dargestellt und das optionale Title zentriert diese Überschrift und trennt die nachfolgenden Einträge durch eine Linie ab. Um nun die Einträge einem Menü hinzuzufügen, bedient man sich folgender Syntax:
Bezeichner ist ein (leerer) Text, der im Eintrag erscheinen soll. Das & kennzeichnet den nachfolgenden Buchstaben als »Shortcut«, über den der Menüeintrag per Tastatur angewählt werden kann. Iconname ist der Dateiname des Pixmaps, das als Grafik im Eintrag platziert wird. Die Datei muss im Pfad der Pixmaps (siehe Globale Einstellungen) zu finden sein. Der Iconname wird entweder in zwei * oder % eingeschlossen. In ersten Fall wird der Bezeichner unter der Grafik dargestellt, im zweiten rechts dieser. Aktion ist die zu rufende Funktion, wenn der Menüeintrag selektiert wurde. Beispiel: Ein Menü soll den Zugang zu den Grafikverarbeitungsprogrammen gimp und xfig realisieren:
Erläuterung: Als Titelzeile soll im Menü »Grafikprogramme« stehen, Das Programm gimp soll neben der Maus auch mit der Taste [G] gestartet werden können. Als Grafik gelangt »xgrab.xpm« zum Einsatz. Die zweite Zeile erzeugt eine Linie, nop besagt, dass damit keine Aktion verbunden ist. Der dritte Eintrag schließlich fügt xfig hinzu, das über die Taste [X] aufgerufen werden kann. Folgende Abbildung zeigt das fertige Menü: Abbildung 7: Ein eigenes Menü Jetzt haben wir zwar ein Menü aber noch keine Möglichkeit, auf dieses zuzugreifen. Beispielhaft soll das Menü erscheinen, wenn wir die Tasten [F1]-[Shift]-[Ctrl] (unabhängig vom Kontext) drücken und bei Klick mit der linken Maustaste auf den Desktop bei gleichzeitigem Betätigen der Tasten [Shift]-[Ctrl]:
Erläuterung: Wichtig ist Menu, um die Bindung mit einem Menü zu veranlassen. Ein Menü kann selbst weitere Untermenüs enthalten, ein entsprechender Eintrag in AddToMenu sieht wie folgt aus:
Die Definition des Untermenüs folgt exakt den Regeln eines »normalen« Menüs.
Abbildung 8: Das Modul FvwmButtons Die Module sind eine Erweiterung des fvwm2, die zur eigenen Arbeit allerdings einen aktiven Windowmanager benötigen. Die Module selbst werden mit dem Schlüsselwort Module geladen und verwenden den Pipemechanismus zur Kommunikation mit dem fvwm. Stellvertretend für den Umgang mit Modulen soll die Konfiguration des FvwmButtons dienen, also des Modules, das in vielen anderen Managern unter dem Begriff "Startleiste" existiert. Das Modul FvmwButtons kann sowohl Icons beherbergen, über die bestimmte Funktionen zugänglich werden, als auch Programme, die innerhalb des Buttons ausgeführt werden. Im links abgebildeten Beispiel ist das Modul FvwmPager innerhalb des Buttons aktiv (ganz unten), der das Umschalten zwischen den einzelnen virtuellen Desktops ermöglicht.. Werfen wir kurz einen Blick auf dessen Konfiguration:
Erläuterung: DeskTopSize bedingt nicht die Existenz des FvwmPagers, sondern ist eine Option des fvwm und legt die Anzahl der virtuellen Desktops fest (hier 2 in horizontaler und 2 in vertikaler Richtung). Der Pager selbst mappt die Desktops in seinen Bereich. Die beiden folgenden Zeilen definieren die Ausdehnung (1 Zeile, 1 Spalte) des Pagers, die nächste Zeile bestimmt die relative Position der Darstellung. Weitere Optionen legen die Farben für Vorder- und Hintergrund, sowie für den gerade aktiven Desktop fest. Der letzte Eintrag setzt »Desktop« als Überschrift des Pagers (* weist den Titel allen Desktops zu; hier kann für jeden Desktop ein eigener Titel definiert werden). Bedienung des FvwmPagers: Indem Sie mit der rechten Maustaste auf das Symbol eines Desktops klicken, wird zu diesem gewechselt. Klicken Sie gezielt auf das Symbol einer Anwendung, erhält diese zugleich den Fokus. Auch lassen sich die Anwendungen zwischen den verschiedenen Deskops verschieben, indem Sie mit der mittleren Maustaste das Symbol fixieren und auf den neuen Desktop ziehen. Der »FvwmButton« wurde durch folgende Einstellungen erzeugt:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Korrekturen, Hinweise? |