【译】X Server-Client!! What the hell?

你是Linux粉丝吗? 你讨厌以简单的方式做事吗? 您是否喜欢将计算机的生命放在线上进行实验和定制,以达到完美满意的程度? 欢迎来到俱乐部的孩子。

关于Linux的最好的事情是,它不是像Windows或Mac那样的大型黑盒子,而是它是由乐高积木制成的主要部分 我们将谈论这个主要部分的非常重要的部分 - X服务器 - 客户端。 UNIX系统的现代GUI框架的基础

“那些不了解Linux的人注定要重新发明它,很糟糕。”

为什么?

一致且设计良好的软件始终经得起时间的考验。 X Server-Client架构也不例外。 它是由麻省理工学院实验室于1987年开发的,从那时起它就被部署在人类已知的每个UNIX系统上。 目前它处于第11次迭代中,因此它也被称为“ X11”或简称为“ X” 。 如果有GUI,则有X服务器。 这为操作系统带来了优势; 独立于GUI实现,这意味着操作系统可以保持非常轻的重量,如果机器需要,可以在没有GUI的情况下提供完全功能。 例如,安装在大型服务器场中的服务器刀片永远不需要GUI,因此我们不会使用不必要的GUI来使它们膨胀,因此它的资源得到了充分利用。

这也为开发人员提供了优势,因为X服务器 - 客户端架构被设计为跨平台,开发人员可以选择一个框架来编写UI代码(例如QT框架)并且可以放心UI将被渲染无论硬件是什么,都可以通过X服务器正确使用。 反过来,它为用户提供了非常流畅和一致的GUI体验。 每个应用程序需要生成的GUI然后将外包给X,因此应用程序不必担心硬件的类型,或者该人正在使用的Linux发行版的变体。

说实话,并不是每个人都喜欢使用全文TTY终端时获得的黑客共鸣。 有正常的人喜欢看起来很棒的GUI。 因此,最好先了解一下幕后发生的事情。

要旨

请注意,类似Linux和UNIX的系统用于功能强大的服务器上,这些服务器具有很强的处理能力,但可能不是非常便携。 而且,这些机器开始时非常昂贵。 因此,聪明人提出了一个解决方案,一个架构--X服务器客户端。 尽管可以使用SSH远程访问计算机,但输出只能显示在终端上,而不能显示在能够显示图形内容的窗口上(位图显示)。 因此,X服务器与显示图形内容密切相关。 例如,您将无法像在Firefox上一样浏览终端上的Web。

我们将详细讨论客户端和服务器,最后我将告诉您这是如何为您提供定制的能力。 让我们潜入......


X客户端

让我们先解决这个问题。 任何需要GUI并且与X Server交互兼容的应用程序称为X客户端。 Mozilla firefox,Xterm等都是一些例子。 你在Ubuntu中使用的终端也是一个X客户端! 那么,它们是图形终端吗? 说实话,它们是终端仿真器,用于在图形环境中模拟真实的TTY终端。

如果您在TTY,终端和shell之间感到困惑, 请检查此链接

PS:终端部分可能会让人难以理解,让我们再看看。 回到过去的好时光,每张桌子上的电脑都不可能(太大,太贵)。 因此,他们有终端/控制台,这些终端/控制台只接受输入并将其发送到主机并将输出呈现在控制台上。 这就是他们被称为TTY(电传打字机)的原因。 你也有Linux机器上那些。 尝试Ctrl + Alt + F1要退出它,请按Ctrl + Alt + F7。 在这方面也有太多的理论,但我将在本文的后半部分详细讨论它。 请记住,您在桌面上使用的终端是模拟器,实际上也是X客户端。

有关详细信息,请查看此链接

下图显示了x客户端在本地和网络上使用x服务器的情况

X服务器

这是实打实的。 X服务器的工作是从键盘,鼠标或任何其他输入设备获取输入,并根据当前运行的X客户端,它将此数据发送到内核进行进一步处理(无论您的X客户端应该做什么在这里完成)。 然后输出再次提供给X服务器,现在X服务器在屏幕上呈现它。 挺整洁的吧?

对于单个机器,堆栈看起来像这样


现在开始有趣 ......

在这个处理过的数据和最终输出之间,有两个重要的组成部分。 如图所示; 一个是窗口管理器 ,另一个是显示管理器/图形界面 。 这个东西让你可以自定义和选择你认为最适合你的东西......

窗口管理器

如果您打开了一个窗口管理器未在后台运行的应用程序,那么您将无法重新定位甚至调整窗口大小。 您甚至没有关闭,最大化/恢复和最小化按钮,因为您将不会提供标题栏。 这些东西是窗口管理器的一部分。 它还决定如何将窗户放在一起(堆叠,瓷砖等)。 现在有大量的窗口管理器可用 - Compiz,I3,Awesome,Openbox等。它们也有不同类型 - 平铺,堆叠等。所以它完全取决于你想要使用哪一个。 Ubuntu的默认值是Compiz。

PS:现在很多时候很多X客户端都带有客户端装饰,其中包括标题栏和客户端本身,这意味着它们可以在没有窗口管理器的情况下工作,但对于所有客户端都不是这样。 事实上,Ubuntu终端没有客户端装饰。

再看一下图表。

i3窗口管理器

Compiz窗口管理器

很棒的窗口管理器

Openbox窗口管理器

显示管理器

显示管理器基本上是桌面环境 。 这是放置所有应用程序窗口的阶段。 窗口管理器,文件浏览器,Dock等与桌面环境密切配合,为您提供统一的用户体验。 有许多不同的环境可供选择 - KDE,Unity,GNOME等。您可以随时在机器上安装多个这样的环境,并随时在它们之间切换。

再看一下图表。

KDE桌面环境

GNOME桌面环境

Unity桌面环境


这里的主要思想是整个操作系统保持不变(内核,远程,文件系统;所有东西),但您的GUI组件可以像乐高积木一样交换进出。 那不是很棒吗?

真正的力量

无论我到目前为止告诉你什么都可能对你机器的化妆品有益,但让我们看看这让我们挥舞着什么样的力量。

请记住,图中显示的堆栈存在于每台机器中。 这意味着,即使您只使用一台计算机,但由于使用了“客户端 - 服务器”,整个客户端服务器架构可能会有点混乱,但事情是服务器的主要任务是为您提供一致的用户界面,无论您使用什么应用程序。 实际上,在X服务器 - 客户端体系结构中,当用户直接与服务器交互时,客户端服务器关系被反转,但客户端可以是本地的,也可以是远程的,如下段所述。

当我们在计算机网络中使用它时,这种架构真的很棒。 现在考虑一下; 您的计算机上没有Web浏览器(Firefox),但您的朋友有一个。 好吧,你可以ssh,但问题是Firefox需要GUI,就像我之前说的那样,GUI无法在终端上呈现。 所以你要做的就是使用X转发功能。 这基本上做的是让你通过网络将你的输入发送到朋友的X客户端,并获得输出(如何呈现GUI的命令)到你的X服务器,从而转发 。 因此,您朋友的机器生成的GUI将在您的显示器上呈现。 通过网络的GUI。 那不是很酷吗?

PS:请注意,如果你的机器上有主题和所有的Firefox,而你朋友的Firefox都是原始的,那么从他的机器转发的X将在你的机器上呈现原始版本的Firefox,表明提供Firefox的命令确实是来自你朋友的机器。

这是Joe Collins的精彩视频,它将作为本文的实用指南

有用的术语和定义

一个有趣的事实

如果你看过我告诉你的Jeo Collins的视频,那么你一定注意到他是如何从他的TTY终端部署窗口管理器的。 在系统启动的实例中,它会打开8个非图形TTY终端,您可以使用Ctrl + Alt +(F1 - F8)进行访问 。 您的GUI部署在第7个终端上,这就是您在按Ctrl + Alt + F7时返回GUI的原因 这意味着您可以作为不同的用户从这些其他7个终端登录,并在那里部署桌面环境。 默认情况下,终端数量为8,如果您愿意,可以随时使用。

我离开之前几句话......

成为Linux用户是一种责任; 学习,改进和传播的责任。 永远不要害怕尝试,永远不要压抑改变的冲动。 把事情视为理所当然是犯罪,总是在幕后看......

https://medium.com/mindorks/x-server-client-what-the-hell-305bd0dc857f

猜你喜欢

转载自blog.csdn.net/omnispace/article/details/82997475
今日推荐