Linux桌面溯源

X窗口系统(X Window System)

Linux起源于X窗口系统(X Window System),亦即常说的X11,因其版本止于11之故。

X窗口系统(X Window System,也常称为X11或X)是一种以位图方式显示的软件窗口系统。最初是1984年麻省理工学院的研究,之后变成UNIX、类UNIX、以及OpenVMS等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。X窗口系统通过软件工具及架构协议来创建操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用X。今日知名的桌面环境——GNOME和KDE也都是以X窗口系统为基础建构成的。

由于X只是工具包及架构规范,本身并无实际参与运作的实体,所以必须有人依据此标准进行开发撰写。如此才有真正可用、可执行的实体,始可称为实现体。当前依据X的规范架构所开发撰写成的实现体中,以X.Org最为普遍且最受欢迎。

218b1771b9744d9792844f4de371f7a7.png

在图例中,X服务器从键盘、鼠标获取输入信息,之后将输入反馈显示于银幕,而网页浏览器及终端模拟器则在客户端的本机系统上运行。
此外客户端也通过网络与远程的机器、服务器保持联系,以保消息状态的更新。如此的机制及架构能使远程运行的软件如同在本机端运行一样。

3dd6d46c516c4d67a5c0ae9daefcfeca.png

X Server

       X Server是一个显示服务器,它实现了X Window System协议,用于在网络计算环境中提供图形界面支持。
      X Server提供了底层图形显示和输入处理功能,负责处理图形硬件的低级别操作,如屏幕绘制、键盘和鼠标输入等。高层桌面环境(KDE, Gnome,Xfce),依赖于X Server来进行窗口的绘制和用户交互。
       X Server通过网络透明性允许应用程序在不同的主机上运行,并在本地主机上显示其图形界面。

X会话

       X会话(X session)是指在X Window System(X11)环境下启动并运行的图形用户界面会话。它包括启动X服务器、窗口管理器或桌面环境,以及一组在此基础上运行的应用程序。

启动X会话

      使用显示管理器

   安装完成后,显示管理器通常会自动启动,并在系统启动时运行。你可以通过图形界面选择用户并登录,从而启动X会话。

     使用命令行工具

1. startx:

   `startx` 是一个用于启动X会话的命令行工具,它会读取用户的`.xinitrc`文件来配置启动的应用程序或窗口管理器。

   startx

2. xinit:

   `xinit` 是一个更低级别的工具,可以更精细地控制X会话的启动过程。

   xinit /usr/bin/xterm -- :1

   配置 `.xinitrc` 文件

用户可以创建或编辑 `.xinitrc` 文件来定制X会话的启动过程。

   nano ~/.xinitrc

   #!/bin/sh

   exec i3

 

   chmod +x ~/.xinitrc

退出X会话

退出X会话的方式取决于所使用的窗口管理器或桌面环境。通常可以通过以下方式退出:

       1、通过窗口管理器的菜单或快捷键:如i3的快捷键`Mod+Shift+E`。

      2、通过注销或关闭按钮:在桌面环境(如GNOME、KDE Plasma)中,通常在菜单中提供注销、重启和关机选项。

      3、通过命令行:在终端中运行`exit`,或在X会话启动的终端中

 

Display环境变量

       DISPLAY是一个Shell变量,它的值用于控制“在哪里绘制和显示图形界面”。

       X client为了找到自己应该在哪里绘制和显示图形界面,首先会获取并解析当前Shell中DISPLAY变量的值。接着,X client根据解析结果,把绘图命令发送给对应的X server。

 

DISPLAY 变量值的格

:<机器运行的第几号X server>.<该X server管理的第几号screen>示例: :0.0,:0.1,:1.0
含义: X client读取该值后,会把绘图命令发送给<机器运行的第几号X server>,请求该X server将GUI绘制在<该X server管理的第几号screen>上
注意: X client与X server必须位于同一机器,通过unix socket或内存通信
<机器的IP或主机名>:<该机器运行的第几号X server>.<该X server管理的第几号screen>示例: 192.168.1.2:0.0,127.0.0.1:1.0,localhost:10.0
含义: X client读取该值后,会把绘图命令发送给<机器的IP或主机名>上的<机器运行的第几号X server>,请求该X server将GUI绘制在<该X server管理的第几号screen>上
注意: X client与X server可以位于不同机器,通过TCP协议通信。

示例参见:https://blog.csdn.net/kn_2018/article/details/132710736?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-6-132710736-blog-132511452.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-6-132710736-blog-132511452.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=8https://blog.csdn.net/kn_2018/article/details/132710736?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~Ctr-6-132710736-blog-132511452.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~Ctr-6-132710736-blog-132511452.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=8

查看X server的显示号

         1、查看环境变量

                      echo $DISPLAY

         2、查询X server的进程信息

                     ps aux | grep -e 'X ' -e 'Xorg'

9227355b938b44f784c41e015ae4f579.png

 

Window Manager(窗口管理器)

窗口管理器(WM)是一种系统软件,它在图形用户界面(GUI)的窗口系统中控制窗口的位置和外观。它可以是桌面环境(DE)的一部分,也可以单独使用。

实现一个屏幕上显示多个X程序,实现调整程序大小,标题栏,最大化,最小化,关闭按钮,虚拟桌面这些功能。

常见的窗口管理器:

DWM

Metacity

Enlightement DR16

Compiz

Gnome Shell

AWESOME

i3、Openbox、Fluxbox、Mutter等

Display Manager(显示管理器)

显示管理器,或登录管理器,通常是一个图形用户界面,在启动过程结束时显示,以代替默认的shell。有各种显示管理器的实现,就像有各种类型的窗口管理器和桌面环境一样。

启动系统的时候登录的界面即是显示管理器。注意: 如果使用 桌面环境,应该尽量使用对应的显示管理器。

常见的显示管理器:

GDM             --- Gnome 显示管理器 (gdm)
LightDM
LXDM
SSDM
XDM            --- X 显示管理器 (xorg-xdm)
KDM            --- KDE 显示管理器 (kdebase-workspace)

Desktop Environment(桌面环境)

桌面环境将各种组件捆绑在一起,以提供常见的图形用户界面元素,如图标、工具栏、壁纸和桌面小部件。此外,大多数桌面环境都包含一组集成的应用程序和实用程序。最重要的是,桌面环境提供了它们自己的窗口管理器(桌面环境包含窗口管理器),但是通常可以用另一个兼容的窗口管理器代替(不使用桌面环境自带的窗口管理器,使用其他窗口管理器)。

桌面环境可以根据使用资源的多少分为重量级和轻量级。通常图形化界面都是比较吃资源的,内存占用率以及CPU的使用都是相对比较高的。轻量级的桌面需要较少的资源,所以可以运行在大多数的硬件上。

723a2a6e55a849deb47392889ed35a5b.png

参考:

An introduction to the Linux graphics stack › FLUSP - FLOSS at USP

Linux桌面系统x11原理简介-CSDN博客

快速理解 X server, DISPLAY 与 X11 Forwarding_xserver-CSDN博客

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保姆级教你如何在大学期间获得自己的一项个人软著(1)

注册与实名认证 1. 注册与实名认证 已注册和实名认证 or 直接使用组织账号 进行软著申请的&#xff0c;可以跳过这部分 1.1 注册 登录中国版权保护中心 中国版权登记业务平台 点击右上角的用户中心 点击立即注册 选择个人身份进行注册 返回登记页面中国版权登记业务平台…

【教程】Hexo 部署到 Github Page 后,自定义域名失效的问题

目录 前言&问题描述解决方案细节 前言&问题描述 近期给 Github Page 上托管的静态网站映射了自定义域名&#xff08;aiproducthome.top&#xff09;&#xff0c;之后发现每次更新并部署 hexo 到 Github Page &#xff08;hexo d&#xff09;后就会出现自定义域名失效的…

FDL与Kettle功能对比分析之定时任务DDL

开发者在进行数据处理任务时&#xff0c; 一旦源数据库的表结构发生变化&#xff0c;而目标数据库没有及时进行同步&#xff0c;就会导致任务执行失败。DDL同步就是用来解决这一问题&#xff0c;它会自动识别源表结构变化&#xff0c;并及时更新到目标数据库中&#xff0c;保障…

使用 Python OpenCV 创建图像到卡通转换器

https://pyseek.com/2022/07/image-to-cartoon-converter-in-python/ 一、说明 你有没有试过把自己的照片转换成卡通画&#xff1f;顺便说一句&#xff0c;这不是开玩笑。很多人喜欢把他们的照片变成卡通画并在社交媒体上分享。就连我自己也多次尝试过这种技术。有很多在线工具…

全局代理的判断维度与实用分析

在这个数字化时代&#xff0c;全局代理成为了许多用户保护隐私、加速访问的必备工具。然而&#xff0c;面对市场上琳琅满目的代理服务&#xff0c;如何做出明智的选择&#xff1f;作为您的专业测评团队&#xff0c;我们深入探索了全局代理的多个判断维度&#xff0c;并精选了极…

隔离驱动-视频课笔记

目录 1、需要隔离的原因 1.2、四种常用的隔离方案 2、脉冲变压器隔离 2.1、脉冲变压器的工作原理 2.2、泄放电阻对开关电路的影响 2.3、本课小结 3、光耦隔离驱动 3.1、光耦隔离驱动原理 3.2、光耦隔离驱动的电源进行分析 3.3、本课小结 4、自举升压驱动 4.1…

CANoe:为什么两个VLAN接口不能设置同一个网络的IP地址呢?

经常玩CANoe的人应该配置过TCP/IP Stack中网络节点的网卡信息&#xff0c;基本的信息包含&#xff1a;MAC地址、IP地址、子网掩码、默认网关、MTU值、IPv6地址。 如果你想让发送出去的报文携带VLAN tag&#xff0c;可以在网卡上添加VLAN tag信息。 此时你就能得到两个新的网卡V…

MongoDB教程(一):Linux系统安装mongoDB详细教程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、Ubuntu…

卷积神经网络——LeNet——FashionMNIST

目录 一、文件结构二、model.py三、model_train.py四、model_test.py 一、文件结构 二、model.py import torch from torch import nn from torchsummary import summaryclass LeNet(nn.Module):def __init__(self):super(LeNet,self).__init__()self.c1 nn.Conv2d(in_channe…

一文了解MySQL的表级锁

文章目录 ☃️概述☃️表级锁❄️❄️介绍❄️❄️表锁❄️❄️元数据锁❄️❄️意向锁⛷️⛷️⛷️ 介绍 ☃️概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0…

【深度学习基础】MacOS PyCharm连接远程服务器

目录 一、需求描述二、建立与服务器的远程连接1. 新版Pycharm的界面有什么不同&#xff1f;2. 创建远程连接3. 建立本地项目与远程服务器项目之间的路径映射4.设置保存自动上传文件 三、设置解释器总结 写在前面&#xff0c;本人用的是Macbook Pro&#xff0c; M3 MAX处理器&am…

开发个人Ollama-Chat--6 OpenUI

开发个人Ollama-Chat–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线运行。它支持各种 LLM 运行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由&#xff0c;OpenAI 的接口需要密钥才…

创建地形——笔记

1、创建地面 (1) 3D Object-Terrain (2) 导入资源 (3) 选中Terrain&#xff0c;绘制贴图 (4) 新建一个沙土层 (5) 编辑沙土层——选中Inspector中的新建沙土层&#xff0c;出现编辑面板 依次点击Nomal Map和Mask Map右侧的Slect&#xff0c;增加法线贴图&#xff08;紫&…

Run LoongArch64 Alpine VM on x86_64

一、Build from source(build on x86_64) Obtain the latest libvirt, virt-manager, and qemu source code, compile and install them. 1.1 Build libvirt from source sudo apt-get update sudo apt-get install augeas-tools bash-completion debhelper-compat dh-apparm…

深入理解FFmpeg--libavformat接口使用(一)

libavformat&#xff08;lavf&#xff09;是一个用于处理各种媒体容器格式的库。它的主要两个目的是去复用&#xff08;即将媒体文件拆分为组件流&#xff09;和复用的反向过程&#xff08;以指定的容器格式写入提供的数据&#xff09;。它还有一个I/O模块&#xff0c;支持多种…

加密与安全_密钥体系的三个核心目标之完整性解决方案

文章目录 Pre机密性完整性1. 哈希函数&#xff08;Hash Function&#xff09;定义特征常见算法应用散列函数常用场景散列函数无法解决的问题 2. 消息认证码&#xff08;MAC&#xff09;概述定义常见算法工作原理如何使用 MACMAC 的问题 不可否认性数字签名&#xff08;Digital …

Objective-C 自定义渐变色Slider

文章目录 一、前情概要二、具体实现 一、前情概要 系统提供UISlider&#xff0c;但在开发过程中经常需要自定义&#xff0c;本次需求内容是实现一个拥有渐变色的滑动条&#xff0c;且渐变色随着手指touch的位置不同改变区域&#xff0c;类似如下 可以使用CAGradientLayer实现渐…

SpringBoot相关

SpringBoot 1. what springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 spring项目搭建的缺点&#xff1a; 配置麻烦依赖繁多tomcat启动慢 2 .springboot的特点(why) 自动配置 springboot的自动配置是一个运行时(更准确地说&#xff0c;是应用程…

基于JAVA+SpringBoot+Vue+uniApp小程序的心理健康测试平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 该系统由三个核心角色…

数据库MySQL下载安装

MySQL下载安装地址如下&#xff1a; MySQL :: Download MySQL Community Server 1、下载界面 2、点击下载 3、解压记住目录 4、配置my.ini文件 未完..