Skip to content

8.4 Xfce

Xfce 是一款基于 GTK+ 的轻量级桌面环境,提供简洁、高效、易于使用的桌面。它完全可配置,拥有包含菜单、小程序和应用程序启动器的主面板,提供文件管理器和声音管理器,并支持主题。由于其快速、轻巧、高效,非常适合配置较低或内存受限的主机。

颇具趣味的是,Xfce 的 Logo 是一只老鼠 🐀。曾有用户反馈一则轶事,称因 Xfce 的默认壁纸是一只老鼠 🐀,导致电脑屏幕被猫 🐈 抓坏(SanjaytheToilet. [joke] The default desktop startup screen causes damage to monitor![EB/OL]. (2015-08-04)[2026-04-04]. https://bugzilla.xfce.org/show_bug.cgi?id=12117.)。

8.4.1 安装 Xfce 桌面环境

  • 通过 pkg 安装
sh
# pkg install xorg lightdm lightdm-gtk-greeter xfce wqy-fonts xdg-user-dirs xfce4-goodies lightdm-gtk-greeter-settings
  • 或通过 ports 安装:
sh
# cd /usr/ports/x11/xorg/ && make install clean
# cd /usr/ports/x11-wm/xfce4 && make install clean # 注意有个 4
# cd /usr/ports/x11/xfce4-goodies/ && make install clean
# cd /usr/ports/x11-fonts/wqy/ && make install clean
# cd /usr/ports/x11/lightdm/ && make install clean
# cd /usr/ports/x11/lightdm-gtk-greeter/ && make install clean
# cd /usr/ports/x11/lightdm-gtk-greeter-settings/ && make install clean
# cd /usr/ports/devel/xdg-user-dirs/ && make install clean

8.4.1.1 软件包说明

包名作用说明
xorgX 窗口系统
lightdm轻量级显示管理器 LightDM
lightdm-gtk-greeterLightDM GTK+ 显示界面插件
xfceXfce 桌面环境
wqy-fonts文泉驿中文字体
xdg-user-dirs管理用户主目录
xfce4-goodiesXfce 附加组件和插件集合
lightdm-gtk-greeter-settings配置 LightDM GTK+ 登录界面的图形工具

8.4.2 startx 命令

将 Xfce 启动脚本写入 ~/.xinitrc 文件,以便使用 startx 命令启动 Xfce:

sh
$ echo "/usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc

将 Xfce 启动脚本写入 ~/.xsession 文件,以便通过显示管理器启动 Xfce:

sh
$ echo "/usr/local/etc/xdg/xfce4/xinitrc" > ~/.xsession

8.4.3 启动服务

设置 D-Bus 服务开机自启:

sh
# service dbus enable

设置 LightDM 显示管理器开机自启:

sh
# service lightdm enable

8.4.4 设置中文环境

编辑 /etc/login.conf 文件:找到 default:\ 这一段,将 :lang=C.UTF-8 修改为 :lang=zh_CN.UTF-8

还需要根据 /etc/login.conf 文件重建能力数据库:

sh
# cap_mkdb /etc/login.conf

8.4.5 图片欣赏

FreeBSD 安装 Xfce

FreeBSD 安装 Xfce

FreeBSD 安装 Xfce

8.4.6 全局菜单(可选)

使用 pkg 安装:

sh
# pkg install xfce4-appmenu-plugin appmenu-gtk-module appmenu-registrar

或使用 Ports 安装:

sh
# cd /usr/ports/x11/xfce4-appmenu-plugin/ && make install clean
# cd /usr/ports/x11/gtk-app-menu/ && make install clean
# cd /usr/ports/x11/appmenu-registrar/ && make install clean

查看安装后的说明并据此配置。

sh
$ xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar -n -t bool -s true  # 启用 GTK 菜单栏显示
$ xfconf-query -c xsettings -p /Gtk/ShellShowsAppmenu -n -t bool -s true  # 启用 GTK 应用菜单显示
$ xfconf-query -c xsettings -p /Gtk/Modules -n -t string -s "appmenu-gtk-module"  # 设置 GTK 模块为 appmenu-gtk-module

8.4.7 软件推荐

FreeBSD 的 Xfce 邮箱客户端推荐使用 mail/evolution 软件,可搭配 xfce4-mailwatch-pluginsecurity/gnome-keyring 一并使用。

还有一款桌面插件,名为 x11/xfce4-verve-plugin,配合设置智能书签可用于查询网页内容,也可通过配置搜索 FreeBSD 的 man 手册内容。

8.4.8 XTerm 终端动态标题

8.4.8.1 sh

编辑 ~/.shrc 文件,写入:

sh
if [ -t 1 ]; then
  while :; do
    printf '\033]0;%s\007' "$PWD"
    printf '\n$ '
    if ! IFS= read -r cmd; then
      break
    fi
    printf '\033]0;%s\007' "$cmd"
    eval "$cmd"
  done
  exit
fi

8.4.8.2 csh

编辑 ~/.cshrc 文件,写入:

sh
if ( $?TERM && $TERM =~ xterm* ) then
    set host = `hostname`
    alias postcmd 'rehash; printf -- "\033]2;%s\007" "${user}@${host}: ${cwd}"'
endif

8.4.8.3 tcsh

编辑 ~/.tcshrc 文件,写入:

sh
switch ($TERM)
case xterm*:
    set prompt="%{\033]0;%n@%m: %~\007%}%# "
    breaksw
default:
    set prompt="%# "
    breaksw
endsw

8.4.8.4 Bash

编辑 ~/.bashrc 文件,写入:

sh
case $TERM in
         xterm*)
             PS1="\[\033]0;\u@\h: \w\007\]bash\\$ "
             ;;
         *)
             PS1="bash\\$ "
             ;;
     esac

8.4.8.5 Zsh

编辑 ~/.zshrc 文件,写入:

sh
autoload -Uz add-zsh-hook

function xterm_title_precmd () {
	print -Pn -- '\e]2;%n@%m %~\a'
	[[ "$TERM" == 'screen'* ]] && print -Pn -- '\e_\005{2}%n\005{-}@\005{5}%m\005{-} \005{+b 4}%~\005{-}\e\\'
}

function xterm_title_preexec () {
	print -Pn -- '\e]2;%n@%m %~ %# ' && print -n -- "${(q)1}\a"
	[[ "$TERM" == 'screen'* ]] && { print -Pn -- '\e_\005{2}%n\005{-}@\005{5}%m\005{-} \005{+b 4}%~\005{-} %# ' && print -n -- "${(q)1}\e\\"; }
}

if [[ "$TERM" == (Eterm*|alacritty*|aterm*|foot*|gnome*|konsole*|kterm*|putty*|rxvt*|screen*|wezterm*|tmux*|xterm*) ]]; then
	add-zsh-hook -Uz precmd xterm_title_precmd
	add-zsh-hook -Uz preexec xterm_title_preexec
fi

8.4.8.6 参考文献

8.4.9 故障排除与未竟事宜

如需进一步动态显示当前进程,目前仅 sh 支持该功能。