设置Alpine Linux的sway桌面

安装显卡驱动

我的 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驱动,用于硬件加速的视频编码和解码

安装mesa驱动依赖软件包
apk add mesa-dri-gallium mesa-va-gallium
  • 重启系统,然后通过 lspci -vv 检查,确保显卡使用的驱动是 nouveau

sway

自动安装方式

alpine linux 提供了一个结合使用 eudevelogind 的自动化Sway桌面安装:

自动化方式安装sway
setup-desktop sway

我发现上述安装命令实际上在后台执行了如下安装:

自动化方式安装sway执行的命令
apk add elogind polkit-elogind eudev firefox font-dejavu foot grim i3status sway \
        swayidle swaylockd util-linux-login wl-clipboard wmenu xwayland

安装过程有提示

自动化方式安装sway执行过程的提示
...
(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

手工安装方式

警告

我按照文档执行手工安装,有些步骤没有完全按照文档(例如软件包),我遇到的问题是启动 sway 出现segment fault

没有找出原因,最后我采用上面自动化安装sway完成,自动化步骤采用了 eudevelogind ,和我的手工步骤不同。

  • 安装sway桌面:

安装 sway 桌面
apk add sway
安装设置seatd
# 安装seatd 
sudo apk add seatd

# 配置服务启动
sudo rc-update add seatd
sudo rc-service seatd start

# 将当前用户(admin)加入seat组
doas adduser $USER seat

配置环境变量:

设置 $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更好


配置

启动

  • 首先尝试直接启动 sway 命令

我遇到一个报错:

启动 sway 出现Segmentation fault
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

警告

我发现自动安装步骤比我手工安装步骤要完整,并且没有遇到启动问题

中文环境

  • 安装中文字体 Noto Sans CJK(思源黑体)

Noto Sans CJK(思源黑体) 字体是Adobe和Google联合开发的字体家族,其设计目的是支持中文、日文和韩文(CJK)。思源黑体的设计现代、清晰,并提供多种字重(粗细)选择。比早期Linux发行版使用的 文泉驿正黑(WenQuanYi Zen Hei) 包含更多且支持所有CJK自负,并未一些扩展区自负提供支持

alpine linux 提供了2个 Noto Sans CJK(思源黑体) 字体软件包: font-noto-cjkfont-noto-cjk-extra

安装 Noto Sans CJK(思源黑体) 字体
apk add font-noto-cjk
  • 安装fcitx5中文输入法:

安装中文输入法
apk add fcitx5 fcitx5-rime \
        fcitx5-gtk                   # firefox中文输入框需要fcitx5-gtk

备注

如果要交互配置,可以补充安装 fcitx5-configtool 工具包,等配置完成后再卸载

添加fcitx配置
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
  • 修订 ~/.config/sway/config :

在 ~/.config/sway/config 中添加运行 fcitx5 的配置
#以下两种方法可能都行
#exec_always fcitx5 -d --replace
exec_always --no-startup-id  fcitx5 -d

参考