设置Alpine Linux的sway桌面
安装显卡驱动
NVIDIA显卡
我的 MacBook Air 11" Late 2010 使用的是 NVIDIA 显卡硬件,在Alpine Linux平台只能使用 Nouveau 开源驱动,原因是NVIDIA GPU的私有驱动不提供Alpine Linux的 musl C库驱动。
安装
xf86-video-nouveau:
Nouveau 驱动apk add xf86-video-nouveau
由于我准备使用 wayland显示服务器协议 ,所以需要安装以下软件包:
mesa-dri-gallium: Mesa驱动所需mesa-va-gallium: VA-API驱动,用于硬件加速的视频编码和解码
apk add mesa-dri-gallium mesa-va-gallium
重启系统,然后通过
lspci -vv检查,确保显卡使用的驱动是nouveau
Intel显卡
备注
MacBook Air 13" Early 2014 使用的是 Intel 显卡(CPU集成的iGPU),但是处理器是早期的 Haswell 架构,内置的iGPU不支持 x265 (HEVC)硬件加速,所以在VLC播放当前主流的x265编码mkv视频会非常卡顿,无法观看。所以需要在高端GPU环境做视频转换为 x264 mp4格式来兼容播放,或者使用 Jellyfin - 开源媒体系统(服务) 来在线转换播放
我组装的服务器使用了 Intel Xeon E-2274G 是第八代Cofee Lake 微处理器架构,则内置支持 x265 硬件加速视频解码
首先安装Mesa驱动:
apk add mesa-dri-gallium mesa-va-gallium
按照Intel不同CPU/iGPU安装以下驱动之一:
intel-media-driver: VAAPI驱动,用于硬件加速视频编码和解码,用于Intel Broadwell(第五代CPU, 2014年10月27日发布)及更新libva-intel-driver: VAAPI驱动,用于早于Broadwell的设备,例如我的 MacBook Air 13" Early 2014 是 HASWELL 处理器,就使用这个驱动Intel显卡通过
VA-API来加速视频解码,所以当使用 VLC 来播放视频时,需要系统安装好libva-intel-driver相关信息也可以参考 Fedora 43 Post Install Guide
linux-firmware-i915: 如果在dmesg中出现i915驱动报有关firmware错误,则安装这个软件包
# 我的iGPU是Haswell
apk add libva-intel-driver
对于Intel显卡还需要设置一个环境变量来让显卡正常工作
Haswell 及早期显卡(我的 MacBook Air 13" Early 2014 intel显卡选这个):
Haswell 及早期显卡需要环境变量export MESA_LOADER_DRIVER_OVERRIDE=crocus
较新的Intel显卡则选择 Iris 驱动(Broadwell处理器及更新代):
Broadwell 及更新的显卡需要环境变量export MESA_LOADER_DRIVER_OVERRIDE=iris
sway
自动安装方式
alpine linux 提供了一个结合使用 eudev 和 elogind 的自动化Sway桌面安装:
setup-desktop sway
我发现上述安装命令实际上在后台执行了如下安装:
apk add elogind polkit-elogind eudev firefox font-dejavu foot grim i3status sway \
swayidle swaylockd util-linux-login wl-clipboard wmenu xwayland
安装过程有提示
...
(72/106) Installing icu-data-en (76.1-r1)
Executing icu-data-en-76.1-r1.post-install
*
* If you need ICU with non-English locales and legacy charset support, install
* package icu-data-full.
*
(73/106) Installing icu-libs (76.1-r1)
...
* Starting udev ... [ ok ]
* Generating a rule to create a /dev/root sym [ ok ]
* Populating /dev with existing devices throu [ ok ]
* Waiting for uevents to be processed ... [ ok ]
* service cgroups added to runlevel default
* /run/dbus: creating directory
* /run/dbus: correcting owner
* Starting System Message Bus ... [ ok ]
* service dbus added to runlevel default
* service acpid deleted from runlevel default
手工安装方式
备注
第一次在alpine linux上 手动配置没有成功 (启动 sway 出现segment fault),所以改为采用自动配置方法完成。 自动化步骤采用了 eudev 和 elogind ,和我的手工步骤不同。
不过,因为后来在 FreeBSD Sway桌面 实践时最终解决了安装运行和中文输入,并且手工安装非常精简,所以我重新尝试在alpine linux采用手工安装方式。
安装sway桌面:
apk add sway
安装
seatd(见 在Gentoo环境安装和使用Sway )以便能够配置用户到对应组:
# 安装seatd
sudo apk add seatd
# 配置服务启动
sudo rc-update add seatd
sudo rc-service seatd start
# 将当前用户(admin)加入seat组
doas adduser $USER seat
配置环境变量(现在可能不需要了,seatd会自动处理):
$XDG_RUNTIME_DIR 环境变量export XDG_RUNTIME_DIR="/tmp/user/"`id -u`
if [ ! -d $XDG_RUNTIME_DIR ]; then
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR
fi
sway配置
安装一些辅助工具:
# 第一次实践时采用的安装方法
apk add foot \ # 默认终端
wmenu \ # 默认原生菜单
swaylock swaylockd \ # 屏幕锁定,swaylockd是后台daemon,确保swaylock持续运行(即使崩溃也能立即恢复)
swaybg \ # 墙纸显示
swayidle \ # 系统进入idle一段时间后运行一个命令,典型的如锁定屏幕或者关闭显示屏
wl-clipboard \ # 剪贴板管理器,建议结合 cliphist (没有apk包,需要go编译源码,有点重)使用
i3status # 提供丰富状态,比默认swaybar更好
# 现在采用的更为精简的安装方法
apk add foot \ # 默认终端
swaylock-effects \ # 会同时自动安装swaylock
swaybg \ # 墙纸显示
swayidle # 系统进入idle一段时间后运行一个命令,典型的如锁定屏幕或者关闭显示屏
# dmenu-wl 目前位于 testing 仓库
apk add dmenu-wl --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing
复制配置以便定制:
mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/
激活touchpad支持(对于Macbook非常有用,参考 archlinux Sway图形桌面 )
input type:touchpad {
dwt enabled
tap enabled
natural_scroll enabled
middle_emulation enabled
}
PipeWire配置(可能不需要)
Sway compositor 不参与音频播放,并且屏幕共享功能需要 PipeWire,所以为了实现音频播放,建议同时安装PipeWire。Alpine Linux v3.22版本开始,提供了脚本可以在OpenRC中将PipeWire作为用户服务启动。
从屏幕共享的角度来看,应用程序分为两类:
使用原生 Wayland wlr-screencopy 协议的应用程序
使用 Flatpak xdg-desktop-portal API 的应用程序(原生非 Flatpak 应用程序也使用这个portal)
第一类应用无需额外设置,第二类应用程序(包括Firefox和chromium)除了PipeWire,还需要设置 xdg portal
我这里按照 Alpine Linux wiki: Sway 文档设置
安装 xdg portal :
apk add xdg-desktop-portal xdg-desktop-portal-wlr
对于使用
dbus-run-session包装运行Sway,需要设置环境变量才能使portal和screensharing功能工作,所以设置~/.config/sway/config在开头添加一行:
~/.config/sway/config 在开头添加一行环境变量配置exec dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP=sway SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME
启动sway
第一次失败的排查
首先尝试直接启动
sway命令
我遇到一个报错:
Segmentation fault5 - [main.c:5711 wl_display_roundtrip failedialize backend.ES=1 to suppress this check
检查系统 dmesg 日志显示:
dmesg 日志显示sway段错误[ 5715.147674] sway[2952]: segfault at 8 ip 00007ff10ef30777 sp 00007ffe593833f8 error 6 in libwayland-server.so.0.23.1[6777,7ff10ef2e000+6000] likely on CPU 0 (core 0, socket 0)
[ 5715.147699] Code: 00 00 48 8b 44 24 08 48 83 c4 10 5d 41 5c 41 5d c3 48 8b 47 08 48 8d 77 10 48 8b 78 08 ff 25 e0 95 00 00 48 8b 47 08 48 8b 17 <48> 89 42 08 48 89 10 31 c0 48 89 47 08 48 89 07 c3 48 83 c7 20 ff
[ 7870.482773] perf: interrupt took too long (5092 > 5051), lowering kernel.perf_event_max_sample_rate to 39000
警告
我发现自动安装步骤比我手工安装步骤要完整,并且没有遇到启动问题。所以我重新用自动安装方法安装,这个crash问题就没有了
第二次排查(成功)
我在最近一次 MacBook Air 11" Late 2010 手工部署sway最终成功,不过也在启动say时候遇到过如下报错:
019 [sway/server.c:236] Failed to create renderernitialize renderer(0x3001), message: "eglInitialize"o load driver"n"
这个错误实际上就是手册 Alpine Linux wiki: NVIDIA 提到的 driver auto-selection does not work 只不过我的现象和手册说的不一样(手册举例的现象是看不到鼠标指针,而我遇到的是压根进不了sway),通过在环境配置 ~/.profile 添加如下配置解决:
nouveau 驱动# 避免自动选择驱动失败,强制指定nouveau
export MESA_LOADER_DRIVER_OVERRIDE=nouveau
# 配置VA-API也使用nouveau
export LIBVA_DRIVER_NAME=nouveau
配置自动登录sway
终端自动启动,配置
~/.profile:
...
# If running from tty1 start sway
if [ "$(tty)" = "/dev/tty1" ]; then
exec dbus-run-session sway
fi
中文环境
备注
好消息!
我在alpine linux 3.22 上实践验证(2025/11/1),现在 fcitx 5 在 sway 环境已经非常完善,甚至连 feet 终端也能够直接使用,不再像以前需要补丁才能终端输入中文。
安装中文字体
Noto Sans CJK(思源黑体)
Noto Sans CJK(思源黑体) 字体是Adobe和Google联合开发的字体家族,其设计目的是支持中文、日文和韩文(CJK)。思源黑体的设计现代、清晰,并提供多种字重(粗细)选择。比早期Linux发行版使用的 文泉驿正黑(WenQuanYi Zen Hei) 包含更多且支持所有CJK自负,并未一些扩展区自负提供支持
alpine linux 提供了2个 Noto Sans CJK(思源黑体) 字体软件包: font-noto-cjk 和 font-noto-cjk-extra
Noto Sans CJK(思源黑体) 字体apk add font-noto-cjk
安装fcitx5中文输入法:
apk add fcitx5 fcitx5-rime \
fcitx5-gtk3 \ # firefox中文输入框需要fcitx5-gtk3
rime-plum-data # 相当于arch linux的 librime-data 元软件包,包含了rime的输入方案 "明月拼音"
备注
如果要交互配置,可以补充安装 fcitx5-configtool 工具包,等配置完成后再卸载
不过更简单的方法是从其他相似环境中复制配置,例如 FreeBSD中文环境 我采用从 Arch Linux 上复制已经通过 fcitx5-configtool 配置好的配置文件(同样采用 fcitx5-rime ): fcitx5.tar.gz
配置
~/.profile(参考 Gentoo Linux KDE fcitx中文输入 )
export MESA_LOADER_DRIVER_OVERRIDE=crocus
export MOZ_DBUS_REMOTE=1
export GTK_USE_PORTAL=0
export XMODIFIERS=@im=fcitx
# Enable Wayland support for Mozilla Firefox
export MOZ_ENABLE_WAYLAND=1
# If running from tty1 start sway
if [ "$(tty)" = "/dev/tty1" ]; then
exec dbus-run-session sway
fi
这里配置和我在 FreeBSD Sway桌面 中有点不同,不过验证是正常工作的,完整配置如下( MacBook Air 11" Late 2010 ):
~/.profile 配置export MESA_LOADER_DRIVER_OVERRIDE=nouveau
export LIBVA_DRIVER_NAME=nouveau
export MOZ_DBUS_REMOTE=1
export GTK_USE_PORTAL=0
export XMODIFIERS=@im=fcitx
# Enable Wayland support for Mozilla Firefox
export MOZ_ENABLE_WAYLAND=1
if [ "$(tty)" = "/dev/tty1" ]; then
exec dbus-run-session sway
fi
修订
~/.config/sway/config:
exec_always --no-startup-id fcitx5 -d
rime候选字框
我遇到一个问题是虽然安装了 fcitx-gtk3 ,已经看到状态栏显示了 rime 图标,并且按下 ctrl+space 也确实看到了 en 和 rime图标 来回切换,但是就是不出现候选字符框
按照 arch linux wiki: Rime 提示,如果使用 fcitx5-rime 则rime的配置文件位于 ~/.local/share/fcitx5/rime/ 。我确实找到这个目录,但是没有看到其中有配置输入法内容。按照arch linux wiki说明: Rime 需要输入方案才能工作,用户可以定制输入方案。默认情况下,一些方案随着 librime-data 元软件包一起安装,因为它是 librime 的依赖项
另外 arch linux 将 rime 官方输入方案分为多个软件包,例如我以前用的 rime-luna-pinyin 明月拼音
不过,在 alpine linux 中, 我不知道哪个软件包对应 我终于尝试出了,原来需要安装 rime-plum-data 软件包。安装以后退出重新登陆,再次用 ctrl+space 就能够看到明月输入法的候选字框
备注
我尝试了rime激活时,按下 super+~ ,能够出现 Quick Phrase 框,看起来确实没有安装 rime-luna-pinyin 明月拼音这样的软件包
搜索发现似乎是 rime-plum-data 说明为 Rime configuration manager and input schemas (input schemas) 東風破 是 中州韻輸入法引擎 的配置管理工具: GitHub: rime/plum 这个管理工具可以用来安装不同的输入方案,例如 bash rime-install luna-pinyin 安装明月拼音:
The one-liner runs the rime-install script to download preset packages and install source files to Rime user directory. (Yet it doesn't enable new schemas for you)
经过尝试,我发现在 alpine linux 中安装 rime-plum-data 就相当于 arch linux 中安装 librime-data 软件包(根据arch linux wiki说明,该元软件包是librime的依赖项,会随之安装输入方案)
桌面应用
Firefox 建议安装一些插件
默认音频是mute的,需要安装
alsa-utils工具来调整音量( Arch Linux ALSA声音系统 )