我正在尝试了解桌面环境(例如 KDE、Cinnamon、GNOME)、窗口系统(X、Wayland)和 GUI 库(Qt、GTK)之间的关系。以下是我认为我理解的一些内容(请纠正我!):
- 桌面环境使用特定的库进行编码(例如基于 GTK 的 Cinnamon、基于 Qt 的 LXQt);它们定义了 GUI 的特定外观和感觉
- 库负责绘制与我交互的特定小部件(按钮,文本字段等)。
- 它们通过向窗口系统发送绘图指令来实现这一点(例如,为我的按钮绘制一个圆角矩形)。
但是,这张图片中似乎有些不对劲:运行 Cinnamon(基于 GTK),我完全可以编写和运行使用 Qt 的程序。特定程序如何使用自己的 GUI 库(并发送自己的绘图指令)?桌面环境不是应该定义窗口的形式和形状吗?
答案1
用户体验
您可以同时在内存中拥有 Qt 和 GTK 库(包括 GTK2、GTK3 和 Qt5……),如果您的机器中有大量内存,这不会成为问题,但如果您的 RAM 有限,则意味着大量分页和非常缓慢的体验。
一般情况下,我倾向于忽略 RAM 大于 4GB 的机器所使用的工具包和库,对 4GB 的机器不太感兴趣,但如果机器有 2GB,尤其是 1GB 的机器,则需要特别注意。使用的库/工具包越多,开销就越大(尤其是 RAM 占用量)...
台式机 (以 LXQt 为例)
DE 并未定义一切(Lubuntu 使用 LXQt 和 Openbox,可以处理最大化、最小化等,而 LXQt 却做不到)
软件以堆栈形式构建,您可以放入并替换各种组件(在 Debian 上使用 LXQt,它将默认使用xfwm4
XFCE 项目,而不是 Lubuntu 团队首选的 Openbox)。
程序员可以控制他们使用什么,并且他们倾向于选择满足他们需求或项目目标的高效工具(LXQt;L 代表被认真对待的光)。
选择
虽然最终用户仍然可以通过选择 GTK 程序来浪费内存,但打包程序可以自由使用不同的 WM(我的 openbox/xfwm4 示例)并根据他们的选择构建系统。
一旦安装,您也可以更换组件。
GNU/Linux 用户可以进行选择,我们可以挑选各个系统在我们的堆栈中存在的部分,甚至可以加倍使用多个以不同方式执行相同操作并浪费资源的库/工具包,只是因为我们可以,或者它让我们高兴。