![]() |
1
6
从本质上讲,GUI位是包含chrome(程序窗口周围的内容)的单独库,通常还包括许多其他内容,如桌面工具栏等。GNOME和KDE就是这方面的桌面环境示例。 它们每个都包含一个窗口管理器,这个窗口管理器可以精确地告诉程序在哪里绘制,以及如何绘制chrome。
在你的窗口管理器上面,你有你的实际程序。每个窗口管理器都会调用窗口管理器来执行类似于“给我一个带关闭按钮的50x50窗口”的常规操作。 程序绘制的实际小部件通常使用一个图形工具包,就像GNOME中包含的那样。KDE包括Qt工具包。 这里有很多选择 http://xwinman.org/ |
![]() |
2
7
我觉得保罗的回答可能有点用词繁重,所以这是我的尝试。 荷载 我们使用 司机 (生活在我们的 操作系统内核 接口 ,例如OpenGL:
全部的 驱动程序可以绘制图像,尽管这比真正的OpenGL支持慢得多)。OpenGL的一个主要竞争对手是DirectX,但它只适用于Windows和XBox。 倍数 通过网络 服务器
X倾向于直接访问驱动程序,因为它比OpenGL要长,但这并不太重要。 X11协议通过让应用程序创建 窗户 他们可以画进去。X可以在屏幕上排列这些窗口,包括重叠窗口。使用OpenGL的应用程序可以让它们的命令“通过”X直接指向驱动程序,X仍将像其他命令一样排列窗口(这将 不 在网络上工作,因为它绕过了X11的网络功能)。 窗口管理器 . 或者,窗口管理器可以在其他窗口的边缘创建一些薄窗口,以便可以绘制标题栏、调整句柄大小等。
然而,大多数现代应用程序觉得原始X11太乏味了;与其绘制线条和形状,不如绘制整个 小部件 (按钮、菜单、图标等)。要做到这一点, 工具包 已经创建。最有名的两个叫做 和 GTK公司+ (GIMP工具包,因为它最初是为GIMP创建的);其他工具包括Motif、Lesstif、ETK、Tk和FLTK。我们可以让工具箱绘制一个按钮,它会发送所有必要的X11命令来绘制一个按钮,另外它会考虑按钮的大小和位置, 清爽 如果某个图形覆盖了它,它就会移动,告诉我们单击按钮时的代码,一些工具包甚至允许使用 . 有些工具包也是跨平台的,因此它们会在Linux上发送X11命令,在Windows、OSX等上发送不同的命令。
一些工具包提供了一些特性
其他的;例如
值得一提的一点是,X11的shape-and-text绘图命令实际上并不常用,因为它们非常原始。许多工具箱实际上将它们的小部件呈现为图像,然后让X绘制这些图像。新的 系统正试图通过放弃绘图命令,让应用程序和工具包直接使用OpenGL来取代X,这将使事情变得更快。 您提到了不同的桌面环境,比如GNOME和KDE,以及它们是否协同工作。这些基本上都是大量应用程序的集合,它们是为了很好地协同工作而编写的。碰巧GNOME应用程序都是用GTK+编写的,而KDE应用程序都是用Qt编写的。
混合桌面时唯一要担心的是两个应用程序是否在竞争做相同的工作,例如,如果您试图运行两个窗口管理器或两个桌面面板。注意这是 不 一个关于图形、工具包等的问题,因为如果我使用两个构建在 相同的 |
![]() |
GusMilky · 如何通过命令行正确启动Gnome外壳扩展? 7 年前 |
![]() |
gcb · 如何在gnomeshell扩展中处理键盘事件? 10 年前 |
![]() |
Max Bittker · 控制GTK选择 10 年前 |