记录:linux桌面管理基础-X11协议(X window system)

Hunter_pcx 2024-08-06 08:37:01 阅读 72

1、认识X11

X11是X协议,版本号为11。X协议是专门被设计为linux桌面管理服务的,而linux桌面环境不像windows那样作为系统内核的一部分,作为一个普通程序运行在用户态上。该协议的设计初衷是为了linux的图形界面满足跨平台跨网络、与具体硬件剥离、同时被多个用户使用的需求,因此该协议被设计成客户端-服务器的模式,即由xserver和xclient组成,xserver和xclient通过网络架构来进行图形接口的通信和执行绘制:

xserver管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 xclient。xclient即linux主机,负责处理逻辑。

比如如果用户点击了鼠标左键,xserver 捕捉到鼠标点击这个动作,然后它将这个动作告诉 xclient,然后xclient 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server说:“请在屏幕XX位置(鼠标左键点击的位置)画一个圆”。最后,xserver 就响应 xclient 的请求,在鼠标点击的位置,绘制并显示出一个圆。

2、X协议的实现

目前基于该协议的实现架构如下图所示,xfree64是xserver的具体实现,xorg是xree64的扩展;xlib是xclient的具体实现,但是对开发者不够简便,于是在xlib上又诞生了qt和gtk,qt是直接使用Xlib库的,gtk则使用了再次封装了的gdk和glib;qt与gtk都很优秀,在他们之上开发者分别开发出了kde与gnome桌面;kde和gnome是集成了窗口管理器及一些应用程序的套件;其他的x application则跑在这些窗口管理器里。

3、显示管理器(Display Manager)和桌面环境(也叫窗口管理器Window Manager)

显示管理器(Display Manager,DM)主要用于提供linux登录环境和登录成功后加载桌面环境,我所理解的管理登录显示和选择桌面显示环境;桌面环境(Window Manager,WM,也就是X服务)主要用来统一管控多个xclient的绘制,因为xclient之间彼此是不知道对方在屏幕上的信息(想想多个xclient都往同一个显示器上绘制,这样容易导致相互覆盖)。

桌面环境的作用还包括:

提供许多的控制元素,包括工作列、背景桌面的设置等等;管理虚拟桌面 (virtual desktop);提供窗口控制参数,这包括窗口的大小、窗口的重叠显示、窗口的移动、窗口的最小化等等。

要注意显示管理器和桌面环境是两个分开独立的应用程序,但是往往在同一个团队一起开发,用户可以通过显示管理器切换任意的桌面环境,比如目前常见的配套如下(左为显示管理器,右为桌面环境):

GDM——GNOME (GNU Network Object Model Environment,使用大量的系统资源,但给一个现代的、精致的系统)KDM——KDE(K Desktop Enviroment,可高度定制的桌面,适度占用系统资源)LightDM(Light Display Manager,由 Ubuntu 为 Unity 桌面开发,作为跨桌面显示管理器,其目的是成为 X org 的 X Server 的标准显示管理器)——twm (Tab Window Manager)——XFCE (XForms Common Environment,外观复古但占用资源很少)——LXDE(唯一的重点是尽可能少地使用资源)——Budgie(现代的外观和适度占用系统资源)

可以运行如下命令在各显示管理器之间切换:

sudo dpkg-reconfigure xxx

各桌面环境作为各linux发行版本的情况可以参照linux lightdm gdm gnome kde等的区别于联系(桌面环境 窗口管理器 显示管理器)_gdm和gnome的区别-CSDN博客

4、X window system 启动

必须要先启动管理硬件与绘图的 X Server ,然后才载入 X Client,而启动方式有两种:第一种在终端通过startx命令,第二种通过display manager

4.1 startx启动

先介绍第一种启动方式:

startx &

&符号表示命令在后台执行。startx其实只是一个脚本文件(/usr/bin/startx),最终执行的命令程序是:

xinit "$client" $clientargs -- "$server" $display $serverargs

而startx的主要作用是找出xinit程序命令所需要的配置参数,搜寻配置参数的逻辑是:

X server 的参数方面:

使用 startx 后面接的参数;若无参数,则找寻使用者主文件夹的文件,亦即 ~/.xserverrc若无上述两者,则以 /etc/X11/xinit/xserverrc若无上述三者,则单纯执行 /usr/bin/X (此即 X server 可执行文件)

X client 的参数方面:

使用 startx 后面接的参数;若无参数,则找寻使用者主文件夹的文件,亦即 ~/.xinitrc若无上述两者,则以 /etc/X11/xinit/xinitrc若无上述三者,则单纯执行 xterm (此为 X 下面的终端机软件)

$xclient可以是xclock、xeyes、xterm这样的x程序,也可以是twm(最简单的桌面环境)、gnome-session(GNOME环境)、startkde(KDE环境)这样的桌面环境。

$xserver可以是这三个中的一种:Xfree86,Xorg,Xnest。

$display表示显示到哪台显示设备上,也可以后期通过设置DISPLAY环境变量切换,关于该变量的使用可以参照这一篇:Linux DISPLAY变量的使用技巧_当 display 环境变量设置不正确时,可能会出现哪些问题?请举例说明,并提供可能的解-CSDN博客

4.2 display manager启动

其实这种启动方式内部还是调用了xinit命令,如果是gdm可以通过以下命令启动和关闭X系统:

service gdm3 stop

service gdm3 start

如果是lightDM(现在linux发行版基本上都是用的这个),可以输入以下命令启动和关闭X系统:

sudo /etc/init.d/lightdm start

sudo /etc/init.d/lightdm stop

5、使用X协议远程桌面linux实践

linux远程桌面linux、windows远程桌面linux可以参考这篇:11.3 最原始图形接口: Xdmcp 服务的启用 | 鸟哥的Linux私房菜:服务器架设篇 第三版,

使用XVNC或者SSH隧道转发实现远程桌面linux可以参考这篇:

X11协议基础与实践-CSDN博客

参考:

认识x11_x11协议-CSDN博客

linux桌面管理器sddm,GDM, KDM, LightDM, SDDM的区别和安装配置-CSDN博客

X11、GTK、QT、GNOME和KDE之间的区别与联系_linux x11是什么 gtk gnome区别关系-CSDN博客

gnome桌面_Linux 知识分享:显示管理器和桌面环境容易混淆?分分钟带你脱离认识误区...-CSDN博客

23.1 什么是 X Window System | 鸟哥的 Linux 私房菜:基础学习篇 第四版

linux lightdm gdm gnome kde等的区别于联系(桌面环境 窗口管理器 显示管理器)_gdm和gnome的区别-CSDN博客

LightDM简介-CSDN博客



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。