Fedora 折腾记
Fedora + Gnome 坑很多,这里是我在使用 Fedora 中遇到的一些坑和解决的方案
这其中的很多 bug 都具有一定的随机性(很多是我在 Google 上使用英文寻找了半天才找到同样的问题,有的甚至需要亲自向开发者反映)。
所以这仍然仅仅是个人记录,其中的解决方案仅供日后备查,不保证可用,请读者(如果有的话)谨慎辨析
分数缩放 (fractional scaling)
Gnome 至今仍不正式支持分数缩放,仅有一个实验性功能提供了Wayland 应用程序的分数缩放(开启方法:gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']")
但是在这种情况下 Xwayland app 会变得非常模糊(包括著名的 vlc),这显然不是我们需要的
于是我们就需要安装 taaem/mutter-xwayland-fractional-scaling COPR 中 Patch 过的 mutter(Patch 来源于 mutter 的一个尚未 merge 的 PR),根据COPR的描述就可以了
2024/11/3 Updated: 该 MR 已经正式合并进 mutter 47,包含于最近发布的 Fedora 41,不再需要该 COPR,直接
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer', 'xwayland-native-scaling']"启用该功能即可
仍然存在的问题
实际上,Gnome 至今都不支持真正的分数缩放,目前的分数缩放其实是先将显示器分辨率拉伸,以200%渲染后再缩小(P.S. GTK4 似乎正在支持真·分数缩放),这不仅会导致 GPU 资源的浪费,还会使virt-manager gnome-box 等需要像素对齐的应用程序出现问题(如 virt-manager 中的虚拟机分辨率过高等)
xwayland-native-scaling feature 也存在同样的问题(这似乎与 KDE 上同样功能的行为不同),这导致我在 wine 上运行的游戏以3072×1728的分辨率渲染(1920×1080,125%缩放),而且导致某些比较老旧游戏由于窗口过小而完全不能玩(例如东方几乎全系列)

Upd: 找到了一种解决方法:
安装gamescope,使用gamescope -W 800 -H 600 -F fsr wine [东方游戏文件名]运行游戏即可
上述方案会使用 AMD 的 FSR 拉伸游戏分辨率,如果想要保持原有的像素风格,可以使用-F nearest选项(话说东方是像素风游戏吗?)
2024/11/3 Upd: 以上解决方案失效
gamescope3.14.2 以上版本添加了 Wayland 支持,但是存在问题,直接导致游戏崩溃。对于 Fedora 40 可以使用dnf downgrade gamescope来降级至3.14.2版本,但是在 Fedora 41 上不可用。可以尝试自行编译安装旧版本(反正我这由于依赖问题编译失败了)2025/7 Upd: 解决方案:
wine10.x 原生支持 Wayland,可让 wine 直接运行在 Wayland 下,参见下文
美化
确切的说其实不是美化,只是让系统的 UI 更加统一
Gtk3 主题
adw-gtk3-theme
图标主题
papirus-icon-theme, papirus-icon-theme-dark
Qt 应用程序
使用 qt5ct qt6ct 加上 kvantum 配合 (2025/9 Upd: 用 KvLibdwaita 更好)Colloid-kde 主题(一个很像 Libadwaita 的 Kvantum Qt 主题,虽然很多 UI 元素的样式不同,但是整体风格很搭)
为什么不用KvLibdwaita:这个主题目前的版本存在很大的问题,行编辑器和下拉框的颜色和窗口背景颜色完全相同,导致了很多应用程序不可用- 2025/9 Upd: 问题已经修复
- 为什么不用
QGnomePlatform:首先这个项目已经不再开发也没有适配 Libadwaita 主题,仍然需要自己搞主题;而且会导致其他问题
字体问题
所有 Qt 应用程序中应该上粗体字的地方字体字重都过大,导致文本(尤其是中文文本)几乎不可读

经调查,发现这似乎是 Cantarell 字体(Gnome的默认字体)的问题,与可变字重(VF)有关,而且是2020年就出现的老bug(似乎是由于不能在所有情况下都能复现而没有修复,不知道为什么我碰上了),当时的解决方案是更换系统字体。然而我经过测试,Noto CJK 似乎也存在同样问题,无奈之下只能使用上古字体文泉驿微米黑(正黑也行,但是太丑)
这时就需要祭出 qt5ct 和 qt6ct 了,如果使用默认的 qgnomeplatform 则不能单独更改 Qt 应用程序的字体(将文泉驿应用为系统默认字体也不是不行,但是我觉得很丑)
编辑 ~\.config\environment.d\qt.conf 并修改 qt5ct 和 qt6ct 中的字体设置后,重启就可以了
1 | # QT_QPA_PLATFORMTHEME='gnome' # 需要更改全局字体 |
窗口圆角
可以使用这个扩展
但是似乎有不少bug
Wine
字体设置
默认的字体有概率出现问题,可以使用文泉驿字体(安装 wqy-microhei.ttc,然后导入以下注册表)
1 | REGEDIT4 |
字体平滑(执行以下脚本并按照提示选择)
1 |
|
Wayland HiDPI
要启用 Wayland 支持,需要 DISPLAY 环境变量为空(不建议设置系统环境变量,会出现问题)
e.g.
1 | env -u DISPLAY wine your_program.exe |
wine 10.x 原生支持 HiDPI,只需要在设置中将 DPI 更改为符合系统的值即可
默认会拉伸不支持 HiDPI 的应用(包括大部分游戏),关闭需导入以下注册表
1 | REGEDIT4 |
杂项
VScode 貌似默认使用 XWayland,可以启用实验性功能来支持 Wayland,但是在我这输入法没法用(XWayland 下候选框会到处乱飘,但是能用)
似乎有人已经解决了这个问题,但是在我这里没有成功
2024/11/3 Upd: 上文提到的 MR(已合并)已经解决这一问题
