在debian中安装和使用icewm详解

icewm是一个老牌的轻量级窗口管理器,以低资源占用、高效运行和系统稳定性为核心特性,内存占用可低至40MB,而且其布置、行为和windows系统非常接近(左下开始菜单、快速启动栏,右下托盘程序和时钟,中间是窗口栏),如果加载一些windows主题,看起来就是个windows,但是速度快得多。icewm主页:https://ice-wm.org/

我从06年开始用linux(ubuntu+gnome)不久就用icewm,用着很顺手。后来改用debian+xfce4,但是一直很怀念icewm的简洁快速。现在又改回用icewm,写下一些心得。众所周知,icewm只是一个窗口管理器,和桌面环境gnome、xfce4、KDE等不同,并没有包含整套软件,本文用较大篇幅介绍如何用脚本在最小化安装debian后自动化安装icewm,并顺带安装一些轻量级软件,实现比较完整的工作环境,并提供相关脚本。

06年ubuntu 6.06+icewm截图:

debian 13用脚本安装icewm安装完毕截图:

我的机子上debian 13+icewm桌面截图(利用conky美化桌面):

第一部分:安装桌面环境后安装icewm

这是使用icewm最简单的方式,直接安装icewm这个包即可:

sudo apt install icewm

安装完毕后在登录管理器选"icewm会话"。这种方式可以享受icewm的快速,但是桌面环境毕竟占了一些磁盘空间,另外可能有一些服务占内存,但不影响速度。

也可以安装测试版icewm-experimental,提供未正式发布的功能,但通常与主包兼容 ‌‌。它包含标准版尚未引入的实验性功能,例如抗锯齿图标、声音事件支持和渐变效果等,启动时要用icewm-session-experimental。如果安装了icewm-experimental,用icewm-session启动,仍然是用正式版。

安装后,将配置文件复制到~/.icewm:

mkdir ~/.icewm
cp -r /usr/share/icewm/* ~/.icewm/

icewm配置文件都在/usr/share/icewm/和~/.icewm,后者会覆盖前者。主要配置文件‌:

  • preferences/prefoverride - 窗口行为、任务栏设置。‌‌‌两者区别在于前者会被theme的设置覆盖,而后者不会
  • menu - 开始菜单
  • programs - 开始菜单的"程序"子菜单
  • keys - 快捷键绑定
  • toolbar - 快速启动栏
  • startup - 会话启动脚本,启动时自动加载。(这个文件必须要有可执行权限,chmod +x ~/.icewm/startup)
  • themes/ - 主题配置目录
  • env - 给icewm和所有子程序加载环境变量(要使用 icewm-session 命令启动 IceWM才有效)

更换设置后,重启icewm(屏幕闪一下就结束了):

icewm --restart

更换主题(theme):从icewm主页、 https://www.box-look.org/ (国内被墙了)、github下载theme,解压到~/.icewm/themes。antix系统也提供了很多用于高分辨率的theme(带Large或Huge后缀),可以借用,我的主题就是从antix扒来的。

[设置gtk和QT程序的默认字体]

icewm的字体设置包含了菜单字体(MenuFontNameXft)、标题栏字体(TitleFontNameXft)等,但gtk和QT程序的默认字体要另外设置(没设置会发现窗口菜单、输入框字体很小):

gtk-2字体:

编辑~/.gtkrc-2.0,加入:

gtk-font-name = "Sans 12"

gtk-3字体:

编辑~/.config/gtk-3.0/settings.ini,加入:

[Settings]
gtk-font-name = Sans, 12

修改QT程序默认字体:

qt5ct 是官方推荐的图形化配置工具,为所有 Qt 程序设置统一的字体和主题。

sudo apt install qt5ct

在~/.icewm/env中添加:

# QT程序字体设置
QT_QPA_PLATFORMTHEME="qt5ct"

重新登录后启动 qt5ct,即可在"Fonts"选项卡中设置默认字体。

[设置菜单]

注意开始菜单最上面的"终端"是带-ls参数的,也就是让模拟终端以登录shell形式运行,有些模拟终端如sakura会变成全屏。任务栏的"终端"才是不带参数运行模拟终端。

编辑~/.icewm/menu

将包含icewm-menu-fdo一行加上–no-sub-cats参数,意思是"不要子分类",尽量简化菜单结构,只保留一级菜单(比如把"互联网/网页浏览器"变成"互联网"一级),如下:

includeprog icewm-menu-fdo --no-sub-cats --seps -d1400 -D1650 -S --limit-max-len=42

"程序"菜单(program submenu):

"程序"菜单里的配置文件位于 /etc/icewm/programs 或 ~/.icewm/programs,格式和menu文件一致。控制是否显示的开关在preference(默认为开):

ShowProgramsMenu=1

默认是空的,可以把常用项放在这,常用项从menu文件复制。简单的复制方法:

icewm-menu-fdo --no-sub-cats --seps -d1400 -D1650 -S --limit-max-len=42 | grep 你要的常用项名称 | sed 's/^\s*//'

看有没有输出,有输出则重定向到 ~/.icewm/programs

[添加音量按钮]

sudo apt install volumeicon-alsa

~/.icewm/startup中添加:

# 音量按钮
volumeicon &

鼠标放在上面滚动滚轮调大/调小音量,单击打开/关闭。

[按PrintScreen截屏]

修改~/.icewm/keys,增加(我是xfce4,所以用xfce4-screenshooter,其它桌面环境自定):

# 自定义键
key "Print" xfce4-screenshooter

[锁屏]

先确保xscreensaver已安装,编辑~/.icewm/startup,添加:

# 启动锁屏
xscreensaver -no-splash &

现在,xscreensaver 已经随 IceWM 启动了,你可以通过它自带的图形界面程序来配置定时锁屏。

编辑~/.icewm/preferences,找到该行,把注释去掉:

# LockCommand="xscreensaver-command -lock"

"锁住工作站"命令即可工作。

[网络]

preferences这两行作相应修改,点击网络图标弹出网络设置,只显示活动网络。

NetStatusCommand="x-terminal-emulator -e nmtui"
NetStatusShowOnlyRunning=1

[U盘挂载]

结合使用 udisks2 和一个轻量级的自动挂载前端工具,比如 udiskie。udisks2 是系统底层的守护进程,负责检测硬件并执行挂载操作;而 udiskie 则是一个常驻后台的小程序,它会替你和 udisks2 打交道,实现真正的"自动"。

安装 udisks2 和 udiskie。

sudo apt install udisks2 udiskie

为了让 udiskie 在每次登录 IceWM 时自动运行,需要把它加到 IceWM 的启动脚本中。编辑~/.icewm/startup,在文件中添加以下行来启动 udiskie:

# 启动 udiskie 以实现 U 盘自动挂载
udiskie &

注销重新登录之后,插入 U 盘,它就会自动挂载,并且在文件管理器中直接可见了。

[桌面设计]

icewm桌面是空的,要利用桌面大致有几个思路:

1、用文件管理器管理桌面

建议用PcmanFM管理,显示"~/桌面"的文件,这是传统的管理方式,和windows一样。

sudo apt install pcmanfm

编辑~/.icewm/startup,末尾加上:

# 启动 PcmanFM 的守护进程
pcmanfm --desktop &

注销重新登录即可。若需设置壁纸或图标等,可运行:

pcmanfm --desktop-pref

如果要一起启动conky,则~/.icewm/startup要加上:

# 启动 PcmanFM 的守护进程并启动conky
pcmanfm --desktop &

# 等待pcmanfm绘制桌面再启动conky(要安装wmctrl)
while [ `wmctrl -l | grep "pcmanfm" | wc -l` -eq 0 ]
do
	sleep 0.5
done
conky -d &

pcmanfm管理桌面后,conky设置要适当改动,主要是两行(normal改为window也一样):

own_window_type = 'normal',
own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager',

小问题:点击’显示桌面’时,conky窗口也会消失,再点击一下’显示桌面’,或者窗口列表里打开conky又可以恢复。而且注销时会询问是否关闭conky窗口。

2、用桌面管理软件

典型的例子就是idesk。idesk只负责管理桌面图标,背景图片由icewm设置:

gvim ~/.icewm/preferences

找到这一行:

# DesktopBackgroundImage=""

去掉注释,改为:

DesktopBackgroundImage="/usr/share/images/desktop-base/default"

桌面管理软件还有个DesktopFolder,提供了面板、图标和便签功能,比idesk现代得多,只管理桌面图标,不管理背景图片。但是DesktopFolder是基于gnome的,用在xfce4下可以正常运作,背景可以正常显示,但是在icewm下图标可以正常显示,但不能辨识icewm所设的背景颜色和背景图片,都是黑的。如何解决还没找到方法。如果可以解决也很好用。

3、用conky结合脚本,将桌面作为提示板

这是我在使用的方法,只作为提示板,不再管理"~/桌面"的文件(在文件管理器中管理)也不设快捷方式,好处就是省资源,DIY空间大,就是写脚本费事点。设想就是开三个conky实例,一个位于左边,显示日历和天气;一个位于中间,显示备忘录;一个位于右边,显示系统状态。左边的刷新间隔很长(24小时),只有在进入icewm时刷新一次;中间刷新间隔也很长(24小时),但是接受脚本文件修改备忘录并更新;右边正常刷新(间隔0.5秒)。

网址与上下文之间请用空格隔开,否则上下文的文本也会被当成 URL 的一部分,渲染为错误的链接。

第二部分:最小化安装debian并安装icewm

这是安装icewm最干净的方式。在最小化安装的Debian(只安装核心组件,没有图形界面和任何桌面环境)上配置IceWM,核心是分步构建图形环境:先装基础组件,再处理登录启动,最后安装相关软件并做些美化。优点是:所需磁盘空间极小(占用空间(运行两个脚本,装好icewm和基本软件后,df -h查看):xinit启动:5.6 G,lightdm启动:5.7 G),运行极快,所有软件都可以自己DIY,缺点就是最小化安装的debian没有图形界面,只有tty字符界面,没有鼠标、没有剪贴板,甚至也不能显示中文,不易操作。为了方便初学者安装icewm,我弄了两个安装小脚本install.sh和setting.sh,执行它们就可以装好icewm和相关软件,并做好中文输入法、字体、声音、网络、锁屏、U盘自动挂载、截屏等相关设置。

[第一步:最小化安装debian]

这几种ISO可以用作最小化安装:

  1. Index of /debian-cd/current-live/amd64/iso-hybrid/ (其它镜像网站地址类似)下载最小化的live CD(后缀是standard的iso,通常是最小的iso),一路安装好就是最小化debian,同时也提供了debian临时系统。如果下载带桌面环境的live CD就不能用于最小化安装。

  2. http://mirrors.163.com/debian-cd/current/amd64/iso-dvd/ 下载ISO DVD,安装时选择不要安装任何桌面环境,只选择 “SSH server” 和 “standard system utilities”。

  3. netinst(网络安装)镜像(ISO CD)。从 Index of /debian-cd/current/amd64/iso-cd/ 下载后缀是netinst的iso,全部网络安装,选择方式同第2种,但速度会慢点。

U盘安装推荐用Ventoy,有windows和linux版,从 Download . Ventoy 下载,在U盘上装好即可,优点是安装好后,将需要启动的ISO文件拷贝到U盘中即可,不管换什么ISO都只要简单复制,不需要再格式化。顺手把后文提到的install.sh和setting.sh复制到U盘备用,也可以另外拿一个U盘复制。注意:这两个脚本必须以unix格式保存,不能以DOS格式(行末多一个回车符)!!

安装好Ventoy,复制ISO,将电脑设成U盘启动(台式机按Delete 键,笔记本电脑按 F2 键进入BIOS菜单,设置启动方式),插入U盘,如果默认的Normal Boot不行,就选第二个Grub2 Boot,直接选"安装"。

安装方式没啥,就是常规的分区、设置语言、时间,输入用户名、用户密码、root密码等。但是要保持网络畅通,中间安装程序会帮忙做好网络设置,只是不要选"从网络镜像站点下载软件",否则装好后还要费力去设置网络。

装好后拔掉U盘,重启,出现询问用户名的提示,输入用户名和用户密码进入系统。最小化debian就装好了,只有tty字符界面,没有鼠标、没有剪贴板,甚至也不能显示中文。

[第二步:安装icewm]

先确认网络畅通:

ping -c 4 www.baidu.com

此时把带有脚本的U盘插入,查看设备名:

lsblk

除了硬盘(sda)外,应该还有sdb1之类的,那就代表U盘,假设是sdb1,然后进入root用户:

su

输入root密码进入。然后挂载U盘:

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
exit

退出超级用户。此时应该在家目录~

cp /mnt/usb/*.sh .
chmod +x *.sh
./install.sh

开始运行脚本安装icewm。这个脚本依次执行以下工作,每一步成功则显示OK,有一步出错则显示Failed并退出。一般情况下,显示Failed,则排除相应问题重新执行该脚本即可。

  1. 输入root密码,将用户加入sudoers,方便用sudo命令。
  2. 将源修改成中科大镜像源。
  3. 安装icewm和重要软件,icewm核心软件为:xorg icewm xinit。重要软件包括:中文字体 fonts-noto-cjk、锁屏软件 xscreensaver、音频视频服务器 pipewire-audio、网页浏览器 firefox-esr、模拟终端(会出现提示,要求在xfce4-terminal sakura lxterminal中三选一)、文本编辑器 gvim(vim-gtk3)、文件管理器 pcmanfm、中文输入法fcitx5、qt程序设置软件 qt5ct。除了核心软件不能改之外,其它都可以根据你需要在脚本中自行修改。还会提示选择startx方式还是登录管理器方式启动。startx方式少装一个登录管理器,速度也快点,在字符界面下输入用户名和密码进入icewm,加载程序放在~/.xinitrc;登录管理器方式和gnome、xfce4桌面环境一样,在图形界面下输入用户名和密码,加载程序放在~/.xsessionrc。中文输入法设置也是在这一步完成。
  4. 设置,包括设置音频管理;将icewm设置复制到家目录下;设置gtk默认字体;在~/.icem/env中设置环境变量。

装完后可以删除挂载点:

sudo rmdir /mnt/usb

[第三步:重启并设置icewm]

装好后重启:

sudo reboot

重启后输入用户名、密码进入icewm,打开模拟终端,执行:

~/setting.sh

该脚本主要执行如下工作:

  1. 完成QT程序字体设置。
  2. 安装相关软件,包括:网络管理 network-manager、压缩 xarchiver、截屏 xfce4-screenshooter、影音播放 smplayer、桌面美化 conky-all、选择文件默认打开方式 libfile-mimeinfo-perl、音量按钮 volumeicon-alsa、看图 gpicview、自动挂载U盘 udisks2 udiskie、文本输出到屏幕 libnotify-bin dunst。所有软件都可以根据你需要自行修改。
  3. icewm配置文件preferences、startup、keys、menu设置。包括:用xscreensaver锁屏、显示音量按钮、网络图标上左键显示网络设置菜单、简化开始菜单等。

完成所有设置,重启系统就完成整个icewm的安装了。

好的好的,谢谢哈

第三部分:安装脚本install.sh和设置脚本setting.sh

install.sh

#!/bin/bash
#命令行界面下自动安装icewm

# 检查返回码,正确就显示OK,错误就显示False并退出
CHECK() {
if [ $? -eq 0 ]; then
	echo -e "\n${1}\033[1;32m OK\033[0m"
else
	echo -e "\n${1}\033[1;31m Failed\033[0m"
	exit 1
fi
}

echo 'Start installing icewm'

#将用户加入sudoer

# 将str1临时加入/etc/sudoers,实现免密运行sudo。最终用str2替换,实现正常的sudo输入密码
str1="${USER} ALL=(ALL) NOPASSWD: ALL"
str2="${USER}	ALL=(ALL:ALL) ALL"
#在 root ALL=(ALL:ALL) ALL 下面加入 str1,实现免密运行sudo
echo 'Please enter root password'
#查看/etc/sudoers是否已修改,未修改则添加用户
SU=/etc/sudoers
su -c "cp $SU{,.old}; grep -q \"${str1}\" ${SU} || { chmod +w ${SU} &&  sed -i \"/root\s\+ALL=(ALL:ALL)/a${str1}\" ${SU}; }"
CHECK "Adding sudoer ............"

#修改源
SOURCE=/etc/apt/sources.list
#查询源文件是否已修改,未修改则添加源
sudo grep -Fq "mirrors.ustc.edu.cn" "$SOURCE"

if [ $? -ne 0 ]; then
	#备份
	sudo cp $SOURCE{,.old}
	#用sed将原文件的有用行注释掉
	sudo sed -i -r 's/^\s*[^#]/##\0/' "$SOURCE"

	sudo tee -a $SOURCE <<EOF > /dev/null

# 中科大的软件源
deb https://mirrors.ustc.edu.cn/debian/ trixie main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian/ trixie main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian/ trixie-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security trixie-security main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian-security trixie-security main contrib non-free non-free-firmware
EOF
fi

sudo apt update  && sudo apt -y full-upgrade && sudo apt -y autoremove && sudo apt -y autoclean
CHECK "Changing Source ............"

#安装icewm和重要软件

#选择模拟终端,xfce4-terminal性能完备,但依赖包稍多;sakura性能较完备,但比xfce4-terminal略少(如不能用脚本打开标签并自动执行命令,但可用tmux完成),依赖极少;lxterminal性能较基础,依赖极少。

term_items=("xfce4-terminal" "sakura" "lxterminal")
echo "Select terminal:"
for i in "${!term_items[@]}"; do
        echo "	$((i+1)). ${term_items[i]}"
done

read -p "Enter number (other key = None): " num
case $num in
	[1-3]) myterm="${term_items[$((num-1))]}" ;;
	*) myterm="" ;;
esac

# 核心软件:xorg icewm xinit
# 音频服务:pipewire-audio
# 字体:fonts-noto-cjk用于默认中文和CJK符号显示,fonts-hack用于终端显示
# 屏幕保护程序及屏幕锁定:xscreensaver
# 网页浏览器:firefox(firefox-esr firefox-esr-l10n-zh-cn)
# 文本编辑器:gvim(vim-gtk3)
# 文件管理器:pcmanfm
# 中文输入法:fcitx(fcitx5 fcitx5-chinese-addons)
# QT程序设置:qt5ct
sudo apt -y install xorg icewm xinit pipewire-audio fonts-noto-cjk fonts-hack xscreensaver firefox-esr firefox-esr-l10n-zh-cn vim-gtk3 "$myterm" pcmanfm fcitx5 fcitx5-chinese-addons qt5ct
# 读入字符,如果按Enter则$st为空,icewm启动方式为startx,其它键则$st非空,用登录管理器lightdm
read -n1 -p "How to start icewm? (Enter = startx, other key = lightdm) " st; echo 
if [ -n "$st" ]; then
	sudo apt -y install lightdm
fi
CHECK "Installing icewm and software ............"

# 设置
if [ -z "$st" ]; then
	# startx启动
	cat  <<EOF >> ~/.xinitrc

# 启动 fcitx 守护进程(后台运行)
fcitx5 &

# 启动 IceWM
exec icewm-session
EOF

	cat <<EOF >> ~/.profile

# 如果当前没有图形界面 (DISPLAY 为空),并且当前所在的虚拟终端是第 1 个 (tty1)
if [[ -z \$DISPLAY ]] && [[ "\$(tty)" = "/dev/tty1" ]]; then
	# 用 startx 启动的图形界面替换当前的登录 Shell,当图形界面退出时,用户也会被登出
    exec startx
fi
EOF

else
	# lightdm启动
	cat  <<EOF >> ~/.xsessionrc

# 启动 fcitx 守护进程(后台运行)
fcitx5 &
EOF

fi

# 声音设置:启用并启动 PipeWire 服务
# 重新加载用户级的 systemd 配置
systemctl --user daemon-reload
# 启用并立即启动 WirePlumber 会话管理器
systemctl --user --now enable wireplumber.service
# 启用并立即启动 PipeWire 主服务和 PulseAudio 兼容服务
systemctl --user --now enable pipewire pipewire-pulse

#将icewm设置复制到家目录下
mkdir ~/.icewm
cp -r /usr/share/icewm/* ~/.icewm/
#建立桌面、文档等目录
xdg-user-dirs-update

# 设置gtk默认字体
echo "gtk-font-name = \"Sans 12\"" >> ~/.gtkrc-2.0
mkdir ~/.config/gtk-3.0
cat <<EOF >> ~/.config/gtk-3.0/settings.ini
[Settings]
gtk-font-name = Sans, 12
EOF

# 设置环境变量
cat <<EOF >> ~/.icewm/env

# 当前窗口管理器
XDG_CURRENT_DESKTOP=ICEWM

# 输入法相关环境变量
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

# QT程序字体设置
QT_QPA_PLATFORMTHEME="qt5ct"
# 避免GTK程序没在gnome环境下运行的警告
NO_AT_BRIDGE=1
EOF

# 让root用户可以切换输入法
sudo tee -a $SU <<EOF > /dev/null

# 运行/etc/sudoers_env,让root用户可以切换输入法
Defaults env_keep += "XMODIFIERS"
Defaults env_file="/etc/sudoers_env"
EOF

sudo tee -a /etc/sudoers_env <<EOF > /dev/null
#  让root用户可以切换输入法
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
QT4_IM_MODULE=xim
EOF

#最终用str2替换,实现正常的sudo输入密码
sudo sed -i "s/^${str1}$/${str2}/" "$SU"

echo -e "Icewm has been installed successfully, please type 'sudo reboot' to enjoy it. \nPlease run qt5ct after login to set the default font for QT."

setting.sh

#!/bin/bash
# icewm初步设置

# icewm文件路径,默认为~/.icewm
IPATH=~/.icewm
# 修改icewm文件$FILE的设置项。SET 设置项 设置值。设置值如果有带"",要用"\"字符串\""形式。
SET() {
	#寻找设置项,去掉行首可能的#,代入设置值,只替换第一次匹配
	perl -pi -s -e '$matched ||= s/^#*\s*($item=).*?(\s*(#|$))/$1$value$2/' -- -item="$1" -value="$2" "$FILE"
}

# 设置QT5默认字体
echo "设置QT5默认字体"
qt5ct 

# 安装相关软件
# network-manager:网络设置,包含nmtui用tui设置网络。
# xarchiver:压缩软件
# xfce4-screenshooter:截屏软件
# smplayer:影音播放软件
# conky-all:桌面美化工具conky
# perl-mime-tools:提供mimeopen设置文件默认打开方式
# volumeicon-alsa:音量按钮
# gpicview:看图软件
# udisks2 udiskie:自动挂载U盘
# libnotify-bin dunst:提供notify-send命令,将文本输送到屏幕上
echo "安装相关软件"
sudo apt -y install network-manager xarchiver xfce4-screenshooter smplayer conky-all libfile-mimeinfo-perl volumeicon-alsa gpicview udisks2 udiskie libnotify-bin dunst 

if [ $? -eq 0 ]; then
	echo -e "\n\033[1;32m软件安装成功\033[0m"
else
	echo -e "\n\033[1;31m软件安装失败\033[0m"
	exit 1
fi

# 设置icewm配置文件
echo "设置icewm配置文件"
# preferences
FILE="${IPATH}/preferences"
cp "$FILE"{,.old}

SET PreferFreetypeFonts 1
SET WorkspaceNames "\" 1 \", \" 2 \""
SET TimeFormat "\"%H:%M\""
SET TaskBarShowMailboxStatus 0
SET LockCommand "\"xscreensaver-command -lock\""
SET NetStatusCommand "\"x-terminal-emulator -e nmtui\""
SET NetStatusShowOnlyRunning 1

# startup
cat  <<EOF >> "${IPATH}/startup"
# 音量按钮
volumeicon &
# 启动锁屏
xscreensaver -no-splash &
# 启动 PcmanFM 的守护进程,在桌面显示“~/桌面”文件。如果不想要,注释即可。
pcmanfm --desktop &
# 启动notify-send所需通知服务程序
dunst &
EOF

chmod +x "${IPATH}/startup"

# keys
cat  <<EOF >> "${IPATH}/keys"

# 自定义键
key "Print" xfce4-screenshooter
EOF

# menu
#
# 将menu和toolbar文件的模拟终端一行的!改为xterm
sed -i 's/^\(prog\s\+Terminal\s\+\)!/\1xterm/;n;b' ~/.icewm/menu
sed -i 's/^\(prog\s\+XTerm\s\+\)!/\1xterm/;n;b' ~/.icewm/toolbar
# 将包含icewm-menu-fdo一行加上--no-sub-cats参数,不要子分类。
sed -i "s/^includeprog icewm-menu-fdo /\0--no-sub-cats /;n;b" "${IPATH}/menu"

# 重启icewm
icewm --restart

贴完手工,手动撒花

同一台机器 IceWM 和 XFCE 的系统资源占用对比
IceWM 处理器占用25% 内存占405M
XFCE 处理器占用 1% 内存占用416M
综合下来 对内存占用接近 而IceWM的处理器占用明显大很多,至于网上传闻的IceWM内存占用40M只是理论上的数据,现实实测中无法复现。
总结就是不推荐使用IceWM 系统资源占用并不明显低于xfce 功能上欠缺不少还很不方便 比如创建桌面快捷方式 任务栏快速启动 都要手动改写配置文件 实在没有可取之处。



其实您应该把命令 ps -aux 的输出一起贴出来,比较一下两个测试环境下,都有哪些应用在运行?CPU占用的大头是谁?

不同人的桌面环境,配资是不一样的。只给一个 CPU 占用总量的数值,其实不能说明很多问题。

您回错人了吧?我只是建议楼上那位给出详细的测试信息,没有说 IceWM 的资源占用的大小。

哦哦,回错了哈哈,我改下

兄弟,我前面帖子已经提到了:

第一部分:安装桌面环境后安装icewm

这是使用icewm最简单的方式,直接安装icewm这个包即可:


sudo apt install icewm

安装完毕后在登录管理器选"icewm会话"。这种方式可以享受icewm的快速,但是桌面环境毕竟占了一些磁盘空间,另外可能有一些服务占内存,但不影响速度。



你应该是按这个方式先装了xfce4,然后装了icewm吧,不是从最小化debian装上icewm。这种情况xfce4默认开启的服务仍然会占内存,但是不会再响应了,所以你会看到两者内存占用量相当,icewm的内存占用量应该有相当一部分是xfce4的僵尸服务占用的。

要比较两者cpu和内存占用量,个人建议的方式是:在虚拟机上用同样配置用我的方法装一个最小化debian+icewm,再另外装一个带xfce4的debian,这种情况下比较两者。当然这么比对xfce4不公平,因为此时的icewm功能没有xfce4那么全,但是也可以看个大概了。这几天我试试,因为我调试脚本经常就是在虚拟机上调试的,再装一个带xfce4的debian就是了。我没有鄙视xfce4的意思,xfce4当然是很好的轻量级桌面环境。

按照您的方法都从零装了一遍
同样的硬件同一台机器测试
最小化安装 新系统 xfce内存占用约420M IceWM内存占用约330M 相比之下IceWM确实少90M左右
安装同样多的软件后(约12GB软件),开启同样多的后台服务后(打印服务 OneDrive同步 Thunderbird自启动 Joplin云同步 OnlyOffice云空间同步)等等后XFCE占用约560M IceWM占用430M 相比之下IceWM少了130M左右
综合看 无论是纯净的最小化安装 还是安装同样多软件开启同样多开机器等服务 IceWM都比XFCE内部占用少了90-130M之间,对系统资源占用确实更低一些。

谢谢您的实验,握爪 :grin: :grin:

因为我机器多 都是老机器 本来就天天装各种系统 各种桌面环境 折腾各种不同的包管理 不觉得麻烦

debian + icewm,和直接装antiX相比,哪个更省资源?
如果都差不多的话,装debian + icewm更好,可以滚动更新~

系统资源占用都差不多 原因在于Debian安装时候可以最小化安装,本身很干净没什么冗余。比Fedora opensuse Ubuntu等安装完毕体积小很多

不过Antix有个最独特的点 它不是简单的在Debian基础上组装一个IceWM 最大的不同是它去掉了systemd 所以也很轻量。

你要看你具体的使用情况,极少数新软件(如Podman)依赖systemd,可能需要额外配置。另外一些Gnome生态环境下的软件在Antix上有可能装不上无法运行,因为Gnome需要systemd

:+1: :+1: :+1: redhat下icewm已经到3.9了,debian 13这里是3.7

【播放事件音效】

icewm中,用icesound控制各种事件音效,如启动icewm(startup)、打开窗口(windowOpen)等,用以下命令查看icesound支持的事件:

icesound --list-sounds

要开启音效,首先先要下载各音效对应的声音文件,放在~/.icewm/sounds/下,命名规则为"音效.wav"。icewm主页给出了几组音效文件: icewm-sounds | sound files for IceWM ,下载其中之一下来解压到~/.icewm/sounds/即可(我用的是sounds-warp.zip)。解压后运行:

icesound -l

就能看到各音效对应的文件。如果不需要某个音效,在~/.icewm/sounds/中删除对应文件或改名即可。

如果是用lightdm方式启动,修改icewm对应的会话启动文件,让icesound在icewm之前启动(否则不能捕获startup事件)。该文件位于/usr/share/xsessions/下,一般名为icewm-session.desktop:

sudo gvim /usr/share/xsessions/icewm-session.desktop

找到Exec=/usr/bin/icewm-session一行,改为:

Exec=/usr/local/bin/icewm-with-sound

然后新建/usr/local/bin/icewm-with-sound,内容为:

#!/bin/bash

# 启动 icesound
/usr/bin/icesound &

# 启动 IceWM
exec /usr/bin/icewm-session

然后:

sudo chmod +x /usr/local/bin/icewm-with-sound

重新登陆后就能听到各种音效了,但是shutdown音效是听不到的,因为早在shutdown事件发生前,icesound进程就已经被关闭了。所以要用替代方法,在icewm的关机事件中写入shutdown音效,新建~/.icewm/shutdown,内容为:

#!/bin/bash

# 播放关机音效
/usr/bin/icesound -p shutdown &

然后:

chmod +x ~/.icewm/shutdown

重新登陆后关机就能听到音效了。

如果用startx方式启动,只要编辑~/.xinitrc(而不是编辑icewm-session.desktop),在exec icewm-session之前加入这两行:

# 启动 icesound
/usr/bin/icesound &

其它同上。