xzhao
(xzhao)
2019年09月20日 11:41
1
之前Telegram在GNOME/XFCE上面一直启动不了,参考bug:
https://bugzilla.opensuse.org/show_bug.cgi?id=1149986
简单来说就是一旦安装了libqt5-qtstyleplugins-platformtheme-gtk2这个包,Telegram就没法在GNOME/XFCE/Cinnamon上面启动,KDE上正常。可是又不能把这个包标为和Telegram 冲突,因为Cinnamon是硬依赖这个包的。
经过一晚上调试我发现根本原因是openSUSE对Qt打的一个莫名补丁,把gtk2的主题顺位前调了:
https://build.opensuse.org/package/view_file/KDE:Qt:5.13/libqt5-qtbase/libqt5-prioritise-gtk2-platformtheme.patch?expand=1
这样gtk2和gtk3主题同时存在的话就会优先使用gtk2的主题,导致了上面的问题发生。
现在各大桌面平台已经基本迁移到了gtk3,所以我向bugzilla和邮件列表发布了请求移除这个补丁。
很多补丁都是很早的时候为了解决某个问题加上的,但是后来不需要了可能还留着。你可以看看 .changes 文件里是谁加的这个补丁,什么时候加的,加的原因是什么。还有可以看看隔壁 Fedora/Debian/Arch 有没有这个补丁。如果这个补丁太老,或者别家都没有,那我觉得不该留着。
-------------------------------------------------------------------
Sun Oct 9 16:57:18 UTC 2016 - sor.alexei@meowr.ru
- Add libqt5-prioritise-gtk2-platformtheme.patch: Give
Gtk2 Platform Theme (from qtstyleplugins) a priority over
Gtk3 Platform Theme which currently lacks QGtk3Style
(boo#1002900).
5.7.x 时代加进来的补丁。
https://bugzilla.opensuse.org/show_bug.cgi?id=1002900
可以让他们找一个别的 implementation
xzhao
(xzhao)
2019年09月22日 21:20
5
是不是现在Gtk3 平台已经实现了QGtk3Style?
另外“找一个别的Implementation” 是什么意思?不好意思没能理解
啥?GTK+3 平台实现 QGtk3Style?从来没有过,一直都是 Qt 去实现在 GTK+ 桌面用 GTK+ 引擎和主题去渲染自己的 UI。
看这个也许会更好的理解这个问题。现在可能 Qt 只想支持 GTK+ 3(我的理解是这样),所以把这部分全剥离出去做了 qtstyleplugins 这个项目。也就是说想要用 GTK+2 引擎渲染 Qt 程序就需要安装它。
所以很明显,应该是继续使用 gtk2 的桌面去单独安装和使用它。
现在 openSUSE 的 Qt 部分可能是想支持全平台不设置,主动去选择了 gtk2,造成了全程使用 gtk3 的程序,如果碰巧装在了一个安装有 gtk2 主题(和 gtk3 主题)的桌面上,比如 gnome 和 cinnamon 同时安装着,就会默认使用 gtk2 主题渲染,造成程序崩溃。
我理解你想表达的是这个意思。
那另找一个 implementation 可以像 manjaro 那样由各个桌面的维护者去想办法啊。
个人感觉当时不采用各个桌面自己弄的原因是 /etc/environment 只有一个…比如 Cinnamon 设置了,GNOME 也跟着生效,bug 依然还在…不用用户手动干预可能没有别的办法
这跟 Wayland 下输入法面临的问题是一样一样的…
xzhao
(xzhao)
2019年09月25日 12:51
9
我想知道现在还有继续使用gtk2的桌面吗?GNOME,XFCE和Cinnamon已经都迁移到GTK3了吧?
另外提请注意Cinnamon是hard-depending在qtstyle gtk2 plugin上的,所以gtk2主题插件不是“碰巧”是“一定”会安装。
注意qstylesplugin同时有gtk2和gtk3版本,目前是优先gtk2,而我的意见是提高gtk3的优先级,这个解决方案会有什么问题吗?
我回头看看 Cinnamon 为什么会 hard depends on gtk2。
xzhao
(xzhao)
2019年09月25日 14:48
11
就算不hard depend,libqt5-qtstyleplugins-platformtheme-gtk2这个包也会被默认推荐安装。我觉得更好的解决方案是把gtk3 plugin的优先级提高到高于gtk2。 @marguerite
现在 Factory 里面的 libqt5-qtbase 已经没有 -gtk2 这个包了啊?
原来的行为就是你说的这个。按你的说法,没有需要 gtk2 的了,直接删掉补丁就行。我的意思也是删掉补丁,谁出问题去解决出问题的那个程序。
xzhao
(xzhao)
2019年09月26日 02:02
14
@xzhao
我删除了 cinnamon-session 的那个补丁,并且删除了 libqt5-qtstyleplugins-platformtheme-gtk2
结果发现我的 cinnamon 下面 Qt5 程序跑的好好的(kwrite)。
cinnamon in openSUSE 的主题是默认的 Menta(在 mate-themes 包里) 和 gnome 默认的那个 Adwaita。这两个都是完全支持 gtk3 的主题。
至少就目前我自己的情况来看,那个 libqt5-base 补丁是用来做 libqt5-qtstyleplugins-platformtheme-gtk2 的,而 cinnamon 连那个包都可以不需要。
xzhao
(xzhao)
2019年09月30日 18:27
20