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

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

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

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

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

我对所有事情都很困惑.

任何解释都会非常感激!

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

“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"

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服务器的网络地址是什么,这样您就可以告诉GUI程序在哪里显示其GUI. (这通常通过设置disPLAY环境变量来完成)
>您可以在同一台桌面上同时显示许多不同计算机上的许多程序.它全部无缝处理,包括剪切和粘贴.

相关文章

insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...