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%缩放),而且导致某些比较老旧游戏由于窗口过小而完全不能玩(例如东方几乎全系列)

th08

Upd: 找到了一种解决方法:

安装 gamescope ,使用 gamescope -W 800 -H 600 -F fsr wine [东方游戏文件名] 运行游戏即可

上述方案会使用 AMD 的 FSR 拉伸游戏分辨率,如果想要保持原有的像素风格,可以使用 -F nearest 选项(话说东方是像素风游戏吗?)

th08-with-gamescope

2024/11/3 Upd: 以上解决方案失效

gamescope 3.14.2 以上版本添加了 Wayland 支持,但是存在问题,直接导致游戏崩溃。对于 Fedora 40 可以使用 dnf downgrade gamescope 来降级至 3.14.2 版本,但是在 Fedora 41 上不可用。可以尝试自行编译安装旧版本(反正我这由于依赖问题编译失败了)

美化

确切的说其实不是美化,只是让系统的 UI 更加统一

Gtk3 主题

adw-gtk3-theme

图标主题

papirus-icon-theme, papirus-icon-theme-dark

Qt 应用程序

使用 qt5ct qt6ct 加上 kvantum 配合 Colloid-kde 主题(一个很像 Libadwaita 的 Kvantum Qt 主题,虽然很多 UI 元素的样式不同,但是整体风格很搭)

  • 为什么不用 KvLibdwaita:这个主题目前的版本存在很大的问题,行编辑器和下拉框的颜色和窗口背景颜色完全相同,导致了很多应用程序不可用
  • 为什么不用 QGnomePlatform:首先这个项目已经不再开发也没有适配 Libadwaita 主题,仍然需要自己搞主题;而且会导致其他问题

字体问题

所有 Qt 应用程序中应该上粗体字的地方字体字重都过大,导致文本(尤其是中文文本)几乎不可读

bold-text

经调查,发现这似乎是 Cantarell 字体(Gnome的默认字体)的问题,与可变字重(VF)有关,而且是2020年就出现的老bug(似乎是由于不能在所有情况下都能复现而没有修复,不知道为什么我碰上了),当时的解决方案是更换系统字体。然而我经过测试,Noto CJK 似乎也存在同样问题,无奈之下只能使用上古字体文泉驿微米黑(正黑也行,但是太丑)

这时就需要祭出 qt5ctqt6ct 了,如果使用默认的 qgnomeplatform 则不能单独更改 Qt 应用程序的字体(将文泉驿应用为系统默认字体也不是不行,但是我觉得很丑)

编辑 ~\.config\environment.d\qt.conf 并修改 qt5ctqt6ct 中的字体设置后,重启就可以了

1
2
3
4
5
# QT_QPA_PLATFORMTHEME='gnome' # 需要更改全局字体
# QT_STYLE_OVERRIDE=kvantum
QT_QPA_PLATFORMTHEME=qt5ct
XCURSOR_THEME=YOUR_CURSOR_THEME_NAME
# 更改 Qt6 应用程序的光标主题(如果有),默认情况下 Qt6 应用程序的光标是极丑的系统默认光标

窗口圆角

可以使用这个扩展

但是似乎有不少bug

杂项

VScode 貌似默认使用 XWayland,可以启用实验性功能来支持 Wayland,但是在我这输入法没法用(XWayland 下候选框会到处乱飘,但是能用)

似乎有人已经解决了这个问题,但是在我这里没有成功

2024/11/3 Upd: 上文提到的 MR(已合并)已经解决这一问题