FreeBSD Sway桌面¶
sway - i3兼容Wayland compositor 是基于 wayland显示服务器协议 的轻量级图形管理器(和全功能的 xfce 不同)
准备工作¶
在安装 sway - i3兼容Wayland compositor 之前,首先需要为FreeBSD安装显卡驱动,这个安装是根据显卡硬件来决定的,例如我的 MacBook Pro 15” Late 2013 使用NVIDIA显卡,所以安装 FreeBSD NVIDIA驱动 。
如果是其他显卡芯片,例如Intel显卡,则需要 drm-kmod
,然后加载Intel i915驱动:
pkg install drm-fbsd13-kmod
kldload i915ksm
Sway安装¶
执行以下命令安装sway包:
sudo pkg install sway seatd
sudo service seatd onestart
sudo sysrc seatd_enable=YES
备注
seated是一个负责管理服务的daemon,对于运行sway必须,否则启动报错
Sway配置¶
最小化Sway配置 ~/.config/sway/config
input * xkb_rules evdev
不过,实际我采用 运行sway窗口管理器 方法,从系统安装包复制默认配置到用户目录:
mkdir -p ~/.config/sway
cp /usr/local/etc/sway/config ~/.config/sway/
修改 ~/.config/sway/config
# Logo key. Use Mod1 for Alt.
input * xkb_rules evdev
set $mod Mod4
# Your preferred terminal emulator
set $term alacritty
set $lock swaylock -f -c 000000
output "My Workstation" mode 1366x786@60Hz position 1366 0
output * bg ~/wallpapers/mywallpaper.png stretch
### Idle configuration
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -f -c 000000'
需要配置一些环境变量以便用户能够运行sway,例如 XDG
运行目录。通常显示管理器会处理这些环境变量,但是从控制台终端启动时需要自己处理:
export XDG_RUNTIME_DIR=/tmp/`id -u`-runtime-dir
test -d "$XDG_RUNTIME_DIR" || \
{ mkdir "$XDG_RUNTIME_DIR" ; chmod 700 "$XDG_RUNTIME_DIR" ; }
注意,如果使用 sh
作为SHELL,则编辑 ~/.shrc
添加:
export XDG_RUNTIME_DIR=/var/run/user/`id -u`
如果使用 tcsh
作为SHELL,则编辑 ~/.cshrc
添加:
setenv XDG_RUNTIME_DIR /var/run/user/`id -u`
备注
有用户报告在ZFS上使用Wayland客户端问题,原因是runtime目录需要访问 posix_fallocate()
,虽然作者没有重新问题,但是如果遇到类似问题,建议将运行目录改为 tmpfs
mount -t tmpfs tmpfs /var/run
安装Sway实用工具¶
为了能够更好实用sway,安装一些和i3兼容的程序:
# pkg install alacritty dmenu dmenu-wayland pkg install sway swayidle swaylock-effects alacritty dmenu-wayland dmenu
启动sway¶
启动sway之前,需要将自己的id加入到
video
用户组(这个组可以访问/var/run/seatd.sock
):pw groupmod video -m huatai
启动:
sway
可能出现报错:
...
00:00:10.109 [wlr] [backend/backend.c:217] Found 0 GPUs, cannot create backed
00:00:10.109 [wlr] [backend/backend.c:386] Failed to open any DRM device
00:00:10.109 [sway/server.c:56] Unable to create backend
...
太难了,我尝试参考 NVIDIA (495) on sway tutorial + questions (Arch-based distros) 做了各种尝试,例如配置:
export XDG_RUNTIME_DIR=/var/run/user/`id -u`
#export LIBVA_DRIVER_NAME=nvidia
#export MOZ_ENABLE_WAYLAND=1
#export GDK_BACKEND=wayland
#export QT_QPA_PLATFORM=wayland-egl
#export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export CLUTTER_BACKEND=wayland
export SDL_VIDEODRIVER=wayland
export XDG_SESSION_TYPE=wayland
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export MOZ_ENABLE_WAYLAND=1
export GBM_BACKEND=nvidia-drm
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export WLR_NO_HARDWARE_CURSORS=1
但都没有解决这个问题
看了一下 FreeBSD Handbook: 5.10 Wayland on FreeBSD 提到有3种Wayland Compositor:
Wayfire
Hikari
Sway
其中 hikari - A Wayland Compositor 声明是在FreeBSD上开发,但也支持Linux。并且有人提到使用非常顺畅,所以我改为尝试 FreeBSD hikari桌面