27. Window Managers
窗口管理器和桌面环境是X窗口系统的主要用户界面。窗口管理器是一个程序,它控制窗口的外观,并提供用户与窗口交互的方法。桌面环境为操作系统提供了更完整的接口,并提供了一系列集成的实用程序和应用程序。
有许多可用的窗口管理器。其中一些比较知名的包括 fvwm2, Window Maker, AfterStep, Enlightenment, Sawfish, 和 Blackbox.
Linux的桌面环境包括GNOME、KDE和XFce。
选择一个窗口管理器或桌面环境是非常主观的。选择取决于包的外观、所需的资源(RAM、磁盘空间)以及包含的实用程序。有一个网站Window Managers for X很好地总结了可用的工具、屏幕截图和它们各自的特性。
在本章中,介绍了几个窗口管理器和一个轻量级桌面环境的安装说明。在本书的后面,KDE和GNOME都有自己的章节。
27.1 Fluxbox-1.3.7
简介Fluxbox
Fluxbox包包含一个窗口管理器。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/fluxbox/fluxbox-1.3.7.tar.xz
-
下载 MD5 校验和: b44afd10ee1e64624c23115aa51dcd55
-
下载大小: 772 KB
-
预计所需磁盘空间: 101 MB
-
预计构建时间: 0.9 SBU
Fluxbox 依赖
必要
可选
dbus-1.14.6 (运行时), FriBidi-1.0.12, 和 imlib2-1.9.1 (如果您希望使用除XPM以外的其他图像格式)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/fluxbox
安装Fluxbox
首先,修复使用gcc-11.1构建时的构建失败:
sed -i '/text_prop.value > 0/s/>/!=/' util/fluxbox-remote.cc
运行以下命令安装Fluxbox:
./configure --prefix=/usr &&
make
这个包没有一个工作的测试套件。
现在,作为root用户:
make install
配置 Fluxbox
配置文件
~/.fluxbox/init, ~/.fluxbox/keys, 和 ~/.fluxbox/menu
配置信息
如果Fluxbox是你唯一想要使用的窗口管理器,你可以在你的主文件夹中启动一个.xinitrc文件。在继续之前,请确保备份当前的.xinitrc。
echo startfluxbox > ~/.xinitrc
或者,如果您使用像GDM-43.0或lightdm-1.32.0这样的登录管理器,并且希望能够在登录提示符下选择Fluxbox,请创建一个fluxbox.desktop文件。以root用户,运行:
mkdir -pv /usr/share/xsessions &&
cat > /usr/share/xsessions/fluxbox.desktop << "EOF"
[Desktop Entry]
Encoding=UTF-8
Name=Fluxbox
Comment=This session logs you into Fluxbox
Exec=startfluxbox
Type=Application
EOF
如果您没有在/usr中安装GDM-43.0或lightdm-1.32.0,则更改该命令以适合您选择的前缀。
现在创建Fluxbox配置文件:
mkdir -v ~/.fluxbox &&
cp -v /usr/share/fluxbox/init ~/.fluxbox/init &&
cp -v /usr/share/fluxbox/keys ~/.fluxbox/keys
要生成应用程序菜单,首先您可能希望运行fluxbox-generate_menu -h,以便选择任何<user_options>,然后执行:
cd ~/.fluxbox &&
fluxbox-generate_menu <user_options>
或者,复制一个预生成的菜单:
cp -v /usr/share/fluxbox/menu ~/.fluxbox/menu
通过编辑~/.fluxbox/menu添加菜单项。语法解释在fluxbox手册页。
如果你想用一个图像作为你的桌面背景,复制你喜欢的主题到~/.fluxbox。然后添加一条线,使其使用正确的图像。在以下命令中,更改<theme>作为您想要的主题的名称,并更改</path/to/nice/image.ext>以指向您想要使用的实际图像,其中ext必须为”xpm”,如果imlib2-1.9.1未安装以允许其他图像格式。
cp -r /usr/share/fluxbox/styles/<theme> ~/.fluxbox/theme &&
sed -i 's,\(session.styleFile:\).*,\1 ~/.fluxbox/theme,' ~/.fluxbox/init &&
[ -f ~/.fluxbox/theme ] &&
echo "background.pixmap: </path/to/nice/image.ext>" >> ~/.fluxbox/theme ||
[ -d ~/.fluxbox/theme ] &&
echo "background.pixmap: </path/to/nice/image.ext>" >> ~/.fluxbox/theme/theme.cfg
在某些地区,主题中指定的字体可能不包含所需的字符。这将导致带有空白项的菜单。您可以通过使用文本编辑器编辑~/.fluxbox/theme并更改它以命名合适的字体来修复此问题。
内容
安装程序: fluxbox, fbsetbg, fbsetroot, fluxbox-generate_menu, startfluxbox, fbrun, fluxbox-remote, 和 fluxbox-update_configs
安装库: None
安装目录: /usr/share/fluxbox 和 ~/.fluxbox
简要描述
fluxbox 是一个基于Blackbox 0.61.0的X11窗口管理器。
fbsetbg 是设置背景图像的实用程序。它在运行时需要以下选项之一: Esetroot, wmsetbg, feh, hsetroot, chbg, display, qiv, xv, xsri, xli, 或 xsetbg. 如果找到 Esetroot,它还需要 which。
fbsetroot 是一个基于Blackbox应用程序bsetroot更改根窗口外观的实用程序。
fluxbox-generate_menu 是一个通过扫描你的PATH来生成菜单的工具。
startfluxbox 是一个会话启动脚本,允许在fluxbox启动之前执行命令。
fbrun 显示运行对话框窗口。
fluxbox-remote 提供对Fluxbox关键命令的命令行访问。
fluxbox-update_configs 用于管理配置文件(重新加载、更新、测试)。
27.2 IceWM-3.3.1
简介IceWM
IceWM是一个窗口管理器,其目标是速度快、简单、不妨碍用户。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://github.com/ice-wm/icewm/archive/3.3.1/icewm-3.3.1.tar.gz
-
下载 MD5 校验和: 2fe3d2ebbe34ebbd4d091555f1c96ed3
-
下载大小: 2.3 MB
-
预计所需磁盘空间: 46 MB
-
预计构建时间: 0.3 SBU
IceWM 依赖
必要
CMake-3.25.2, a graphical environment, 和 gdk-pixbuf-xlib-2.40.2
可选
asciidoc-10.2.0 (用于重新生成HTML文档), FriBidi-1.0.12 (对于从右向左书写的语言), imlib2-1.9.1, librsvg-2.54.5, libao-1.2.0, libsndfile-1.2.0, 和 alsa-lib-1.2.8 (用于实验冰声程序)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/icewm
安装IceWM
运行以下命令安装IceWM:
mkdir build &&
cd build &&
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DCFGDIR=/etc \
-DENABLE_LTO=ON \
-DCONFIG_GDK_PIXBUF_XLIB=ON \
-DCONFIG_IMLIB2=OFF \
-DDOCDIR=/usr/share/doc/icewm-3.3.1 \
.. &&
make
这个包没有一个工作的测试套件。
现在,作为root用户:
make install
这个包在/usr/share/xsessions/目录下创建了两个.desktop文件。两者在BLFS系统中都不需要,因此要防止额外的文件作为显示管理器中的选项显示。作为root用户:
rm -v /usr/share/xsessions/icewm.desktop
命令解释
-DENABLE_LTO=ON: 此选项启用链接时间优化,并且是此包所必需的。
配置 IceWM
配置文件
~/.icewm/keys、~/.icewm/menu、~/.icewm/preferences、~/.icewm/toolbar和~/.icewm/winoptions。默认版本安装在/usr/share/icewm/中,如果您没有将它们复制到~/.icewm,则使用默认版本。
配置信息
如果IceWM是你想要使用的唯一的窗口管理器,你可以在你的主文件夹中用一个.xinitrc文件启动它。在继续之前,请确保备份当前的.xinitrc。
echo icewm-session > ~/.xinitrc
现在创建IceWM配置文件:
mkdir -pv ~/.icewm &&
cp -v /usr/share/icewm/keys ~/.icewm/keys &&
cp -v /usr/share/icewm/menu ~/.icewm/menu &&
cp -v /usr/share/icewm/preferences ~/.icewm/preferences &&
cp -v /usr/share/icewm/toolbar ~/.icewm/toolbar &&
cp -v /usr/share/icewm/winoptions ~/.icewm/winoptions
现在可以编辑这些文件以满足您的需求。特别是,查看preferences文件。您可以在主菜单上使用Logout -> Restart-IceWM来加载更改的首选项,但是对后台的更改仅在IceWM启动时生效。
此时,您可以修改传统的菜单文件以满足您的需求,也可以使用稍后描述的更新的icewm-menu-fdo。
菜单的语法是在帮助文件中解释的,你可以通过从菜单中运行help来访问它,但是一些细节已经过时了,菜单中的默认选择(主菜单上的一些旧应用程序,Programs菜单上的其他所有内容)将从更新中受益,以满足你的需要。下面的例子是为了鼓励你思考如何组织你的菜单。请注意以下事项:
-
如果菜单中列出的程序尚未安装,则显示菜单时不会显示该程序。同样,如果程序存在,但指定的图标不存在,则菜单中不会显示任何图标。
-
图标可以是
.xpm或.png文件,不需要指定扩展名。如果图标位于“库”(/usr/share/icewm/icons)中,则不需要指定路径。 -
大多数程序都在子菜单中,主菜单总是会在底部添加
窗口、帮助、设置、注销等条目。 -
firefox的图标被复制到库目录中,并赋予了一个有意义的名称。xine的图标是
xine.xpm,它被安装到一个pixmap目录中。 -
默认工具栏不会改变。
如果您希望使用这种传统方法,在本书的先前版本(例如BLFS-7.8)中有更多示例。
或者,您可以创建一个符合FDO桌面菜单规范的菜单,在其中可以找到程序,因为它们在XDG_DATA_HOME或XDG_DATA_DIR目录中有一个.desktop文件。与大多数窗口管理器不同,icewm在调用菜单时不会搜索程序,因此如果您采用此路径,则需要在安装或删除程序后重新运行以下命令:
icewm-menu-fdo >~/.icewm/menu
如果你想在桌面上放图标,你需要安装一个程序,比如Rox-Filer-2.11,它提供了一个针脚板。如果您这样做,您将无法再通过右键单击桌面来访问菜单,您将不得不使用IceWM按钮。为了确保rox引脚板正在运行,下面的命令将把它放在启动文件中:
cat > ~/.icewm/startup << "EOF"
rox -p Default &
EOF &&
chmod +x ~/.icewm/startup
提示
在IceWM中有许多快捷键:
-
Ctrl + Alt + F
N: 跳转tty`N`. -
Ctrl + Alt +
N: 转到桌面号N -
Ctrl + Alt + Space : 在任务栏上打开一个框,您可以在其中键入应用程序的名称并运行它。
内容
安装程序: icehelp, icesh, icesound, icewm, icewm-menu-fdo, icewm-menu-xrandr, icewm-session, icewm-set-gnomewm, icewmbg, 和 icewmhint
安装库: None
安装目录: /usr/share/doc/icewm-3.3.1, /usr/share/icewm 和 ~/.icewm
简短描述
icehelp 用于显示HTML手册。
icesh 是一个命令行窗口管理器,可以在~/.icewm/startup中使用。
icesound 在IceWM引发的GUI事件上播放音频文件。
icewm 是窗口管理器。
icewm-menu-fdo 可以创建一个适合IceWM菜单格式的文件,该菜单列出了当前以符合FDO桌面菜单规范的布局安装的程序。
icewm-menu-xrandr 是一个帮助程序,用于管理多屏幕配置。
icewm-session 运行icewmbg, icewm, icewmtray, startup, shutdown(即如果安装了启动和关闭脚本将运行)。
icewm-set-gnomewm 是一个脚本,用于使用gconftool将GNOME窗口管理器设置为icewm。
icewmbg 是用来设置背景,根据各种DesktopBackground的设置在首选项。
icewmhint 在内部用于向用户提供提示。
27.3 openbox-3.6.1
简介openbox
Openbox是一个高度可配置的桌面窗口管理器,具有广泛的标准支持。它允许您控制与桌面交互的几乎所有方面。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): http://openbox.org/dist/openbox/openbox-3.6.1.tar.gz
-
下载 MD5 校验和: b72794996c6a3ad94634727b95f9d204
-
下载大小: 944 KB
-
预计所需磁盘空间: 21 MB
-
预计构建时间: 0.3 SBU
Openbox 依赖
必要
a graphical environment 和 Pango-1.50.12 (编译支持libXft)
可选
dbus-1.14.6 (运行时), imlib2-1.9.1 (启用右键菜单中的图标), ImageMagick-7.1.0-61 (显示桌面背景,如下面的配置信息部分所示), PyXDG-0.28, startup-notification-0.12, 和 librsvg-2.54.5
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/openbox
安装Openbox
注意
如果XORG_PREFIX不是/usr,告诉gcc:
export LIBRARY_PATH=$XORG_PREFIX/lib
如果您只安装了Python 3 PyXDG模块,将其中一个脚本转换为Python 3:
2to3-3.11 -w data/autostart/openbox-xdg-autostart &&
sed 's/python/python3/' -i data/autostart/openbox-xdg-autostart
运行以下命令安装Openbox:
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--docdir=/usr/share/doc/openbox-3.6.1 &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
这个包在/usr/share/xsessions/目录下创建了三个.desktop文件。其中两个在BLFS系统中是不合适的,所以要防止额外的文件作为显示管理器中的选项显示。作为root用户:
rm -v /usr/share/xsessions/openbox-{gnome,kde}.desktop
命令解释
--sysconfdir=/etc: 这个选项将Openbox的配置文件放在/etc/xdg/openbox中,而不是/usr/etc/xdg/openbox。
--docdir=/usr/share/doc/openbox-3.6.1: 这将把一些文件放在/usr/share/doc的版本目录中。
--disable-static: 此开关防止安装库的静态版本。
配置 Openbox
配置文件
/etc/xdg/openbox/autostart, /etc/xdg/openbox/menu.xml, /etc/xdg/openbox/rc.xml, ~/.config/openbox/autostart, ~/.config/openbox/menu.xml 和 ~/.config/openbox/rc.xml
配置信息
Openbox的右键菜单可以用来启动程序。菜单本身配置了2个文件,/etc/xdg/openbox/menu.xml和~/.config/openbox/menu.xml。要更改菜单,将/etc/xdg/openbox/menu.xml复制到~/.config/openbox/menu.xml并编辑:
cp -rf /etc/xdg/openbox ~/.config
~/.config/openbox/menu.xml可以用文本编辑器编辑,或者您可以安装Obmenu(需要pyxml和PyGTK-2.24.0)。
要在你的右键菜单中有图标需要在你安装Openbox之前安装imlib2-1.9.1。要为菜单中的条目设置图标,请编辑~/.config/openbox/menu.xml,并在
<item label="Mplayer" icon="/usr/share/pixmaps/mplayer.png">
Openbox行为的许多其他方面都是通过~/.config/openbox/rc.xml配置的,例如使用哪些键绑定来启动程序或哪个鼠标按钮启动主菜单。
Openbox应用于窗口装饰的主题的详细信息在~/.config/openbox/rc.xml中配置。你可以使用命令获取可用主题的列表:
ls -d /usr/share/themes/*/openbox-3 | sed 's#.*es/##;s#/o.*##'
启动 Openbox
在启动Xorg时自动启动openbox:
echo openbox > ~/.xinitrc
如果你想设置桌面背景图像,你可以使用display,然后在openbox之前从~/.xinitrc启动它:
cat > ~/.xinitrc << "EOF"
display -backdrop -window root /path/to/beautiful/picture.jpeg
exec openbox
EOF
或者,如果你喜欢一点变化,把一组图片放在一个文件夹里(在这个例子中,目录是~/.config/backgrounds),每次你xinit时随机选择一个:
cat > ~/.xinitrc << "EOF"
# make an array which lists the pictures:
picture_list=(~/.config/backgrounds/*)
# create a random integer between 0 and the number of pictures:
random_number=$(( ${RANDOM} % ${#picture_list[@]} ))
# display the chosen picture:
display -backdrop -window root "${picture_list[${random_number}]}"
exec openbox
EOF
如果您希望在启动Xorg时设置numlock键,请安装Numlockx并将其添加到xinitrc中。另一个有用的应用程序是dbus-1.14.6:
cat > ~/.xinitrc << "EOF"
. /etc/profile
picture_list=(~/.config/backgrounds/*)
random_number=$(( ${RANDOM} % ${#picture_list[*]} ))
display -backdrop -window root "${picture_list[${random_number}]}"
numlockx
eval $(dbus-launch --auto-syntax --exit-with-session)
lxpanel &
exec openbox
EOF
内容
安装程序: gdm-control, gnome-panel-control, obxprop, openbox, openbox-gnome-session, openbox-kde-session 和 openbox-session
安装库: libobrender.so 和 libobt.so
安装目录: /etc/xdg/openbox, /usr/include/openbox, /usr/share/doc/openbox-3.6.1 和 /usr/share/themes.
简短描述
gdm-control 是向GDM发送信号的命令行工具。
gnome-panel-control 是一个命令行实用程序,用于调用Gnome面板运行dialog/menu。
obxprop 是用于在x窗口上显示属性的工具。它具有与xprop类似的功能,但允许您将UTF-8字符串视为文本。
openbox 是一个符合标准的、高度可配置的窗口管理器。
openbox-gnome-session 是一个脚本启动一个Gnome会话与Openbox作为你的窗口管理器从你的~/.xinitrc。
openbox-kde-session 是一个启动KDE会话的脚本,使用Openbox作为您的窗口管理器从您的~/.xinitrc启动。
openbox-session 是从你的~/.xinitrc启动一个Openbox会话的脚本。
libobrender.so 包含Openbox用于主题渲染的函数。
libobt.so 是Openbox工具箱库。
27.4 sawfish-1.13.0
简介sawfish
sawfish包包含一个窗口管理器。这对于组织和显示窗口非常有用,其中所有窗口装饰都是可配置的,所有用户界面策略都是通过扩展语言控制的。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://download.tuxfamily.org/sawfish/sawfish_1.13.0.tar.xz
-
下载 MD5 校验和: fd6ca5be0acbee8ea150945d3fb3ec60
-
下载大小: 2.7 MB
-
预计所需磁盘空间: 52 MB
-
预计构建时间: 0.3 SBU
sawfish 依赖
必要
gdk-pixbuf-xlib-2.40.2, rep-gtk-0.90.8.3, 和 Which-2.21
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sawfish
安装sawfish
运行以下命令安装sawfish:
./configure --prefix=/usr --with-pango &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
这个包在/usr/share/xsessions/目录下创建了六个.desktop文件。BLFS系统中除了一个文件之外,其他文件都是必需的,因此要防止额外的文件作为显示管理器中的选项显示。作为root用户:
rm -v /usr/share/xsessions/sawfish-*.desktop
配置 sawfish
配置信息
在继续之前,请确保备份当前的.xinitrc。
cat >> ~/.xinitrc << "EOF"
exec sawfish
EOF
您还可以选择使用显示管理器,例如 lxdm-0.5.3.
来自开发人员:“默认的菜单绑定有点模糊;你必须在背景上点击中键来调出菜单。(如果你的鼠标有两个按钮,请尝试同时点击两个按钮)”。你可以在sawfish’s FAQ上找到它。
内容
安装程序: sawfish, sawfish-about, sawfish-client, sawfish-config, sawfish-kde4-session, sawfish-kde5-session, sawfish-lumina-session, sawfish-mate-session, 和 sawfish-xfce-session
安装库: 在/usr/lib/sawfish tree下的几个内部模块。
安装目录: /usr/include/sawfish, /usr/lib/sawfish, /usr/lib/rep/sawfish, 和 /usr/share/sawfish
简短描述
sawfish 是使用基于lisp的脚本语言的可扩展窗口管理器。
sawfish-about 是sawfish的窗口。
sawfish-client 允许您连接到窗口管理器进程并计算任意的Lisp表单。
sawfish-config 是sawfish配置管理器。
sawfish-kde4-session 是使用sawfish运行KDE4的脚本。
sawfish-kde5-session 是一个使用sawfish运行Plasma 5的脚本。
sawfish-mate-session 是一个使用sawfish脚本运行mate。
sawfish-lumina-session 是使用sawfish运行Lumina的脚本。
sawfish-xfce-session 是使用sawfish运行xfce的脚本。