IceWM

Aus mxlinuxusers.de


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.


Logo
IceWM-Fenstermanager
IceWM-Fenstermanager

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

menu[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: verschachteltetes Anwendungsmenu von IceWM

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.

von icewm-ps-menu.sh erzeugtes Menu
#!/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”

Weblinks[Bearbeiten | Quelltext bearbeiten]