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

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协议远程桌面linux实践

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

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

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

参考:

认识x11_x11协议-CSDN博客

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

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

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

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

LightDM简介-CSDN博客

相关推荐
2401_857610033 分钟前
SpringBoot实现:校园资料分享平台开发指南
服务器·spring boot·php
C++忠实粉丝1 小时前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert1 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
hakesashou2 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te2 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20092 小时前
Linux性能调优技巧
linux
大G哥2 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
醉颜凉3 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统