我在 Kubuntu 20.04 下使用 OpenCPN 5.2.4 和 OpenGL(用于将雷达覆盖在图表上)。与使用 GTK3 相关的跟踪 OpenCPN 错误导致在使用显示缩放时 OpenCPN 无法正确缩放显示(我在 15.6 英寸 4k 显示屏上使用 200% 缩放)。
临时的解决方法是使用 GTK2 而不是 GTK3。
我的问题是:我怎样才能在我的系统上恢复到 GTK2?
如能得到关于如何进行的提示我将非常感激。
系统信息:
- 操作系统:Kubuntu 20.04
- KDE Plasma 版本:5.18.5
- KDE 框架版本:5.68.0
- Qt 版本:5.12.8
- 内核版本:5.4.0-77-generic
- 操作系统类型:64位
- 处理器:4 × Intel® Core™ i5-4570T CPU @ 2.90GHz
- OpenGL:3.0 Mesa 20.2.6
$ apt-cache policy opencpn
opencpn:
Installed: 5.2.4.0-0~focal1
Candidate: 5.2.4.0-0~focal1
Version table:
*** 5.2.4.0-0~focal1 500
500 ppa.launchpad.net/opencpn/opencpn/ubuntu focal/main amd64 Packages
100 /var/lib/dpkg/status 5.0.0+dfsg-1 500
500 nz.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
答案1
- 下载源代码[升级至 OpenCPN 5.2.4]
- 确保所有 GTK3 调用都兼容 GTK2
- 调整/重新编码那些使用 GTK3 特性的程序,使它们仅限于 GTK2 功能并进行 GTK2 调用
- 重新编译代码。
GTK3 和 GTK2 API 不同,因此您不能用 GTK2 包替换 GTK3(我猜您希望如此)。
程序需要移植,这是一项繁重的工作(为什么 MATE 花了很长时间来移植,XFCE 等也是如此...更不用说 GNOME 从 GTK2 移植到 GTK3,现在又转向 GTK4)
如果不清楚的话——需要完成的工作是在 OpenCPN 程序和 OpenGL 中完成的;即当前调用 GTK3 的最终用户程序——这些需要更改。
一个系统可以同时存在 GTK3 和 GTK2;例如我的 Lubuntu顽皮的系统安装了 Qt5、GTK3 和 GTK2 库,它们可以愉快地共存。
hexchat
(我选择的 IRC 客户端)调用 GTK2 库liferea
&evolution
(我选择的 RSS 和 MUA)调用 GTK3 库- 我的 Lubuntu LXQt 桌面,它的程序(例如
featherpad
调用 Qt5 库)就像您的 KDE 桌面一样(许多 KDE 应用程序也需要 KF5)。
需要更改的是最终用户程序。您可以在系统中安装所有 GTK2 工具包/库,但如果没有程序调用它,它将不会被使用。
另请注意: GTK2 中不存在缩放功能,因此我不明白您希望实现什么。