Jwm

Aus mxlinuxusers.de
JWM-Fenstermanager
JWM-Fenstermanager

jwm[Bearbeiten | Quelltext bearbeiten]

jwm (Joe's Window Manager) ist ein leichtgewichtiger, aber trotzdem sehr vielseitiger Fenstermanager, der von Joe Wingbermuehle in C geschrieben wurde.

Wichtige Merkmale:

  • die individuelle Konfiguration erfolgt durch eine einzige XML-Datei im Homeverzeichnis des Users. Durch Include-Kommandos innerhalb der Konfigurationsdatei ist aber auch das Einbinden von mehreren Dateien möglich
  • Snap-Funktion, d.h. Fenster können durch einfaches ziehen an den Bildschirmrand maximiert werden
  • mehrere Fenster können individuell konfiguriert werden (jedes Fenster mit einer eigenen Farbe, einem Farbverlauf oder einem Hintergrundbild)
  • automatisches Starten von Programmen auf verschiedenen Arbeitsflächen
  • flexible Einrichtung auch von mehreren Panels (Taskleisten), in jwm Tray genannt
  • Transparenz ist möglich, es muss dazu jedoch extra ein Compositing-Manager (z.B. Compton) installiert werden
  • Benutzerdefinierte Tastenkürzel können eingerichtet werden

Konfigurationsdatei .jwmrc[Bearbeiten | Quelltext bearbeiten]

Wie allgemein üblich gibt es eine systemweit gültige Konfigurationsdatei /etc/jwm/system.jwmrc und eine nur für den jeweiligen User gültige Datei .jwmrc, die direkt im Homeverzeichnis liegt, also ~/.jwmrc. Dabei hat die ~/.jwmrc Vorrang vor der Datei /etc/jwm/system.jwmrc

Persönliche Einstellungen sollten also unbedingt in der ~/.jwmrc vorgenommen werden. Da diese bei der Installation nicht automatisch angelegt wird, muss man dies von Hand durchführen. Dafür befindet sich im Verzeichnis /usr/share/doc/jwm/examples/ eine gepackte Beispielsdatei example.jwmrc.gz, die man entpacken und unter dem Namen .jwmrc in sein Homeverzeichnis kopieren und dort editieren kann.

gunzip -kc /usr/share/doc/jwm/examples/example.jwmrc.gz > ~/.jwmrc

Nach jedem Editieren der ~/.jwmrc sollte unbedingt mit

jwm -p

die Korrektheit der Konfigurationsdatei kontrolliert werden.

Die so entstandene .jwmrc ist korrekt, lässt aber noch so manche Wünsche offen. Damit ist nicht das optische Aussehen gemeint, das man ohnehin bei Bedarf seinem eigenen Geschmack entsprechend anpassen kann und sollte, sondern es betrifft die enthaltenen Menupunkte. Diese werden durch ein mit dem Tag <include> eingefügtes Debian-Menu gebildet:

<Include>/etc/jwm/debian-menu</Include>

Dabei wird offenbar so manches Paket nicht mit aufgeführt, so fehlt bei mir z.B. der Editor geany oder die Graphikverarbeitung gimp, und noch weitere Pakete. Natürlich lässt sich dies durch Eintippen des entsprechenden Kommandos im Terminal verschmerzen, aber schön ist es trotzdem nicht. Wenn man schon ein Menu hat, dann sollte es auch meine Lieblingsprogramme enthalten und nicht statt dessen andere Programme "in den Vordergrund schieben", wie z.B. "dotty" und "lefty", die neben dem "X Window Screenshot" als einzige im Menupunkt "Grafik" auftauchen.

Man könnte also seine Lieblingsprogramme durch Einfügen von Tags <Program> nach dem Tag <Include> ergänzen, z.B. so

<Include>/etc/jwm/debian-menu</Include>
<Program icon="terminal.png" label="Terminal">xterm</Program>
<Program icon="lock.png" label="Lock">xlock -mode blank</Program>
<Program icon="flameshot" tooltip="Screenshotprogramm mit vielen Möglichkeiten" label="Flameshot">flameshot</Program>

oder gar sein eigenes Programm-Menu basteln. Da dies aber mühsam ist, gibt es dafür entsprechende Tools. Eines davon ist menumaker, zu installieren entweder mit

sudo apt install menumaker

oder mit einem anderen Paketmanager seiner Wahl. Es ist klein (ca. 96 kB download) und belegt nach der Installation etwa 610 kB. Ausserdem ist es nur von Python 3 abhängig, das ohnehin meistens schon vorhanden sein dürfte.

menumaker ist zwar ein Kommandozeilentool, in seiner Handhabung trotzdem einfach, da in der Regel ein einziger Befehl ausreicht, um ein wirklich umfangreiches Programm-Menu zu erzeugen, das gut strukturiert ist und in dem wohl kein Programm fehlt. Dieser Befehl lautet jür jwm

mmaker -f jwm

Natürlich ist menumaker umfangreicher und kann noch mehr (z.B. Menus auch für andere Windows Manager erzeugen), aber für die grundlegende Benutzung in jwm reicht dieses Kommando aus. Wer neugierig ist und vor englisch nicht zurückschreckt, kann sich mit

mmaker -h

einen Überblick verschaffen.

Wenn man sehr kritisch ist, enthält menumaker zwei kleine "Stolpersteine", die aber wirklich sehr klein und leicht umgehbar sind. Der erste wäre der Punkt, dass das Paket zwar "menumaker" heisst, der anzuwendende Befehl jedoch mmaker lautet. Wer sich das partout nicht merken kann, könnte ja ein alias "menumaker" anlegen, das dann auf mmaker verweist.

Das zweite "Problem" besteht darin, dass das erzeugte Menu "statisch" ist, das heisst, ein neu installiertes Programm wird nicht automatisch ins Menu aufgenommen. Dies lässt sich jedoch leicht korrigieren. Je nach Temperament führt man nach der Installation eines neuen Programmes gleich das Kommando

mmaker -f jwm

von Hand aus, oder setzt mmaker in den autostart. Dadurch wird beim nächsten Einloggen .jwmrc neu erzeugt und enthält somit auch das neu installierte Programm.

Die .jwmrc unterteilt sich in viele Hauptabschnitte, von denen das sogenannte "Rootmenu" das wichtigste ist und nicht fehlen darf. Die gesamte Datei muss aber unbedingt mit der XML-Definition und nachfolgendem Start-Tag <JWM> und dem End-Tag </JWM> umschlossen sein:

 <?xml version="1.0"?>
 <JWM>
     <RootMenu onroot="12" labeled="true" label="START">
     ...
     </RootMenu>
     ...
 </JWM>
  • RootMenu (hier wird das Aussehen und der Inhalt des Anwendungsmenus, also das Starten von Programmen, konfiguriert)
  • Group (Optionen für Programmgruppen)
  • Tray (zum hinzufügen von Leisten)

und Einstellungen für das Aussehen (Style) und Verhalten der verschiedenen Bereiche (Window allgemein, Tray, Taskliste usw.)

  • WindowStyle
  • TrayStyle
  • TaskListStyle
  • PagerStyle
  • MenuStyle
  • PopupStyle
  • IconPath (Liste der Pfade, in denen die benutzen Icons liegen)
  • DoubleClickSpeed
  • DoubleClickDelta
  • FocusModel (wie erhält welches Fenster den Fokus)
  • SnapMode (wann und wie sollen Fenster einrasten)
  • MoveMode (Verhalten der Fenster beim verschieben)
  • ResizeMode (Verhalten der Fenster beim vergrössern/verkleinern)
  • Key bindings (welche Aktionen sollen durch Tastendrücke ausgelöst werden, Fenster schliessen, maximieren, Programm beenden u.ä.)
  • Key mask (welche Tasten bzw. Tastenkombinationen lösen die Aktionen aus)
  • Mouse context (durch welche Maustasten werden welche Aktionen ausgelöst)

Root-Menu[Bearbeiten | Quelltext bearbeiten]

Mit dem Root-Menu wird der Inhalt des Anwendungsmenus konfiguriert, es dient also im wesentlichen dazu, Programme zu starten und jwm neu zu starten (Restart) oder zu verlassen (Exit). Es besteht in der Hauptsache aus den Tags "Menu", mit denen Gruppen von Programmen gebildet werden können (z.B. Büro, Grafik, Programmierung usw.) und den Tags "Program", die zum Starten der einzelnen Programme dienen. Ein Minibeispiel mit zwei Anwendungsgruppen "Büro" und "Grafik" könnte also so aussehen:

<RootMenu onroot="12" labeled="true" label="START">
 <Menu icon="/usr/share/icons/Adwaita/16x16/categories/applications-office.png" label="Büro">
   <Program icon="/usr/share/icons/hicolor/16x16/apps/libreoffice-startcenter.png" label="LibreOffice">libreoffice </Program>
   <Program icon="/usr/share/icons/hicolor/16x16/apps/libreoffice-base.png" label="LibreOffice Base">libreoffice --base </Program>
   <Program icon="/usr/share/icons/hicolor/16x16/apps/libreoffice-calc.png" label="LibreOffice Calc">libreoffice --calc </Program>
   <Program icon="/usr/share/icons/hicolor/16x16/apps/libreoffice-draw.png" label="LibreOffice Draw">libreoffice --draw </Program>
   <Program icon="/usr/share/icons/hicolor/16x16/apps/libreoffice-writer.png" label="LibreOffice Writer">libreoffice --writer </Program>
   <Program icon="/usr/share/icons/hicolor/scalable/apps/qpdfview.svg" label="qpdfview">qpdfview --unique </Program>
 </Menu>
 <Menu icon="/usr/share/icons/Adwaita/16x16/categories/applications-graphics.png" label="Grafik">
   <Program icon="/usr/share/icons/hicolor/16x16/apps/calibre-viewer.png" label="E-book Viewer">ebook-viewer </Program>
   <Program icon="/usr/share/icons/hicolor/scalable/apps/flameshot.svg" label="Flameshot">flameshot</Program>
   <Program icon="/usr/share/icons/hicolor/16x16/apps/gimp.png" label="GNU Image Manipulation Program">gimp-2.10 </Program>
 </Menu>
</RootMenu>

Im einleitenden Tag "RootMenu" befinden sich die Attribute "onroot", "labeled" und "label":

  • onroot bezeichnet die Maustasten, mit den das Menu erreichbar ist.
    • 1 = linke Maustaste
    • 2 = mittlere Maustaste
    • 3 = rechte Maustaste (Default ist "123", also alle Maustasten)
  • label ein Text, der an der Spitze des Menus angezeigt werden soll (Default = JWM). Dieser Text wird aber nur angezeigt, wenn das Attribut "labeled" auf true gesetzt wird.
  • labeled bestimmt, ob ein Text (Label) an der Spitze des Menus angezeigt werden soll. true bedeutet, dieses Label wird gesetzt (Default = false)

Das Attribut "icon" kann mit dem vollen Pfad angegeben werden, praktischer ist es natürlich, die Pfade zu den verwendeten Icons im Abschnitt <IconPath> zu definieren. Dort gibt man beliebig viele Pfade an, die in dieser Reihenfolge nach dem passenden Icon-Namen durchsucht werden. Das erste gefundene Icon mit dem übereinstimmenden Name wird dann zur Anzeige benutzt. Dabei empfiehlt es sich sogar, die Dateiextension, also .png, .svg usw. wegzulassen. Wer keine Icons mag kann dieses Attribut auch ganz weglassen.

Solch ein Abschnitt <IconPath> könnte also z.B. so aussehen, hier bei Benutzung des Themas Adwaita:

<IconPath>/usr/share/icons/Adwaita/scalable/actions</IconPath>
<IconPath>/usr/share/icons/Adwaita/scalable/apps</IconPath>
<IconPath>/usr/share/icons/Adwaita/scalable/categories</IconPath>
<IconPath>/usr/share/icons/Adwaita/scalable/places</IconPath>
<IconPath>/usr/share/icons/Adwaita/scalable/status</IconPath>
<IconPath>/usr/share/icons/Adwaita/scalable/mimetypes</IconPath>
<IconPath>/usr/share/icons/Adwaita/16x16/apps</IconPath>
<IconPath>/usr/share/icons/Adwaita/16x16/places</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/apps</IconPath>

Tags[Bearbeiten | Quelltext bearbeiten]

Neben den Tags "Menu" und "Program" können auch noch andere Tags benutzt werden:

Wichtig: Da man die Attribute "label", "tooltip" und "icon" in fast allen Tags mit der gleichen Syntax benutzen kann, werden sie in der nachfolgenden Tabelle in der Spalte "Attribut(e)" nur beim Tag "Desktops" ausführlicher erläutert und bei den restlichen Tags wird nur mit "s.o." darauf verwiesen. Der Default-Wert von "label" entspricht in der Regel dem Namen des zugehörigen Tags, d.h. der default für das Attribut "label" vom Tag "Maximize" ist z.B. auch "Maximize" usw.

Rootmenu
Tag Beispiel Attribut(e) Bedeutung
Dynamic
<Dynamic>/etc/jwm/debian-menu</Dynamic>
<Dynamic>exec: xdgmenumaker -n -i -f jwm</Dynamic>
  • /Pfad/zur/Datei
  • exec: /Pfad/zum/Skript

fügt entweder den Inhalt der XML-Datei (muss mit dem Tag JWM beginnen) in das Menu ein oder führt das mit exec: angegebene Skript aus und fügt dessen Ausgabe dynamisch in das Menu ein

Include
<Include>/etc/jwm/debian-menu</Include>
<Include>/etc/jwm/system.jwmrc</Include>
<Include>exec:/usr/bin/skript</Include>
  • /Pfad/zur/Datei
  • exec:/Pfad/zur/Datei

fügt den Inhalt der Datei in das Menu ein. Diese Datei ist entweder ebenfalls eine XML-Datei, dann muss sie mit dem Tag <JWM> beginnen und auch mit </JWM> enden und im übrigen aus den gleichen Elementen wie das jwm-Progrmm-Menu bestehen, oder sie ist ein ausführbares Skript/Programm, dann wird die Ausgabe des Skriptes in das Menu eingefügt. Im letzteren Fall muss vor dem Skriptnamen exec: stehen

Separator
<Separator/> 

fügt eine Linie in das Menu ein. Damit können optisch Gruppen gebildet werden

Desktops
<Desktops label="zu Desktop" tooltip="Wechsel zu Desktop"></Desktops> 
  • label="Desktopname" (default = "Desktops")
  • tooltip="hier kann zum Desktop gewechselt werden"
  • icon="/Pfad/zum/Icon"

fügt ein Submenu mit der Liste der vorhandenen Desktops ein mit dessen Hilfe zwischen den Desktops gewechselt werden kann

SendTo
<SendTo label="Senden" tooltip="Sende zu Desktop"></SendTo> 
  • label="anzuzeigender Text" (default = "SendTo")
  • tooltip="sendet Window zu Desktop"
  • icon="/Pfad/zum/Icon"

fügt ein Menu ein, mit dessen Hilfe ein ausgewähltes Fenster zu einem anderen Desktop verschoben werden kann

Stick
<Stick>tooltip="Fenster befestigen"</Stick> 

label, tooltip und icon s.o. wie bei "Desktops" und "SendTo"

ermöglicht es ein Fenster zu "befestigen" (sticky), d.h. es bleibt immer an der Oberfläche, bzw. es "zu lösen" (unsticky)

Maximize
<Maximize tooltip="Fenster maximieren"></Maximize>

s.o.

ermöglicht es ein Fenster zu maximieren

Minimize
<Minimize label="minimieren"></Minimize>

s.o.

ermöglicht es ein ausgewähltes Fenster zu minimieren

Shade
<Shade label="ein-/ausrollen"></Shade>

s.o.

ein ausgewähltes Fenster kann bis auf die Titelzeile "eingerollt" werden

Move
<Move icon="symbol-move.png"></Move>

s.o.

ein ausgewähltes Fenster bewegen

Resize
<Resize label="Grösse" "icon="resize.png"></Resize>

s.o.

die Grösse eines ausgewählten Fensters verändern

Kill
<Kill></Kill>

s.o.

ein ausgewähltes Fensters kann "getötet" werden. Dabei werden auch alle in diesem Fenster laufenden Prozesse gewaltsam beendet, also nur im Notfall anwenden

Close
<Close tooltip="Fenster schliessen"></Close>

s.o.

ein ausgewähltes Fensters kann geschlossen werden

Restart
<Restart tooltip="jwm neu starten"></Restart>

s.o.

jwm wird neu gestartet. Dabei bleiben alle Anwendungen nach dem Neustart erhalten

Exit
<Exit confirm="true">KOMMANDO</Exit>

"confirm" legt fest, ob eine Bestätigungsabfrage vor dem Exit erscheint (default="true"), label, tooltip u. icon s.o.

jwm wird beendet. Wird als Text ein KOMMANDO angegeben, so wird dieses Kommando ausgeführt

Das Root-Menu kann mehrfach angeführt werden, um mehrere Menus zu erhalten, die dann über verschiedene Maustasten erreicht werden:

<RootMenu onroot="1" labeled="true" label="START">
  <Program icon="utilities-terminal" label="Terminal">terminator</Program>
  <Program icon="flameshot" tooltip="Screenshotprogramm mit vielen Möglichkeiten" label="Flameshot">flameshot</Program>
  <Menu icon="folder" label="Anwendungen">
    <Program icon="sound" label="Audacious">audacious</Program>
      ...
  </Menu>
</RootMenu>
<RootMenu onroot="3" labeled="true" label="START 2">
  <Program icon="edit-find" label="Anwendungsfinder">xfce4-appfinder</Program>
</RootMenu>

In diesem Beispiel erreicht man mit der Maustaste 1 ein umfangreiches Menu und mit der Maustaste 3 erscheint ein kleines Menu, dass lediglich aus dem Anwendungsfinder (xfce4-appfinder) besteht.

Program[Bearbeiten | Quelltext bearbeiten]

Im Tag "Program" könnte man auch das Attribut "label" weglassen. In diesem Fall würde dann der Programmname im Menu angezeigt.

Zusätzlich zu den Attributen "icon" und "label" ist auch ein Attribut "tooltip" möglich, dessen Text beim Überfahren mit der Maus sichtbar wird:

<Program icon="flameshot" tooltip="Screenshotprogramm mit vielen Möglichkeiten" label="Flameshot">flameshot</Program>

Programme müssen nicht zwingend innerhalb der Tags <Menu></Menu> stehen. Für oft verwendete Anwendungen bietet es sich an, sie z.B. ganz am Anfang vor den einzelnen Menugruppen aufzuführen. Wichtig ist nur, dass sie innerhalb des Rootmenus liegen.

<RootMenu onroot="12" labeled="true" label="START">
  <Program icon="utilities-terminal" label="Terminal">terminator</Program>
  <Program icon="web-browser" label="Firefox">firefox</Program>
  <Menu icon="folder" label="Büro">
    <Program icon="/libreoffice-startcenter.png" label="LibreOffice">libreoffice</Program>
    ...
  </Menu>
</RootMenu>

Restart und Exit[Bearbeiten | Quelltext bearbeiten]

Es ist sehr praktisch, zusätzlich zu den Menu und Programm-Punkten zwei Einträge für Restart und Exit einzubauen. Dafür gibt es in jwm die Tags "Restart" und "Exit" mit folgendem Aufbau:

<Restart label="Restart" icon="reload"/>
<Exit label="Exit" confirm="true" icon="application-exit"/>

Die Label, also die Beschriftungen für die Menupunkte, sind frei wählbar, als Default sind "Restart" und "Exit" eingestellt, könnten im Beispiel also auch weggelassen werden.

Tray[Bearbeiten | Quelltext bearbeiten]

Es können mehrere Leisten (Trays) eingerichtet werden. Dafür werden die Einträge zwischen <Tray> und </Tray> benutzt. Ein Beispiel:

<Tray x="0" y="-1" autohide="off" delay="1000">
  <TrayButton label="JWM">root:1</TrayButton>
  <Spacer width="2"/>
  <TrayButton label="_">showdesktop</TrayButton>
  <Spacer width="2"/>
  <Pager labeled="true"/>
  <TaskList maxwidth="256"/>
  <Swallow width="32" height="32" name="xclock">xclock</Swallow>
  <Dock/>
  <Clock format="%l:%M %p">
    <Button mask="123">exec:xclock</Button>
  </Clock>
</Tray>

mit

<Tray x="0" y="-1" autohide="off" delay="1000">

wird festgelegt, dass die Leiste sich links unten (x="0" y="-1") befinden soll. Ursprung des Koordinatenursprungs ist normlerweise links oben. Bei negativen Werten kehrt sich dies um -> y="-1" bedeutet vom unteren Rand.

  • autohide: Gibt den Ort an, an dem die Taskleiste ausgeblendet wird, wenn sie nicht aktiviert ist. Standardwert ist "off", um das Ausblenden zu deaktivieren. Mögliche Werte sind "left" (links), "right" (rechts), "top" (oben), "bottom" (unten) und "off" (aus).
  • x="n": x-Koordinate der Leiste, 0 = ganz links, negative Werte zählen vom rechten Rand
  • y="n": y-Koordinate der Leiste, 0 = ganz oben, negative Werte zählen vom unteren Rand
  • width="n": Breite der Leiste, 0 (default) bedeutet, dass sich die Leistenbreite optimal nach dem Inhalt und dem Layout der Leiste richtet. Bei negativen Werten berechnet sich die Leistenbreite aus der Breite des Bildschirms minus n
  • height="n": Höhe der Leiste, 0 (default) bedeutet, dass sich die Höhe der Leiste optimal nach dem Inhalt und dem Layout der Leiste richtet. Bei negativen Werten berechnet sich die Höhe der Leiste aus der Höhe des Bildschirms minus n
  • layout: Ausrichtung der Leiste. Mögliche Werte "vertical" oder "horizontal" (default)
  • valign: vertikale Ausrichtung der Leiste. Mögliche Werte "fixed" (default), "top", "center" oder "bottom"
  • halign: horizontale Ausrichtung der Leiste. Mögliche Werte "fixed" (default), "left", "center" oder "right"
  • delay: Verzögerung in Millisekunden
  • TrayButton: fügt einen Button zur Leiste hinzu. Folgende Aktionen können ausgelöst werden:
    • exec:KOMMANDO: führt das angegebene Kommnado aus
    • root:n: zeigt das Root-Menu Nummer n an (es können mehrere Rootmenus angelegt werden, durchnummeriert ab 1 - s.o.), Default = root:1
    • showdesktop: minimiert alle geöffneten Fenster auf dem Desktop
  • folgende Attribute sind für TrayButton möglich:
    • label: wie üblich, die Bezeichnung des Buttons
    • popup: ein Text, der in einem kleinen Popup-Fenster beim Überfahren des Traybuttons mit der Maus angezeigt wird. Default ist der bei label angegebene Text (wenn vorhanden)
    • icon: Icon, das angezeigt werden soll
  • Spacer: Zwischenraum
    • width="n": Breite in n Pixeln (0 beansprucht den gesamten verfügbaren Platz = Default)
    • height="n": Höhe in n Pixeln (0 beansprucht den gesamten verfügbaren Platz = Default)
  • showdesktop: minimiert alle geöffneten Fenster auf dem Desktop
  • Pager: Fügt der Leiste einen "Pager" hinzu. Ein Pager zeigt eine Miniaturdarstellung eines Desktops an. Wenn die Maus sich über dem Pager befindet, kann man mit dem Scrollrad zwischen den Desktops wechseln. Wird die rechte Maustaste gedrückt gehalten, kann ein Fenster im Pager verschoben werden, wodurch sich seine Position auf dem echten Desktop ändert. Man kann auch ein Fenster im Pager von einem Desktop auf einen anderen ziehen. Der Tag "Pager" unterstützt das folgende Attribut:
    • labeled: "true" oder "false". Legt fest, ob der Pager Textlabel hat oder nicht, Default = "false"
  • TaskList: fügt eine Taskliste zur Leiste hinzu
    • maxwidth="n": die maximale Anzeigebreite der einzelnen Elemente der Taskliste. 0 = keine Breitenbeschränkung (Default)
    • height="n": Anzeigenhöhe der einzelnen Elemente der Taskliste. 0 = keine Festlegung (Default)
    • labeled: "true" oder "false". Legt fest, ob die einzelnen Elemente Textlabel haben oder nicht, Default = "true"
  • Swallow: fügt ein Programm in die Leiste ein, der Text (hier "xclock") bezeichnet das auszuführende Kommando
    • name="NAME": Name des Programms. Darf nicht fehlen.
    • width="n": Breite in n Pixeln (0 beansprucht den gesamten verfügbaren Platz = Default)
    • height="n": Höhe in n Pixeln (0 beansprucht den gesamten verfügbaren Platz = Default)
  • Dock: Hinzufügen eines Docks für Systembenachrichtigungen. Die Größe des Docks ist dynamisch, basierend auf der Größe des Trays und der Anzahl der enthaltenen Elemente. Pro Instanz von JWM ist nur ein Dock erlaubt.
  • Clock: fügt eine Uhr zur Leiste hinzu.
    • format: bestimmt das Anzeigeformat der Uhr, die gleichen Abkürzungen wie bei strftime (s. man strftime)
    • Button mask: legt fest, ob und mit welchen Maustasten eine Aktion beim Klicken auf die Uhr usgelöst werden soll. Default = "123", zur Nummerierung s.o. bei "onroot". Folgende Aktionen können festgelegt werden:
      • exec:KOMMANDO: führt das angegebene Kommnado aus
      • root:n: zeigt das Root-Menu Nummer n an (wie bei TrayButton, s.o.)
      • showdesktop: minimiert alle geöffneten Fenster auf dem Desktop

Style[Bearbeiten | Quelltext bearbeiten]

allgemeine Tags[Bearbeiten | Quelltext bearbeiten]

hier werden die Tags behandelt, die allgemein für Windows, den Tray, die Taskliste, den Pager, das Menu und Popups benutzt werden können.

  • Font: benutzter Fontname und -grösse, durch Minus getrennt, ev. gefolgt durch eine Auszeichnung nch einem Doppelpunkt: <Font>Sans-9:bold</Font>
  • Foreground: Farbe des Vordergrundes. In den meisten Fällen handelt es sich dabei um die Textfarbe. Kann als sechsstelliger Hex-Wert im RGB-Format angegeben werden (#FF0000 wäre rot), oder als zulässiger Farbname (white, green, red, black, yellow usw.) Sind Farbverläufe möglich können zwei Farbwerte durch Doppelpunkt getrennt angegeben werden: <Foreground>white:gray</Foreground>
  • Background: Farbe des Hintergrundes. Mögliche Werte wie bei Foreground: <Background>#FF0000</Background>
  • Opacity: Durchsichtigkeit bzw. Deckkraft, mögliche Werte zwischen 0.0 (völlig durchsichtig) und 1.0 (nicht durchsichtig). Default = 1.0 (funktioniert nur mit einem Composit-Manager)<Opacity>0.8</Opacity>
Outline red bei einem Editor
Tag <Outline>red</Outline>
  • Outline: Farbe der Fensterumrandung - nicht zu verwechseln mit dem Fensterrahmen von Anwendungen - es handelt sich dabei um eine dünne Linie ausserhalb des Fensterrahmens (s. Screenshot rechts). Mögliche Werte wie bei Foreground. Default-Farbe ist eine etwas dunklere Schattierung des Fensterhintergrundes: <Outline>red</Outline>

aktive und inaktive Elemente[Bearbeiten | Quelltext bearbeiten]

es ist auch möglich aktiven und inaktiven Elementen unterschiedliche "Stile" zuzuweisen und so die aktiven Elemente optisch hervorzuheben. Man könnte also dem aktiven Fenster einen anderen Hintergrund und eine andere Durchsichtigkeit geben als den inaktiven Fenstern:

   <WindowStyle decorations="motif">
       Sans-10:bold
       <Foreground>#FFFFFF</Foreground>
       <Background>#555555</Background>
       <Opacity>0.4</Opacity>
       <Active>
           <Foreground>#FFFFFF</Foreground>
           <Background>#0077CC</Background>
           <Opacity>1.0</Opacity>
       </Active>
   </WindowStyle>

in diesem Beispiel haben inaktive Fenster ein helles Grau (#555555) als Hintergrund und sind durchsichtiger <Opacity>0.4</Opacity> als das aktive Fenster, das als Hintergrund ein helles Blau (#0077CC) besitzt und undurchsichtig ist <Opacity>1.0</Opacity>

Dies ist für alle Elemente möglich, die in ihrem Zustand zwischen "aktiv" und "inaktiv" wechseln können, also Fenster, Elemente in der Leiste (Tray), in der Taskliste, im Menu und im Pagerfenster sowie Button in der Leiste (dort gedrückte Button sind "aktiv"). Wie im obigen Beispiel gezeigt, werden diese Tags immer innerhalb des betreffenden Styles

  • <WindowStyle></WindowStyle>
  • <TrayStyle></TrayStyle>
  • <TaskListStyle></TaskListStyle>
  • <TrayButtonStyle></TrayButtonStyle>
  • <PagerStyle></PagerStyle>
  • <MenuStyle></MenuStyle>

mit <Active> ... </Active> definiert.

spezielle Tags und Attribute[Bearbeiten | Quelltext bearbeiten]

hier werden Tags und Attribute behandelt, deren Anwendung nur für bestimmte Stile benutzt werden können, bzw. Attribute, : WindowStyle (legt das Aussehen der Fenster fest)

  • decorations: welche Windowdekoration (flat oder motif). flat = default.
  • Width: Breite des Windowrand. Minimum = 1, Maximum = 128, Default = 4
  • Height: Höhe der Titelzeile. Minimum = 1, Maximum = 256, Default = Grösse des verwendeten Fonts
  • Corner: bestimmt die "Rundung" der Fensterecken. Minimum = 0 (rechteckig), Maximum = 5 (grösste Rundung), Default = 4

TrayStyle (Aussehen des Tray)

  • decorations: welche Traydekoration (flat oder motif). flat = default.
  • group: sollen die Windows in der Taskbar gruppiert werden (true) oder nicht (false). Default = "false"
  • list: welche Windows sollen in der Taskbar angezeigt werden, "desktop" oder "all". Default = "desktop"

MenuStyle (Aussehen der JWM-Menus)

  • decorations: welche Dekoration (flat oder motif). flat = default.

PopupStyle (bestimmt Aussehen und Verhalten von Popup-Fenstern)

  • delay: Verzögerung in Millisekunden, bis das Popup-Fenster aktiv wird. Default = 600
  • enabled: legt fest, ob und welche Popup-Fenster angezeigt werden. Dies ist eine durch Kommata getrennte Liste, in der folgende Werte möglich sind:
    • true: alle eingeschaltet (default)
    • false: keine Popup-Fenster
    • button: Tray-Buttons
    • clock: Uhr
    • menu
    • pager
    • task: Elemente in der Task-Leiste

Weblinks[Bearbeiten | Quelltext bearbeiten]