X Server-Client

Posted kelamoyujuzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X Server-Client相关的知识,希望对你有一定的参考价值。

参考:X Server-Client!! What the hell? (这哥们理解有问题,看视频吧)

Beginner‘s Guide To The Deskop 2 of 5 | X11, Display Manager and Windows Manager 

前言

  关于Linux的最美好的事情就是,它不像Windows或Mac那样,是一个大型黑盒子,而是一个由像乐高积木搭成的一件艺术品。本文介绍的就是众多积木中非常重要的一块,X Server-Client。这也是Unix/Linux现代GUI框架的基础。

  一致且设计良好的软件始终经得起时间的考验, X Server-Client architecture 也不例外。 它是由MIT实验室于1987年开发的,从那时起它就被部署在人类已知的每个UNIX系统上。 目前它处于第11次迭代中,因此它也被称为“X11”或简称为“X”。 如果有GUI,则称为X Server,这为操作系统使用带来了便利。X Server-Client architecture 中GUI的实现独立于OS,这意味着操作系统可以保持非常轻量,如果机器需要,完全可以在没有GUI的情况下提供全部功能。 例如,大型数据中心中的刀片服务器(server blades)永远不需要GUI,因此不必使用GUI来让系统变得臃肿。

  由于X Server-Client architecture是跨平台的,因此为开发人员带来了便利,开发人员可以选择某种framework 来编写UI代码(例如QT framework ),并且无论什么硬件,X Server都可以顺利进行渲染。需要图形显示的程序不必考虑硬件类型,Linux发行版差异等问题,将生成的GUI直接外包(outsourced)给X就可以了。

X Client

  Unix/Linux服务器通常具有强大的处理能力,但往往不是非常便携。虽然可以ssh远程访问服务器,但输出仍是命令行。 X Server-Client architecture解决了这个问题。

任何需要GUI并且与X Server交互兼容的应用程序都称为X Client,像Mozilla firefox,Xterm等。

技术分享图片

注意:你在Ubuntu中使用的terminal也是一个X Client。那么,它们是图形终端(graphical terminals )吗?说实话,它只是终端仿真器(terminal emulators),用于在图形环境中模拟真实的TTY终端。

技术分享图片

X Server

X Server从键盘,鼠标或任何其他输入设备获取输入,并根据当前运行的X Client,将数据发送到内核进一步处理。 然后处理结果返给X Server,X Server在屏幕上呈现结构。

技术分享图片

在数据处理和最终输出之间,有两个重要的组成部分。 如图所示; 一个是Window Manager,另一个是Display Manager/Graphical Interface。 

Window Manager

如果你打开了一个应用程序,而Window Manager并未在后台运行,那么将无法重新定位、甚至调整窗口大小。 甚至都没有关闭,最大化/恢复和最小化按钮,因为没有Window Manager提供标题栏。 这些东西都是Window Manager的一部分。Window Manager还决定如何将窗口放在一起(stack,tile等)。 目前有大量的stack,tile可用,像Compiz,I3,Awesome,Openbox等。这完全取决于你想要使用哪一个,Ubuntu的默认值是Compiz。

i3 window manager

技术分享图片

Compiz window manager

技术分享图片

Awesome window manager

 技术分享图片

Openbox window manager

技术分享图片

如今许多X Client自带客户端装饰(Client-Side decoration),例如标题栏。这意味着即使没有Window Manager也可以正常工作,但并非所有X Client都这样。事实上,Ubuntu下面那个Terminal(前面有图)就没有客户端装饰。

Display Manager

Display manager基本上是桌面环境。 这是放置所有程序窗口的地方。 Window Managers,文件浏览器,Dock等与桌面环境密切配合,为你提供统一的用户体验。 有许多不同的桌面环境可供选择 -  KDE,Unity,GNOME等。您可以在机器上安装多个这样的桌面环境,并随时切换。

KDE desktop environment

 技术分享图片

GNOME desktop environment

 技术分享图片

Unity desktop environment

技术分享图片

最后

事实上,在X Server-Client architecture,中,Client本身可以在本地的,也可以在远程。

试想这样一种场景,你的计算机上没有Web浏览器(Firefox),但你的朋友有一个。 好吧,你可以ssh -X,但问题是Firefox需要GUI,而GUI无法在终端上呈现。 所以你要做的就是使用X fowarding,借助X fowarding,你朋友的电脑作为X Server,他会给你(X Client)发送指令,告诉Client怎么把图像绘制出来。而Firefox实际上还是在远程你朋友的电脑上。 再假设你电脑上有Firefox(你更改了主题),你仍然远程连接到你朋友电脑(Firefox没有更改主题),那么你现实的Firefox是没有主题的那个。

 
 

以上是关于X Server-Client的主要内容,如果未能解决你的问题,请参考以下文章

为啥 ('x',) 中的 'x' 比 'x' == 'x' 快?

是∃x(P(x))是∃x(x∈S∧P(x))还是∃x(x∈S→P(x))的缩写?

python视频b'\x1aE\xdf\xa3\x01\x00\x00\x00\x00\x00\x00\

二进制数组在 C# 中将映射缩减为矩形

springboot redistemplate值有 x00数据

用matlab来编写一个函数计算:f(x)在x《=1时,f(x)=x,当x>1&x<10时f(x)=2*x-1,当x>=10时,f(x)=3*x;