Motif Window Manager
Window Manager

MWM - Resourcen

Die Menüs des MWM

Eine große Stärke des MWM ist seine vielfältige Konfigurierbarkeit. Er erlaubt die Einrichtung einer Reihe von Pull-Down-Menüs, die jeweils durch Drücken einer Maustaste am Festerrahmen oder im Root-Window (also Hintergrund) ausgelöst werden. Ebenso können eine Reihe von Funktionen an bestimmte Tastenkombinationen gebunden werden.
Diese Menüs werden im Home-Verzeichnis des Anwenders in der Datei
$HOME/.mwmrc
konfiguriert. Ist sie nicht vorhanden, so greift die globale system.mwmrc, die traditionell im Verzeichnis /usr/lib/X11/ liegt; neuere Linux-Distributionen plazieren sie allerdings in /etc/X11/.
Ist die Umgebungsvariable LANG gesetzt (z.B. mit "de"), so sucht mwm zuerst nach
$HOME/$LANG/.mwmrc
Am schnellsten wird der Aufbau einer mwmrc-Datei durch ein Beispiel klar:

!!
!! Root Menu Description (this menu must be explicitly posted via f.menu)
!!

Menu DefaultRootMenu
{
        "Hauptmenü"             f.title
        "Xterm"                 f.exec "xterm -ls  &"
        "Firefox"               f.exec "firefox &"
        "Text"                  f.exec "swriter &"
        "Tabelle"               f.exec "scalc &"
         no-label               f.separator
        "Fenster rotieren >"    f.circle_up
        "Fenster rotieren <"    f.circle_down
        "Refresh"               f.refresh
         no-label               f.separator
        "Restart..."            f.restart
        "Quit..."               f.quit_mwm

}

...

Hier wird ein einfaches Pulldown-Menü definiert. Einem "Label" entspricht jeweils eine mwm-Funktion, die durch Mausklick ausgelöst wird. Die wichtigsten Funktionen sind:

f.exec  "Kommando" führt ein Kommando aus f.refresh löst in allen Fenstern ein Redraw aus
f.circle_up rotiert die Fenster: das hinterste nach vorne f.circle_down rotiert die Fenster: das vordeste nach hinten
f.title für die Tielzeile des Menüs f.separator setzt einen durchgezogenen Trennstrich
f.normalize Fenster in normaler Größe darstellen f.pack_icons Icons (von minimieten Fenstern) neu anordnen
f.quit_mwm mwm beenden f.restart mwm neustarten, wobei die Konfig-Dateien neu eingelesen werden

Bleibt noch die Sonderfunktion f.menu menu_name. Damit kann man kaskadierende Menüs aus anderen Pulldown-Menüs heraus aufrufen. Zunächst wichtiger ist jedoch, die ersten Menüs (insbeondere das obige DefaultRootMenu) mit f.menu an eine Maustaste zu binden:

Buttons DefaultButtonBindings
{
        <Btn1Down>      icon|frame      f.raise
        <Btn3Down>      icon|frame      f.post_wmenu
        <Btn3Down>      root            f.menu  DefaultRootMenu
}
 ...

Wird also die rechte Maustaste ("Btn3") auf dem Root-Fenster ("root") gedrückt, so erscheint das Pulldaown-Menü "DefaultRootMenu".  Das bestimmt die unterste Zeile. Die beiden anderen "Bindings" besagen:
1. Wird die linke Maustaste ("Btn1") auf einem Icon oder einem (Sub-)Fenster ("frame") gedrück, so wird mit f.raise dieses in den Vordergrund gebracht.
2. Wird die rechte Maustaste aut einem Icon oder (Sub-)Fenster gedrückt, so löst die Funktion f.post_wmenu das mit dem Namen "DefaultWindowMenu" deklarierte Pulldown-Menü für dieses Fenster mit Funktionen zum Maximieren, Minimieren, Schließen etc. des Fensters. Es gibt eine Reihe von Funktionen, die logischerweise nur in diesem Kontext verwendet werden können. Die wichtigsten sind:

f.kill Fenster schließen f.restore Fenstern aus dem Icon-Modus ("minimiert") wieder in der ursprünglichen Größe herstellen.
f.minimize Fenster minimieren (als Icon darstellen) f.maximize Fenster maximieren
f.resize zum Bewegen des Fensters (mit Cursor-Tasten oder Maus) f.resize zum Verändern der Größe des Fensters (mit Cursor-Tasten oder Maus)

Das DefaultWindowMenu sieht dann z.B. folgendermaßen aus:

Menu DefaultWindowMenu
{
        Wiederherstellen        _W      Alt<Key>F5      f.restore
        Verschieben             _V      Alt<Key>F7      f.move
        Resize                  _R      Alt<Key>F8      f.resize
        Minimieren              _n      Alt<Key>F9      f.minimize
        Maximieren              _x      Alt<Key>F10     f.maximize
        no-label                                        f.separator
        Schliessen              _S      Alt<Key>F4      f.kill
}

Im Gegensatz zum DefaultRootMenu sind hier zwei (optionale) Spalten hinzugekommen. So bezeichnet das _W in der ersten Zeile den Buchstaben, der in der Beschriftung unterstrichen erscheint. Durch Drücken dieses Buchstaben kann bei geöffnetem Menü (alternativ zur Maus) die entsprechende Funtktion ausgelöst werden. In der dritten Spalte kann eine zusätzliche Tastenkombination für die Funktion (am Ende der Zeile) deklariert werden.

Schließlich werden in der Sektion "Keys DefaultKeyBindings" weitere Funktionen an bestimmte Tastenkombinationen gebunden. Mit geschickter Konfiguration lässt sich der mwm ausschließlich mit der Tastatur bedienen.

Diese Beschreibung geht natürlich nicht ins letzte Detail - dazu sei wiederum auf die Manual-Seiten (man mwmrc) verwiesen, die hier als PDF-Dokument verfügbar sind (Stand OpenMotif 2.3.0).
Motif Window Manager
     ©2005-2008 Andreas Gottwald
MWM - Resourcen