2026/10/09

IceWM Window Manager

IceWM 是一個專為 X Window System 設計的視窗管理員, 由 Marko Maček 於 1997 年開始開發。 IceWM 是個十分輕量的視窗管理員,通常一些設定需要自行修改文字設定檔才行。 要考量的是 IceWM 只是一個視窗管理員,而不是一個桌面環境, 因此缺少檔案管理員 (File Manager) 等內建程式, 需要安裝某個桌面環境提供的程式或者是外部的應用程式。應該也有為了能夠在老舊硬體也能夠執行良好, 使用 IceWM 作為核心,組合其它的應用程式加上自己的設定以後的 Linux Distribution。

在安裝完成之後,建立 ~/.config/icewm 目錄(openSUSE 可以使用此目錄進行設定), 再複製下列的設定檔:

cp -a /usr/share/icewm/{prefoverride,toolbar,menu} ~/.config/icewm/

檔案 prefoverride 可以作為主設定檔(包含 theme 設定的項目可以在這裡再設定一次覆蓋掉); 工具列設定在 toolbar;主選單在 menu。

IceWM 支援 theme,在 ~/.config/icewm 下建立 theme 檔案, OpenSUSE 內建的 theme 在 /usr/share/icewm/themes,設定的方式如下:

Theme="win95/default.theme"

下面是我工具列 toolbar 的設定:

prog "xterm" utilities-terminal xterm
prog "Firefox" firefox firefox file:///home/danilo/public_html/index.html

(在 prog 後面的項目是:程式名稱 程式圖示 程式執行路徑與參數,menu 與 toolbar prog 的設定語法相同)

下面是我主選單 menu 的設定:

prog XTerm xterm xterm
prog Firefox firefox firefox
prog Dolphin org.kde.dolphin dolphin
prog LibreOffice libreoffice-main libreoffice
prog Kate kate kate
prog Gwenview gwenview gwenview
prog Elisa elisa elisa
prog "VLC Media Player" vlc vlc
includeprog icewm-menu-fdo --seps -d1400 -D1650 -S --limit-max-len=42
#menufile Programs folder programs
menufile Tool_bar folder toolbar
menuprog SUSE folder xdg_menu --format icewm

icewm-menu-fdo 指令可以從系統資料自動產生選單與子選單。


我修改的主要設定檔 prefoverride 設定項目為:

#  Opaque window move.
OpaqueMove=0 # 0/1

#  Opaque window resize.
OpaqueResize=0 # 0/1

#  Favour Xft fonts over core X11 fonts where possible.
PreferFreetypeFonts=1 # 0/1

#  Enable Alt+Tab window switching.
QuickSwitch=1 # 0/1

#  Show mailbox status on task bar.
TaskBarShowMailboxStatus=0 # 0/1

#  Show 'show desktop' button on taskbar (value of 2 to put after the clock)
TaskBarShowShowDesktopButton=2 # [0-2]

#  Desktop background image(s), comma separated.
DesktopBackgroundImage="/home/danilo/Pictures/orange-cat.jpg"

在 prefoverride 設定完桌面的背景桌布以後,可以使用 icewmbg -r 重新載入觀察結果。


因為 IceWM 本身不包含音訊管理功能,需要在啟動時設定自動執行 PipeWire 服務。 不過好像不設定也可以,在我設定之前,音訊功能使用 ALSA 似乎也可以正常工作 (並且可以使用 alsamixer 調整音量)。 IceWM 的自動啟動檔案為 ~/.config/icewm/startup (記得使用 chmod +x startup 設定檔案屬性為可執行)。 使用 systemd 的系統,startup 檔案內容如下:

#!/bin/bash

systemctl --user start pipewire pipewire-pulse wireplumber

如果使用非 systemd 系統,則改為如下:

#!/bin/bash

pipewire &
pipewire-pulse &
wireplumber &

檢查是否設定成功:

pactl info

如果輸出結果中的 Server Name 顯示為 PulseAudio (on PipeWire x.y.z), 就代表設定成功。


下面嘗試設定 Gtk 以及 Qt 的 theme 設定,讓使用 Gtk 以及 Qt 撰寫的程式看起來比較美觀; 以及 LibreOffice 的相關設定。設定方式為在 ~/.config/icewm/env 這個檔案設定環境變數:

GTK_THEME="Adwaita"
#GTK_THEME="Adwaita:dark"
QT_QPA_PLATFORMTHEME="gtk3"
QT_STYLE_OVERRIDE="Adwaita"
#QT_STYLE_OVERRIDE="Adwaita-Dark"
SAL_USE_VCLPLUGIN="qt6"

注意: QT_QPA_PLATFORMTHEME 的設定值需要安裝相關的 platform theme。 另外一個處理方案是使用 qt5ct/qt6ct 處理 Qt5/Qt6 在非 Qt 開發的環境下的視覺設定, 也需要設定 QT_QPA_PLATFORMTHEME 為正確的值 (qt5ct/qt6c5) 才行。