IceWM
![]() |
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetesteten Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.
|
IceWM ist ein Fenstermanager der auf dem X Windows System aufbaut.
Installation[Bearbeiten | Quelltext bearbeiten]
IceWM kann über den MX Paket-Installer: "Beliebte Anwendungen" installiert werden. In diesem Fall werden die Pakete icewm, icewm-common und icewm-themes-antix installiert.
Wer es noch spartanischer haben möchte oder muss kann auch nur das Paket icewm-lite installieren, das nur den Fenstermanager icewm ohne Taskleiste beinhaltet.
sudo apt-get install icewm-lite
Zu dem eigentlichen Binär-Paket icewm gehören noch folgende Dienstprogramme:
- icewmbg: zum Setzen des Hintergrundes
- icewm-menu-fdo: erzeugt das IceWM-Menu aus den zugehörigen IceWM-.desktop-Dateien, wird aber in der Regel nicht direkt aufgerufen
- icewm-menu-gnome2: gleiche Funktionalität wie icewm-menu-fdo, aber nur wenn IceWM als Fenstermanager für KDE/GNOME benutzt wird
- icewmhint: ebenfalls internes Hilfsprogramm, das zur Kommunikation zwischen IceWM und den einzelnen Fenstern der Oberfläche dient
- icehelp: ruft die ausführliche Hilfedatei /usr/share/doc/icewm-common/html/icewm.html auf
- icewm-session: der eigentliche Session-Manager von IceWM, lädt zusätzliche Environment-Variable aus der Datei $HOME/.icewm/env und startet icewmbg, icewmtray, icewm sowie, wenn vorhanden, ein Startup-Skript $HOME/.icewm/startup. Beim Beenden der IceWM-Sitzung wird auch ein Shutdown-Skript ausgeführt.
- icewmtray: kümmert sich um Tray-Applets
Konfiguration[Bearbeiten | Quelltext bearbeiten]
icewm wird über die folgenden Dateien konfiguriert:
- keys - Definition von Tastaturkürzeln
- menu - Inhalt des Startmenüs
- preferences - Verhalten des Fenstermanagers
- prefoverride - erlaubt das Überschreiben von Preferences, auch wenn es sich um fest eincodierte Einstellungen handelt
- toolbar - Einstellungen der Taskleiste
- winoptions - Verhalten von einzelnen Anwendungen
Wie üblich befinden sich die systemweiten Konfigurationsdateien im Verzeichnis /etc/X11/icewm/ und die userspezifischen in $HOME/.config/icewm/ bzw. $HOME/.icewm/ (Vorrang vor den systemweiten Konfigurationsdateien). Mit dem Kommando
icewm --directories
kann man kontrollieren, in welchen Verzeichnissen IceWM nach seinen Konfigurationsdateien sucht. Die Ausgabe folgt dabei der Priorität, das heisst, die zuerst ausgegebenen Verzeichnisse werden vor den später ausgegebenen berücksichtigt.
$ icewm --directories icewm Konfigurationsverzeichnisse: XdgConfDir=/home/gosia/.config/icewm PrivConfDir=/home/gosia/.icewm CFGDIR=/etc/X11/icewm LIBDIR=/usr/share/icewm LOCDIR=/usr/share/locale DOCDIR=/usr/share/doc/icewm-common
Bei der Installation werden in /etc/X11/icewm/ jedoch nur wenige Dateien angelegt. Die Standardkonfigurationsdateien befinden sich im Verzeichnis /usr/share/icewm/ und sollten von dort nach /etc/X11/icewm/ und in das userspezifische Konfigurationsverzeich kopiert werden, wo sie beliebig angepasst werden können.
keys[Bearbeiten | Quelltext bearbeiten]
Definition der Tastenkombinationen um Kommandos zu starten
Aufbau:
keys "TASTENKOMBINATION" "KOMMANDO"
- keys: feste Zeichenkette
- TASTENKOMBINATION: Bezeichnung der Tastenkombination in Anführungszeichen, z.B. "Ctrl+Alt+x". Als Namen für die Sondertasten sind Alt, Ctrl, Shift, Meta, Super and Hyper möglich
- KOMMANDO: Shellkommando, das mit der Tastenkombination gestartet werden soll
Beispiel:
# This is an example for IceWM's hotkey definition file. # # Place your variants in /etc/X11/icewm or in $HOME/.icewm key "Alt+Ctrl+t" xterm key "Alt+Ctrl+m" xdg-open https://forum.mxlinux.org
[Bearbeiten | Quelltext bearbeiten]
Die Datei menu legt fest, wie das IceWM-Anwendungsmenu aufgebaut ist.
Die einzelnen Menupunkte haben folgenden Aufbau (alle Elemente durch ein oder mehrere Leerzeichen getrennt)
progr "NAME" ICON KOMMANDO [OPTION]
- progr: feste Zeichenkette
- NAME: Bezeichnung für das zu startende Programm, in Anführungszeichen eingeschlossen.
- ICON: Icon zum Programm (ohne Extension). Wird kein Icon gewünscht, muss dort ein Minuszeichen - stehen.
- KOMMANDO: auszuführendes Programm/Skriptname
- OPTION: eventuell notwendige Optionen zum Kommando, kann fehlen
Zur Strukturierung der Menupunkte können Verzeichnisse (Folder) und Unterverzeichnisse (Subfolder) eingerichtet werden:
menu NAME folder { prog "NAME" ICON KOMMANDO [OPTION] ... }
Unterverzeichnisse entstehen, indem die Menu-Gruppen verschachtelt werden (s. dieses Beispiel):
menu "Bildschirm" folder { menu "Schonen" folder { prog "Activate ScreenSaver (Next)" - /usr/bin/xscreensaver-command -next prog "Activate ScreenSaver (Previous)" - /usr/bin/xscreensaver-command -prev prog "Activate ScreenSaver (Random)" - /usr/bin/xscreensaver-command -activate prog "Demo Screen Hacks" - /usr/bin/xscreensaver-command -demo prog "Disable XScreenSaver" - /usr/bin/xscreensaver-command -exit prog "Enable XScreenSaver" - /usr/bin/xscreensaver prog "Reinitialize XScreenSaver" - /usr/bin/xscreensaver-command -restart prog "ScreenSaver Preferences" - /usr/bin/xscreensaver-command -prefs } menu "Sperren" folder { prog "Lock Screen (XScreenSaver)" - /usr/bin/xscreensaver-command -lock } }
dies ergibt dann folgende Menustruktur:
Eine weitere Möglichkeit der Strukturierung bietet das Schlüsselwort
separator
dadurch werden einzelne Menupunkte durch einen horizontalen Strich voneinander getrennt.
Es können auch ganze Gruppen von Menupunkten in eine Datei ausgelagert und mit
menufile NAME folder DATEINAME
eingebunden werden. Dies kann genutzt werden um z.B. auf mehreren Rechnern die gleiche Menustruktur zu erreichen. Praktisch auch beim Umzug zu einem neuen PC, da muss nur die Datei kopiert werden.
- menufile: feste Bezeichnung
- NAME: dieser name erscheint im Menu
- folder: eigentlich der Name eines Icons, aber das Icon "folder" passt hier ganz gut
- DATEINAME: Name der Datei, in der die Menupunkte abgelegt wurden. Der Name kann an sich beliebig gewählt werden, es bieten sich aber "sprechende" Namen wie programme, programs o.ä. an. IceWM sucht nach dieser Datei wie üblich in der durch
icewm --directories
angegebenen Reihenfolge (s. "Konfiguration").
Eine sehr praktische Möglichkeit dynamisch erzeugte Menus anzulegen bietet diese Zeile:
menuprog "NAME" folder icewm-menu-fdo
- menuprog: feste Bezeichnung
- NAME: Bezeichnung für das oberste Menuverzeichnis
- folder: eigentlich der Name eines Icons, aber das Icon "folder" passt hier ganz gut und ist allgemein gebräuchlich
- icewm-menu-fdo: der Name des Skripts, das den ganzen Menubaum dynamisch erzeugt. Neben icewm-menu-fdo existieren noch andere Skripte für diesen Zweck, aber icewm-menu-fdo wird zusammen mit dem Paket icewm installiert, so daß dies meistens auch benutzt wird. icewm-menu-fdo könnte auch von Hand in dieser Form aufgerufen werden
icewm-menu-fdo > ~/.icewm/menu
um ein - allerdings statisches - Menu zu erzeugen. Ist aber nicht empfehlenswert, da dies bei jedem neu installierten Paket wiederholt werden müsste.
Eine weitere Möglichkeit für dynamisch erzeugte Untermenus (ähnlich den Pipe-Menus von Openbox) ist menuprogreload
menuprogreload NAME ICON TIMEOUT SKRIPTNAME [OPTIONEN]
- menuprogreload: feste Bezeichnung
- NAME: Bezeichnung für den Menupunkt
- ICON: anzuzeigendes Icon, Wird kein Icon gewünscht, muss dort ein Minuszeichen - stehen
- TIMEOUT: Anzahl Sekunden, nach der das Menu neu erzeugt wird. In der Regel ist dieser Wert 0, das heisst, das Menu beim Anklicken neu erzeugt
- SKRIPTNAME: name des auszuführenden Skripts
- OPTIONEN: eventuell notwendige Optionen zum Kommando, kann fehlen
menuprogreload führt das Skript SKRIPTNAME aus, dessen Ausgabe wird dann zum Aufbau der Untermenus benutzt. Deshalb muss die Ausgabe des Skriptes den weiter oben angeführten Regeln genügen, also z.B. so aussehen:
prog "NAME" ICON KOMMANDO [OPTION]
Ist dies nicht der Fall (die Ausgabe-Struktur stimmt nicht, Skript produziert Fehler oder existiert nicht o.ä.), passiert einfach nichts - keine sichtbare Fehlermeldung, es wird kein Submenu erzeugt. Deshalb empfiehlt es sich, solche Skripte zuerst auf der Kommandozeile zu testen.
Beispiel[Bearbeiten | Quelltext bearbeiten]
dieses Skript icewm-ps-menu.sh stammt von Konstantin Korikov, der auch dieses Feature mit dynamischen Menus entwickelt hat.
#!/bin/sh
#
# icewm-ps-menu.sh - Process menu for IceWM.
#
# Written by Konstantin Korikov.
#
# This is test script that generates IceWM menu
# with running user process list. It uses menuprogreload
# feature of IceWM menu. To use this script, add followed
# line to ~/.icewm/menu or ~/.icewm/toolbar
#
# menuprogreload ps - 0 icewm-ps-menu.sh
#
if [ $# = 1 ]; then
set `ps -p $1 --no-header -o pid,%cpu,%mem,time`
echo "prog 'CPU: $2%' - true"
echo "prog 'MEM: $3%' - true"
echo "prog 'TIME: $4' - true"
echo "separator"
for i in HUP INT KILL TERM; do
echo "prog $i - kill -$i $1"
done
else
ps -aU `id -ru` --no-headers -o '%p|%c' |
awk -F '|' -v sc="$0" \
'{ printf("menuprogreload \"%d %s\" - 0 %s %d\n", $1, $2, sc, $1) }'
fi
Zuerst wird das Skript icewm-ps-menu.sh ohne Parameter aufgerufen
menuprogreload ps - 0 icewm-ps-menu.sh
erzeugt also mit den Zeilen 25-27 rekursiv ein Untermenu, in dem die laufenden Prozesse aufgelistet werden. Wird einer dieser Menupunkte angeklickt, so werden die Zeilen 16-23 ausgeführt, weil diesmal ein Parameter (die Prozess-ID) mitgegeben wird und das Skript erzeugt die ersten drei Anzeigen mit den Werten des Prozesses (CPU-, MEM- und TIME-Verbrauch) und nach einem Seperator weitere vier Menupunkte, mit denen der laufende Prozess je nach dem gewählten Signal beendet bzw. getötet werden kann.
preferences[Bearbeiten | Quelltext bearbeiten]
Hauptkonfigurationsdatei für IceWM mit einer Vielzahl von Möglichkeiten, um Pfade, Farben, Fonts und das Verhalten von IceWM und der Taskbar zu steuern. Da die man-Page zu icewm-preferences über 370 Variable aufzählt, seien nur einige häufiger gebrauchte genannt:
TaskBarAtTop=1 # Taskbar oben statt unten TaskBarWidthPercentage=90 # Breite der Taskbar in % TaskBarJustify="left" # Ausrichtung der Taskbar (left, right oder center) TaskBarShowClock=1 # Uhr in der Taskbar anzeigen TimeFormat="%R" # Anzeigeformat der Uhr - String wie bei strftime OpaqueMove=0 # Fensterinhalt wird beim Bewegen durchsichtig OpaqueResize=0 # Fensterinhalt bei Grössenänderung durchsichtig WorkspaceNames="Progr", "News", "Office", "Multimedia" # Namen für die einzelnen Arbeitsflächen NetworkStatusDevice="eth0 wlan0" # Status welcher Netzwerke
prefoverride[Bearbeiten | Quelltext bearbeiten]
Normalerweise haben die Themen-Einstellungen Vorrang vor den Einstellunge in der preferences-Datei. In der prefoverride-Datei können bei Bedarf solche Themen-Einstellungen überschrieben werden. Da dies jedoch Nebenwirkungen haben kann, sollte man von dieser Möglichkeit - wenn überhaupt - nur sehr sparsam Gebrauch machen. Einige sinnvolle Möglichkeiten werden in dieser Beispieldatei gezeigt:
DesktopBackgroundColor="rgb:4b/3f/55" # Hintergrundfarbe ändern DesktopBackgroundImage="PFAD/ZUM/BILD"# vielleicht auch ein kleines Bild im Hintergrund DesktopBackgroundScaled=0 # soll aber nicht skaliert werden DesktopBackgroundCenter=1 # und soll auch in der Bildschirmmitte erscheinen MenuFontNameXft="Sans:size=12" # vergrössert Schriftgrösse im Anwendungsmenu MenuIconSize=32 # bei Bedarf auch die Icons vergrössern SmallIconSize=32 KeyWinClose="F6" # F6 statt dem üblichen Alt+F4 zum schliessen von Windows benutzen KeySysTileVertical="Super+F2" # ein Hauch von Tiling-Windows
toolbar[Bearbeiten | Quelltext bearbeiten]
In der Datei toolbar wird eingestellt, welche Programme als Icons in der Taskbar auftauchen. Jedes Programm erhält dabei eine Zeile, die so aussehen soll (alle Elemente durch ein oder mehrere Leerzeichen getrennt):
progr "NAME" ICON KOMMANDO [OPTION]
- progr: feste Zeichenkette
- NAME: Bezeichnung für das zu startende Programm, in Anführungszeichen eingeschlossen. Diese Bezeichnung wird angezeigt, wenn sich der Cursor über dem betreffenden Icon befindet, bzw. steht direkt in der Taskbar als Name, wenn kein Icon festgelegt wurde
- ICON: Icon zum Programm (ohne Extension). Wird kein Icon gewünscht, muss dort ein Minuszeichen - stehen
- KOMMANDO: auszuführendes Programm/Skriptname
- OPTION: eventuell notwendige Optionen zum Kommando, kann fehlen
Beispiel:
# This is a default toolbar definition file for IceWM # Place your personal variant in $HOME/.icewm directory. # prog "XTerm" xterm x-terminal-emulator prog "WWW" firefox x-www-browser prog "Dateimanager" /usr/share/icons/Faenza/apps/24/file-manager pcmanfm prog "Geany" geany geany
winoptions[Bearbeiten | Quelltext bearbeiten]
mit der Datei winoptions kann das Verhalten einzelner Anwendungen gesteuert werden, z.B. soll der Browser immer auf dem ersten Desktop geöffnet werden und der Editor immer minimiert auf dem zweiten Desktop. Um solche Einstellungen zu machen, muss man zuerst den Namen der zu konfigurierenden Anwendung kennen oder herausfinden. Dazu startet man dieses Kommando in einem Terminal
xprop |grep WM_CLASS
es erscheint ein Fadenkreuz, mit dem man auf die zu konfigurierende Anwendung klickt. Daraufhin wird der Klassenname angezeigt, z.B. für den Firefox
WM_CLASS(STRING) = "Navigator", "Firefox"
Also trägt man in die Datei winoptions folgende Zeile ein:
Firefox.workspace: 0
damit sich der Browser immer auf dem ersten Desktop öffnet (Zählung beginnt bei Null) Damit der Editor (hier geany) sich immer minimiert auf dem zweiten Desktop öffnet, müssen noch folgende Zeilen ergänzt werden:
Geany.workspace: 1 Geany.startMinimized: 1
sonstige Dateien[Bearbeiten | Quelltext bearbeiten]
neben den oben genannten Dateien wertet IceWM noch weitere optionale Dateien aus, die man nicht unbedingt als Konfigurationsdateien bezeichnen kann, die aber trotzdem Einfluss auf die Umgebung von IceWM haben und in diesem Sinne benutzt werden können. Es handelt sich dabei um folgende Dateien:
- env: in dieser Datei können zusätzliche Environment-Variable gesetzt werden. Jede Zeile in der Form VARIABLE=WERT, z.B.
MYBACKUPDIR=/tmp/mybackup/
- startup: eine Skript-Datei, die beim Start von IceWM ausgeführt wird
- shutdown: ebenfalls Skript-Datei, die beim Beenden von IceWM ausgeführt wird
Die Skript-Dateien sind dabei nicht nur auf Shell-Skripte beschränkt, sondern können Skripte in jeder verfügbaren Skriptsprache ausführen. Die konkrete Verwendung bleibt also der Phantasie des Anwenders überlassen, es könnten mit startup z.B. das Vorhandensein bzw. die Bereitschaft von externen Laufwerken getestet und mit shutdown Backups durchgeführt werden.
Themen[Bearbeiten | Quelltext bearbeiten]
Das Aussehen von IceWM kann mit Hilfe von Themen verändert werden. Der einfachste Weg wäre es, die Pakete icewm-themes-antix und/oder icewm-themes-extras-antix zu installieren. Dies hat bei mir funktioniert, führte aber zu den zwei beschädigten Paketen desktop-defaults-full-antix und desktop-defaults-icewm-antix, deren als Abhängigkeit durchgeführte Installation mit dpkg-Fehler abbrach. Den Ursachen, die wahrscheinlich bei mir liegen, bin ich noch nicht nachgegangen.
Da diese Themen-Pakete auf https://gitlab.com/antiX-Linux/icewm-themes-antix/tree/master und https://gitlab.com/antiX-Linux/icewm-themes-extras-antix liegen, können sie auch von dort heruntergeladen werden. Eine weitere Quelle ist https://www.box-look.org/ Sämtliche Dateien, die für ein Thema benötigt werden liegen in einem Verzeichnis. Dieses Verzeichnis kopiert man dann in eines der Verzeichnisse ~/.config/icewm/themes/ oder ~/.icewm/themes/ und kann anschliessend über das IceWM-Menu mit dem Punkt "Motive" das aktuelle Thema auswählen.
Mit dieser englischsprachigen Anleitung kann man sich auch sein eigenes Thema zusammenstellen. Eine leichtere Möglichkeit wäre es, ein bestehendes Thema zumindest optisch, etwas anzupassen. Dazu lädt man die Datei ~/.icewm/themes/NAME-DES-THEMAS/default.thema in den Editor seiner Wahl und kann dann Werte ändern. Die Bedeutung der Variablen ist meistens relativ klar, z.B.
TitleBarHeight=17 # Höhe der Titelbar in Pixeln
logische Werte werden 0=false oder 1=true kodiert
TitleBarCentered=1
Farbangaben können wie auf Webseiten mit Hex- bzw. RGB-Werten oder den Farbnamen ("white", "green", "blue" usw.) angegeben werden:
DesktopBackgroundColor="#0000ff" # Farbe des Desktops: blau ColorDialog="rgb:C0/C0/C0" # Hintergund der Dialogfenster: grau ColorNormalMenuItemText="yellow" # Farbe des Menutextes: gelb
die verwendeten Schriften für Titel, Menus usw. können ebenfalls dort angegeben werden:
MenuFontNameXft=”sans-serif:size=12:bold”