X11/X - linux桌面软件,我不明白这是如何组合在一起的

bpl*_*lus 5 linux x11

我最近开始使用Linux(我工作的地方是Microsoft商店,因此我只使用C#编写代码,使用MS产品等).

我试图从高层次上理解Linux中的一些基本内容是如何结合在一起的.我一直在阅读www.linfo.org

无论如何,我从来没有得到X是什么.

从阅读本文开始,我认为X是位于操作系统之上的层(一个X服务器位于OS之上),X客户端应用程序向X服务器发出请求.我认为KDE,Xfce和Gnome都是显示管理器,那么它们是X服务器客户端吗?

我对所有事情都很困惑.

任何解释都会非常感激!

Joe*_*erg 28

它非常模块化和灵活; 然而,这会导致复杂性.

"X服务器"驱动显示设备.它为客户提供图形服务,这些服务非常简单 - 例如:

"Give me a window frame to draw in"

"Put this bitmap here"

"Draw a horizontal black line 100px wide"

"Render the text 'hello' at (100,100)"

"Tell me if any mouse clicks or key presses have been aimed at my window frame"
Run Code Online (Sandbox Code Playgroud)

X提供了一个名为Xlib的库,它为所有这些简单服务提供了标准接口.任何想要使用X服务器显示的程序最终都使用此客户端库,称为X客户端.Xlib知道如何连接到任意X服务器 - 在本地计算机上,或通过LAN或整个世界的TCP/IP - 来调用这些服务.

窗口管理器,它只是另一个X客户端程序,负责桌面的"外观和感觉" - 如何移动和排列窗口等.因为窗口管理器绘制所有窗口装饰,它可以使桌面看起来像WindowsXP,Mac或NeXTSTEP.

X的哲学的一部分是定义"机制而非政策" - 意思是,它们为您提供了工具,但不告诉您如何使用这些工具.一个这样的工具是窗口管理器,可以随意更换.

编写许多现代X应用程序以使用桌面环境,如Gnome或KDE.这为这些程序提供了一组一致的按钮和控件来绘制,并为一些传统上不包含在X中的东西提供了一致的界面,但通常被认为是桌面的一部分 - 例如如何响应拖放或如何呈现标准文件选择器对话框.

桌面环境通常提供对象模型或编程接口,负责完成所有简单的X客户端请求,并让程序处理更重要的事情.删除这些低级别调用会产生另一个重要好处 - 平台独立性.

许多桌面环境都包含一个窗口管理器,因此窗口控件和按钮的外观和感觉是一致的,并且可以与环境提供的桌面隐喻一起使用.但是,它通常仍然可以关闭.

X服务器(运行显示器)和X客户端(想要使用显示器)的分离有一些含义:

  • 图形系统与GUI程序是分开的,它们与Web浏览器和Web服务器完全分开.

  • 因此GUI程序可能不会在本地计算机上显示 - 就像Web浏览器不必指向本地计算机上的Web服务器一样.

  • 一台机器可以运行JUST客户端,X服务器可以在别处运行.

  • 具有显示器的机器不必运行客户端 - 它可以运行JUST X服务器,并且所有客户端都可以在专用机器上运行.这是最初的瘦客户端:在大型中央服务器上运行的大型程序 - 图形用户交互由用户面前的桌面上的专用硬件处理.

  • 您需要知道X服务器的网络地址是什么,这样您就可以告诉GUI程序在哪里显示其GUI.(这通常通过设置DISPLAY环境变量来完成)

  • 您可以在同一台桌面上同时显示许多不同计算机上的许多程序.它全部无缝处理,包括剪切和粘贴.