折腾 openSUSE Tumbleweed

折腾 openSUSE Tumbleweed(KDE 桌面)的记录,包括:

  • KDE/SDDM Wayland 配置
  • fcitx5 + RIME
  • TTY 字体配置(尚未完全解决)
  • zram 配置
  • rEFInd 与 GRUB
  • 字体配置

再也无法忍受 Gnome 糟糕的分数缩放支持了!于是切换到了 KDE,顺带也从 Fedora 换到了 openSUSE Tumbleweed。openSUSE 相比于 Fedora 更新更频繁,大部分软件包更新,但是在技术路线上略微保守,同时用户数量也少于 Fedora (Red Hat 系)

※参见 bgm 帖子

※还有一些美化相关的东西在这篇文章中

KDE/SDDM Wayland

openSUSE Tumbleweed 默认安装并没有使用 Wayland(明明 KDE X11 都快要被移除了,甚至 Leap 都切换到了 Wayland 的……)

安装 plasma6-session-wayland 可以启用 KDE Wayland 会话 现在似乎默认就是 Wayland 了,但是 SDDM 仍然运行在 X11 下

安装 sddm-config-wayland 可以让 SDDM 也使用 Wayland。但是仅仅这样做重启后会直接进 tty,应当先 systemctl disable display-manager-legacy.servicesystemctl enable sddm.service

fcitx5 + RIME

openSUSE 默认装 ibus,需要将它 addlock(否则可能与 fcitx 冲突),然后安装 fcitx5fcitx5-rime,在设置中禁用「拼音」并启用「中州韵」,即可

我使用的 RIME 配置:

1
2
3
4
5
6
7
8
# ~/.local/share/fcitx5/rime/default.custom.yaml
patch:
# 配置方案选单按键为 Ctrl + Shift + `
# 注意在 Fctix 下真正有效的是 "Control+Shift+asciitilde"
"switcher/hotkeys":
- "Control+Shift+grave"
- "Control+Shift+asciitilde"
- "Control+asciitilde"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml & ~/.local/share/fcitx5/rime/luna_pinyin_simp.custom.yaml
# emoji 输入
# 注意必须在两个 luna_pinyin 的配置中都包含,否则不生效
# 还需要将 https://github.com/rime/rime-emoji 中 opencc 目录复制到配置目录
# encoding: utf-8

patch:
"switches/@next":
name: emoji_suggestion
reset: 1
states: [ "🈚︎", "🈶️" ]
"engine/filters/@before 0":
emoji_suggestion
emoji_suggestion:
opencc_config: emoji.json
option_name: emoji_suggestion
tips: none
inherit_comment: false

使用了 zhwiki 和萌娘百科词库:

1
2
3
4
5
6
# ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml
# encoding: utf-8

patch:
# custom dictionary
"translator/dictionary": ext_dict
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# ~/.local/share/fcitx5/rime/ext_dict.dict.yaml
# Rime dictionary
# encoding: utf-8

---
name: ext_dict
version: "0"
sort: by_weight
use_preset_vocabulary: true
# 将扩展词库放在配置目录下的 dict 目录下
import_tables:
- luna_pinyin
- dict/moegirl
- dict/zhwiki

TTY 字体配置(尚未完全解决)

TODO

zram 配置

安装 systemd-zram-service 即可使用。默认大小与物理内存相同,可以通过修改 /sbin/zramswapon 调节。

默认的配置有点问题:系统 swap 积极性极低(与 swap 至磁盘相同)。解决方案是通过 sysctl 设置 vm.page-cluster=0 vm.swappiness=180 vm.watermark_boost_factor=0 vm.watermark_scale_factor=125(这是 ArchWiki 的推荐值)

我直接修改了 zramswap.service(使用 systemctl edit),在启动时自动设置这些参数,并在退出时自动设置回去

1
2
3
4
5
6
7
8
9
10
11
[Service]
ExecStartPost=/usr/sbin/sysctl -w vm.page-cluster=0 \
vm.swappiness=180 \
vm.watermark_boost_factor=0 \
vm.watermark_scale_factor=125

# 这应该是 openSUSE 的默认值
ExecStopPost=-/usr/sbin/sysctl -w vm.page-cluster=3 \
vm.swappiness=60 \
vm.watermark_boost_factor=15000 \
vm.watermark_scale_factor=10

rEFInd 与 GRUB

我在移动硬盘中安装了 Windows,这样就没法用 GRUB 直接引导,每次需要用的时候都开机按 Esc 太麻烦了,于是我安装了 rEFInd(在启动时自动扫描 efi 引导项)

我使用 rEFInd 启动 Linux 的方案是使用 rEFInd 链式启动 GRUB,再由 GRUB 启动 openSUSE,因为 rEFInd 不支持 btrfs 快照

官网下载 zip 包(rpm 包不行,似乎是因为没有签名而无法安装),解压到合适的位置(我把它放到 /opt/ 下了)运行 refind-install.sh 即可(由于不需要直接引导 Linux 内核,所以不需要额外的文件系统驱动,我使用了 --nodrivers 选项)

使用的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# /boot/efi/EFI/refind/refind.conf
# 启动菜单超时
timeout 10
use_nvram false
# 鼠标相关:
enable_mouse
mouse_size 32
mouse_speed 8
# 对以下操作系统使用图形模式:
use_graphics_for osx,linux,grub,windows
# 忽略部分无关的引导项
dont_scan_files + shim.non-nx.efi,grub.efi,fallback.efi
# 禁用对于 Linux 内核的扫描,因为需要使用 GRUB 启动 Linux
scan_all_linux_kernels false

# 配置主题,我使用的是 https://github.com/ASUS-Vivobook-S-14-M5406WA/refind-theme-oled
include refind-theme-oled/theme.conf

为了避免出现双重引导菜单,还需要配置一下 GRUB:

1
2
3
4
5
6
7
8
# /etc/default/grub
# 设置启动超时为 1s,且隐藏启动菜单(避免出现双重菜单);需要使用 btrfs 快照时在 1s 内按下 Esc 即可
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=hidden
# 更换较大的字体。需要将合适的字体放在 /bootgrub2/fonts/ 下
GRUB_FONT="/boot/grub2/fonts/ter-u20b.pf2"
# 使用的字体若不支持 CJK,所有需要设置 GRUB 语言为英文,否则会出现方块
export LANG=C.UTF-8

字体配置

TODO

杂项

zypper 与 PackageKit 冲突

zypper 似乎经常和 PackageKit 冲突:PackageKit 在后台自启动,锁定了 libzypp,导致 zypper 无法使用。如果慢慢等待 PackageKit 自动退出,往往需要好几分钟。临时的解决方案是暂时停止 packagekit.service(用到时需要再次手动启动,否则 KDE Discover 等可能会出错;重启后恢复)。如果不使用 Discover 图形化管理 rpm 包且不需要更新提示,则可以卸载 discover6-backend-packagekitdiscover6-notifieraddlock

图标回退问题(尚未完全解决)

部分使用内置图标的 Qt 应用在内置图标无法覆盖的情况下(如文件选择器),会直接 fallback 到 breeze (light),这样在暗色模式下图标就难以辨别了。一个简单的 workaround 是 ln -s <需要的暗色图标主题路径> ~/.local/share/icons/breeze