FreeBSD XFCE桌面
备注
目前我比较倾向于使用基于 wayland显示服务器协议 的 FreeBSD Sway桌面 ,不过最近的实践配置存在问题( 已解决 每次从头开始安装总会遇到意想不到的问题)所以目前采用 xfce 以便简化桌面复杂度,专注于后端服务器开发运维。
Xorg
安装Xorg:
pkg install xorg
并将自己加入 video
组:
admin
用户加入 video
组(举例)pw groupmod video -m admin
备注
目前XFCE 4.20 的几乎所有组件都能够运行在 wayland显示服务器协议 窗口(实验性),并且依然保留了支持X11窗口。 libxfce4windowing
库引入来处理Wyaland和X11支持,现在已经不再需要XWayland。
不过,由于Xfce尚未正式确定何时在 Xfwm4
中添加Wayland支持同时依然保持X11功能,所以我目前不会尝试折腾(桌面实在太浪费时光了)
顺其自然,我暂时保留在X Window环境,专注于探索后端服务和开发。
NVIDIA显卡
备注
我的 MacBook Pro 15" Late 2013 使用了Nvidia显卡
FreeBSD NVIDIA驱动 安装配置
# 安装驱动
# pkg install nvidia-driver
# 我的笔记本显卡 "[GeForce GT 750M Mac Edition]" 太古老,只能使用指定的470.xx驱动
pkg install nvidia-driver-470
sysrc kld_list+=nvidia-modeset
可选安装 nvidia-xconfig
,我实践发现如果没有为NVIDIA显卡创建 xorg.conf
,则启动XFce4时无法运行 X Window显示服务器协议 不过这不是必须的,实际上可以手工配置
pkg install nvidia-xconfig
# 生成配置
nvidia-xconfig
如果没有采用上述的 nvidia-xconfig
,也可以参考 HOWTO: Setup Xorg with NVIDIA'driver 简单配置一个 /usr/local/etc/X11/xorg.conf.d/driver-nvidia.conf
就可以正常运行Xorg:
driver-nvidia.conf
引导Xorg正确使用NVIDIA驱动Section "Device"
Identifier "NVIDIA Card"
VendorName "NVIDIA Corporation"
Driver "nvidia"
EndSection
Intel显卡
备注
我的 ThinkPad X220笔记本 使用Intel显卡
FreeBSD Sway桌面 过程安装了Intel显卡驱动,步骤如下;
pkg install drm-kmod
kldload i915kms
# 配置启动时加载intel显卡驱动
sysrc kld_list+=i915kms
XFCE
安装XFCE:
# pkg install xorg xfce xfce4-goodies lightdm lightdm-gtk-greeter dbus
# 按照FreeBSD Handbook,安装xfce会自动安装依赖 dbus-daemon
pkg install xfce
# 安装xfce插件和应用
# firefox使用pulseaudio
pkg install xfce4-pulseaudio-plugin xfce4-screensaver ristretto
# 安装应用软件
# parole和pragha是Fedora选择的xfce配套程序,不过我选择vlc来兼顾
# remmina-lite 适配xfce,完整remmina依赖gnome
pkg install firefox keepassxc mupdf flameshot vlc remmina-lite
备注
参考 FreeBSD从入门到跑路: 第 4.20 节 声卡设置 FreeBSD 大部分软件的音频输出驱动为 oss。有些默认是 pulseaudio(比如 firefox)
安装了 xfce4-pulseaudio-plugin
可以很方便调整音频,特别是切换音频通道。不过,也可以通过命令行切换:
default
行就是当前使用默认设备(音频从这个设备输出)nstalled devices:
pcm0: <NVIDIA (0x0042) (HDMI/DP 8ch)> (play)
pcm1: <NVIDIA (0x0042) (HDMI/DP 8ch)> (play)
pcm2: <NVIDIA (0x0042) (HDMI/DP 8ch)> (play)
pcm3: <Cirrus Logic (0x4208) (Analog 4.0/2.0)> (play/rec) default
pcm4: <Cirrus Logic (0x4208) (Analog Headphones)> (play)
pcm5: <Cirrus Logic (0x4208) (Digital)> (play)
No devices installed from userspace.
sysctl hw.snd.default_unit=5
软件包说明:
软件包 |
说明 |
---|---|
xorg |
X显示服务器 |
xfce |
xfce桌面 |
xfce4-goodies |
xfce桌面的应用以及美化 |
lightdm |
图形桌面管理器 |
lightdm-gtk-greeter |
传统GDM启发而来的高度可配置登陆屏幕 |
dbus |
提供两个应用程序间一对一通讯 |
XFCE需要系统挂载
/proc
,所以在/etc/fstab
中添加以下内容以便在系统启动时挂载好:
/etc/fstab
挂载 /proc
# Device Mountpoint FStype Options Dump Pass#
proc /proc procfs rw 0 0
安装XFCE会依赖安装
dbus-daemon
,并且需要在系统中激活 D-BUS :
sysrc dbus_enable="YES"
安装
x11/lightdm
(一个轻量级显示管理器,使用内存很少且快速):
pkg install lightdm lightdm-gtk-greeter
# 启动操作系统时自动启动lightdm
sysrc lightdm_enable="YES"
# 如果手工启动XFCE,则在 ~/.xinitrc 添加配置
异常排查
备注
本段异常排查是 MacBook Pro 15" Late 2013 的NVIDIA显卡异常
报错显示我的笔记本显卡太陈旧,只能使用 NVIDIA 470.xx 驱动,我安装了最新的 550.120 驱动启动时Xorg日志报错;
启动:
startxfce4
报错,检查 /var/log/Xorg.0.log
有如下错误:
[ 33.248] (WW) NVIDIA(0): The NVIDIA GeForce GT 750M GPU installed in this system is
[ 33.248] (WW) NVIDIA(0): supported through the NVIDIA 470.xx Legacy drivers. Please
[ 33.248] (WW) NVIDIA(0): visit http://www.nvidia.com/object/unix.html for more
[ 33.248] (WW) NVIDIA(0): information. The 550.120 NVIDIA driver will ignore this
[ 33.248] (WW) NVIDIA(0): GPU. Continuing probe...
[ 33.248] (EE) No devices detected.
[ 33.248] (EE)
Fatal server error:
[ 33.248] (EE) no screens found(EE)
[ 33.248] (EE)
原来我的显卡 NVIDIA GeForce GT 750M GPU
太古老了,已经被最新的 510.60.02
放弃支持了,需要回退到 NVIDIA 470.xx Legacy drivers
。难怪之前 FreeBSD Sway桌面 和 FreeBSD hikari桌面 都失败了
参考 NVIDIA Unix Driver Archive 可以看到,对于 FreeBSD x86
,最新的 Latest Legacy GPU version (470.xx series)
: 470.141.03
搜索一下,在FreeBSD仓库,则是 nvidia-driver-470-470.129.06
(之前安装了最新的 nvidia-driver-510.60.02
):
nvidia-driver-470
pkg delete nvidia-driver-510.60.02
pkg install nvidia-driver-470-470.129.06
然后重启系统,再次重试成功
结束X后黑屏
我遇到一个问题,就是启动 startxfce4
之后,结束会话会出现黑屏
检查显卡所在pci位置:
# pciconf -l | grep vga vgapci0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x0fe9 subvendor=0x106b subdevice=0x0130
则修改 /etc/X11/xorg.conf
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
# 添加以下这行
BusID "PCI:1:0:0"
EndSection
添加 BusID
时候,不要在PCI 包含domain ID,也就是说 pci0:1:0:0
写成 PCI:1:0:0
不过,仅仅上述修改还没有解决问题,真正解决问题是修订了 /etc/rc.conf
,将:
kld_list="nvidia-modeset"
修改为:
linux_enable="YES"
dbus_enable="YES"
hald_enable="YES"
lightdm_enable="YES"
kld_list="nvidia nvidia-modeset linux"
才解决: 现在启动时候就是 lightdm
,并且退出也能够正常回到窗口管理器。我感觉关键行是:
dbus_enable="YES"
hald_enable="YES"
因为在此之前我检查过 kldstat
输出,原本就已经加载了:
linux
nvidia
nvidia-modeset
也就是说 kld_list
默认已经加载了
备注
参考 How To Fix No Screen Found Xorg Error On FreeBSD [Dual GPU] 和 xorg fails to start on freebsd even after installing nvidia and drm-kmod
不过,虽然解决了 FreeBSD NVIDIA驱动 的版本问题,但是运行 FreeBSD Sway桌面 和 FreeBSD hikari桌面 报错依旧
配置Greeter和LightDM
修改
/usr/local/etc/lightdm/lightdm.conf
启用:greeter-session = lightdm-gtk-greeter
修改
/etc/rc.conf
添加:lightdm_enable="YES"
Thunar
Xfce官方文档显示Thunar有一个插件 thunar-shares-plugin
可以使用Samba共享一个目录而无需root权限。但是我在FreeBSD中通过 pkg search thunar
没有找到该插件,似乎发行版没有提供这个插件。
emoji字体
在WEB网站以及一些 Node.js 程序经常会使用emoji字体,系统如果不安装对应字体就会显示为奇怪的方框乱码。常用的emoji字体有 Google Noto Color Emoji 和 EmojiOne Android ,在FreeBSD平台可以直接安装 x11-fonts/noto-emoji
字体来实现展示:
pkg install x11-fonts/noto-emoji
安装以后firefox浏览器就能够显示WEB页面中的emoji字体,不过很奇怪的是 xfce4-terminal
却不能正常显示。虽然网上信息显示gnome-termianl和alacritty是支持emoji的,但是我尝试了以后依然没有解决。看起来这问题不是终端模拟器问题,而是 gtk
底层没有支持emoji,因为我发现安装了 noto-emoji
字体后,在一些XFCE的配置选择字体窗口,gtk显然没有正常渲染emoji,而在 FreeBSD中文环境 中我选择的 rime
输入法字体选择框中当出现emoji文字时也无法正常显示。这个共性问题集中显示在和gtk组件有关,从网上信息来看似乎和底层 libcairo
库有关。我不清楚为何在FreeBSD中存在问题,目前影响不大,暂时忽略。