X,Xorg和D-Bus:有什么区别?


35

在学习在GUI编程中做某些事情的过程中(例如,为应用程序在屏幕上保留空间),我必须了解有关Window Manager(通常是Linux上的X11)的更多信息(我不确定是否还有发行版的,虽然我听说过Wayland,但它还没有实现。

我对编程很陌生,并且没有耐心。所以我只是潜入其中。现在,我正在阅读ICCCM,希望能学到更多。但是,本文档针对的是比我更了解(方式)的公众。因此,我遇到了一些信息,我希望得到一些澄清。

ICCCM 第2节引用:

请注意,在所有者和请求者之间传输的所有数据通常必须在X版本11环境中通过服务器传输。一个客户端不能假定另一个客户端可以打开相同的文件,甚至不能直接通信。另一个客户端可能正在通过完全不同的联网机制与服务器通信(例如,一个客户端可能是DECnet,另一个是TCP / IP)。因此,只有在两个客户明确同意的情况下,才允许传递对数据的间接引用(例如文件名,主机名和端口号等)。

据我了解,X Window Manager是建立在X Server之上的(感谢维基百科)。在上面的引用中:它表示客户端可以使用DECnet或TCP / IP与服务器进行通信。到目前为止,我还以为“服务器”只是一个比喻,现在我怀疑:X服务器是否像“ Web服务器”中那样是服务器?我应该如何理解其功能/定义?

然后,通常会引用X11,Xorg,X Server和/或X Window Manager。令人困惑:X11是否包含Xorg和X Window Manager?如果是这样,那么此X11捆绑包中还有其他东西吗?

X还需要鼠标或键盘或任何其他类型的输入:这也是X Server功能的一部分吗?X Window Manager是否严格只照顾显示?

最后,上面的引用还提到了客户端之间是否进行通信:这让我想起了D-Bus,我已经将其用于学习目的。使用D-Bus,您还可以触发窗口事件。这让我对程序之间如何通信感到困惑:* 使用X Server或D-Bus进行交互的程序之间有什么区别?*

可惜的是,这些信息仍然以某种方式仍然晦涩难懂,因此很难学习,但希望您能对此有所启发:)谢谢。

Answers:


61

您在这里问五个问题,可能最好问五个问题☺但我会跳进去:

  1. X是服务器,可以将其与“ Web服务器”进行比较,因为它是一个侦听使用特定协议(X协议)的传入连接并发出答案的过程。连接来自X客户端,这些客户端可能在本地主机上,也可能在通过网络访问的远程主机上。

  2. X11是X协议的“主要版本”,自协议诞生以来一直在发展。X11是最新的协议,也是最常见的协议。(Xorg是X服务器,X库和客户端集合的实现,都在谈论X11。还有其他实现:基本上已经不存在的XFree86;商业实现(例如Hummingbird Exceed);分叉(例如XQuartz),其在Mac OS X上运行)

  3. “窗口管理器”是管理窗口的X客户端。它通常负责用斜面/边框,阴影,包含按钮的菜单栏等来装饰窗口-并处理窗口放置的逻辑;支持拖动,调整大小或重新排列窗口等。

  4. X需要输入,并且使用内核来管理它是一个共同的责任。从历史上看,X本身进行了很多硬件管理。在现代,在Linux平台上,X逐渐变得“更小”,并将这种责任委托给Linux内核。这样做的优点是:较小的X代码库;内核和X都试图管理相同内容的“交叉线”更少。(这是Linux事件接口的一个示例,其中来自鼠标等的事件由内核及其驱动程序解释和转换为位于的标准接口/dev/input/event*,该标准接口由X服务器使用)。请注意,在其他平台(BSD,Solaris)上,X仍然是单片的。

  5. 进程之间有很多相互通信的方式。我相信X客户端可以通过X协议进行交互(例如,传统的X窗口管理器需要知道其他客户端何时绘制窗口以进行装饰;传呼机需要知道窗口的大小或位置何时发生变化,以便在寻呼机中反映出来)。D-Bus是一种现代的进程间通信(IPC)技术,旨在解决其他方法的缺点。它不是X特定的。


很好,谢谢!这真的很有帮助。关于5个问题:在那种情况下,我不知道协议是什么,但是如果管理员希望我拆分协议,我会听到的。我个人喜欢将其包含在一个文档中,并将这5个问题视为标题的子问题。再次感谢。
本杰明

不跳协议的要点是,X Window系统是经过设计的,因此应用程序(“客户端”)无需在同一主机上运行,​​即,您可以登录到另一台计算机,在该计算机上运行程序,然后在屏幕上打开窗口就像本地应用程序一样。如果另一个程序询问“您的进程ID是什么,以便我可以直接与您联系”,则无法正确回答此问题。
西蒙·里希特

您可能不希望X服务器共享的资源是由一个或多个监视器和两个或多个输入设备(键盘,鼠标)组成的显示器
hildred 13'30

绝对对所有5个问题都有帮助。谢谢。
哈维2015年

@hildred如果是一体机配置的触摸屏,则可能只有一个输入设备。
Shadur
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.