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

news2024/11/25 18:45:11

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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1803598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM面试基本问题整理

文章目录 1、说下对JVM内存模型的理解2、运行时常量池的位置3、常量池和运行时常量池的区别4、内存溢出和内存泄漏5、Java 对象大小计算6、GCROOT都有什么7、常用的JVM启动参数有哪些8、TLAB 1、说下对JVM内存模型的理解 1)线程私有区域 程序计数器(Pro…

ROS学习记录:栅格地图格式

一、机器人导航所使用的地图数据,就是ROS导航软件包里的map_server节点在话题 /map 中发布的消息数据,消息类型是nav_msgs消息包中的OccupancyGrid,它的中文意思的占据栅格,是一种正方形小格子组成的地图。 二、对障碍物进行俯视&…

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛,而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中,要求测量温度用的传感器不能与被测物体相接触,这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

搭建python虚拟环境,并在VSCode中使用

创建环境 python -m venv E:\python\flask\venv激活环境 运行下图所示的bat文件 退出环境 执行下面的语句 deactivateVSCode中配置: ①使用CTRLshiftp命令,使用CTRLshiftp命令,输入: Python: Select Interpreter②选择之前创建…

C++ 11 【线程库】【包装器】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、thread类的简单介绍 get_id…

IO进程线程(七)代码替换函数、守护进程

文章目录 一、代码替换函数(一)system函数(二)exec函数族 二、守护进程(一)创建1. 脱离父进程影响2. 脱离原会话组和进程组的影响3.修改进程工作目录4. 修改进程创建文件的掩码5. 关闭从父进程继承的文件描…

轻松搞定阿里云域名DNS解析

本文将会讲解如何设置阿里云域名DNS解析。在进行解析设置之前,你需要提前准备好需要设置的云服务器IP地址、域名以及CNAME记录。 如果你还没有云服务器和域名,可以参考下面的方法注册一个。 申请域名:《Namesilo域名注册》注册云服务器&…

[Cloud Networking] Layer Protocol (continue)

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. DHCP Protocol3.1 DHCP 三种分配方式3.2 DHCP 攻击 4. IPSEC / MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路:通过阻断冗余…

大模型,也在卷价格

“百模大战”已从算力战、规模战蔓延到了价格战。 5月15日,字节跳动宣布豆包主力模型(小于等于32K)在企业市场的定价只有0.0008元/千Tokens,0.8厘就能处理1500多个汉字,比行业便宜99.3%;5月21日&#xff0…

【乐吾乐3D可视化组态编辑器】用开关控制巡检车和路灯

一、运动设备开关控制 3D组态编辑器地址:3D可视化组态 - 乐吾乐Le5le 1.在场景中新建模拟运动设备及控制面板:启动/停止 2.单击巡检车设备新建模拟动画 3.设置模拟动画属性 4.单击启动面板,新建交互事件 5.设置交互触发类型,新建…

WinForms 应用(.NET 8.0)使用ReportViewerCore.WinForms显示打印RDLC报表

在要WinForms 应用(.NET 8.0)中,显示RDLC报表,就要使用ReportViewerCore.WinForms。原来的ReportViewer只能在.NET Framework框架下运行。 1.ReportViewerCore.WinForms 程序包说明 SQL Server Reporting Services ReportViewer…

使用CodeGen进行程序综合推理

Program Synthesis with CodeGen — ROCm Blogs (amd.com) CodeGen是基于标准Transformer的自回归语言模型家族,用于程序合成,正如作者所定义的,它是一种利用输入-输出示例或自然语言描述生成解决指定问题的计算机程序的方法。 我们将测试的…

Mysql使用中的性能优化——单次插入和批量插入的性能差异

一般Mysql的客户端和服务端不在一台机器上,所以它们之间的通信需要通过网络进行。我们本次实验,希望抛开网络的影响,测试不同SQL方案在Mysql服务器上的执行效率的对比。于是我们使用“存储过程”来辅助测试。 结论 先上结论: 批…

HTML静态网页成品作业(HTML+CSS)—— 家乡南宁介绍网页(2个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有2个页面。 二、作品演示 三、代…

Git+Gitlab 远程库测试学习

Git远程仓库 1、Git远程仓库 何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现 Gitee 码云是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快 码云 Gitee - 基于 Git 的代码托…

每日一题——Python实现PAT乙级1037 在霍格沃茨找零钱(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度分析: 空间复杂度分析: 我要更强 哲学…

vivado DIAGRAM、HW_AXI

图表 描述 块设计(.bd)是在IP中创建的互连IP核的复杂系统 Vivado设计套件的集成商。Vivado IP集成器可让您创建复杂的 通过实例化和互连Vivado IP目录中的IP进行系统设计。一块 设计是一种分层设计,可以写入磁盘上的文件(.bd&…

搭建多平台比价软件你必须知道的几大知识板块

为了搭建一个多平台比价系统并使其发挥作用,你需要考虑以下几个关键的平台支持方面: 数据API采集平台: 电商平台:如亚马逊、淘宝、京东等,这些平台提供了丰富的商品信息和价格数据。旅行服务平台:如携程、…

Vue基础知识:插槽——默认插槽,插槽的后备内容,具名插槽,作用域插槽的认识与使用。(slot,#default,row的认识)

1.插槽的基本认识: 作用:让组件内部的一些结构支持自定义 插槽的分类: 1.默认插槽(组件内只能定制一处结构) 2.具名插槽(组件内可以定制多次结构) 简单而言:就是你希望封装一个…

探索教研在线平台的系统架构

教研在线平台作为一家致力于教育技术领域的企业,其系统架构扮演着至关重要的角色。本文将深入探讨教研在线平台的系统架构,从技术架构、数据架构和安全架构等方面进行分析,以期帮助读者更好地理解这一教育科技平台的运作模式。 技术架构是教研…