X-windows系统

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

  图形界面一直是Linux用户头疼的问题,出了问题往往一片茫然,大多重装了事。本文试图从宏观的角度剖析一下X系统的简要原理,只有理解了原理才能在解决问题时有的放矢。好,废话少说,现在就开始。
    首先,我们要搞清楚X系统的构成。我们平时称呼的X图形界面,实际上是由几个重要部分构成的。它们分别是:
    X Server (Xorg)
    Display Manager (gdm, kdm, xdm)
    Window Manager (metacity, fluxbox, E17, fvwm etc.)
    X Client (其他各种图形应用程序,如natulis文件管理器)
以及几个重要概念:
    X session:    X server启动到X server关闭之间的时间段
    X库:    GUI程序使用的库函数,如GTK+和QT
下面我们就这几个重要构成的作用、相互关系进行展开,向你展示X的运行原理。

1,X Server
    X Server,译作X服务器,是X的核心。X Server是用来驱动硬件,提供基本的图形显示能力的。合理但并不十分科学地,你可以把它看作视频卡的驱动程序。只有运行了X Server的Linux系统,X Client才能利用X Server绘出相应的图像。
    X Server早期使用的是XFree86,自4.4版本后,XFree86改用GPL发布,此后开始称为Xorg。X Server部分,主要关注两点。
(1)    xorg.conf
    xorg.conf是X Server的主要配置文件,它包含一个当前系统的硬件资源列表。X Server就是根据这些硬件资源“组织”出基本的图形能力。xorg.conf文件在/etc/X11/xorg.conf,主要包含几个字段:
    Files:            X系统使用的字体存放目录(字体的具体使用由FontConfig工具主持)
    InputDevice:    输入设备,如键盘鼠标的信息
    Monitor:        显示器的设置,如分辨率,刷新率等
    Device:            显示卡信息
    Screen:            由Monitor和Device组装成一个Screen,表示由它们向这个Screen提供输出能力
    ServerLayout:    将一个Screen和InputDevice组装成一个ServerLayout
在具有多个显示设备的系统中,可能有多个Screen和多个ServerLayout,用以实现不同的硬件搭配。
    在最近的xorg版本中,X Server已经开始自动侦测硬件,现在的xorg.conf已经都成了默认名称。具体细节还待查,但基本原理还是不变的。
(2) X session(X会话)
    前面已经说过,X session是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于X session的内容。管理X session的程序称为Display Manager,常听说的gdm或kdm就是gnome/kde所分别对应的Display Manager。
    开启一个X session,也就是开始了图形界面的使用。在开启的过程中,Display Manager会对用户进行认证(也就是用户名密码的输入),运行事先设置好的程序(比如scim输入法就是这个时候启动的)等等。
    这个开启过程要执行的一系列操作都可以在/etc/X11/Xseesion以及/etc/X11/Xsession.d/目录下看到,其他还有一些配置文件如Xsession.options, Xresource等,都是执行的X session的初始化过程。仔细阅读这些脚本或配置文件,可以帮助你更好地理解X。

2, Display Manager
    上面说过,Display Manager(后简称DM)是管理X session的程序,常见的有gdm, kdm, xdm等。对于默认进入X界面的Linux系统,必须将DM程序在开机时执行,即:/etc/rc2.d/S13gdm。下面我们从手工启动X的过程,看一下DM为我们做了哪些工作。
    如果没有设置DM在开机时运行的话,手动启动X使用startx命令。
    man startx
可以知道,startx的作用可以看作是Display Manager的一种隐性实现。它使用xinit命令,分别根据/etc/X11/xinit/xinitrc和/etc/X11/xinit/xserverrc中所指定的设置唤起X。
    其中,xserverrc执行X server的运行任务;xinitrc则运行Xsession命令。从/etc/X11/Xsession脚本的内容可以看出,它也就是进入/etc/X11/Xsession.d/目录轮询地执行所有脚本。很明显,这些也就是前面所说的Xsession初始化工作。
    综合起来说,Display Manager完成三个任务:1, X Server的启动; 2, X session的初始化; 3, X session的管理。

3, Window Manager
    X Server提供了基本的图形显示能力。然而具体怎么绘制应用程序的界面,却是要有应用程序自己解决的。而Window Manager(桌面管理器,后简称WM)就是用来提供统一的GUI组件的(窗口、外框、菜单、按钮等)。否则,应用程序们各自为政,既增加了程序开发的负担,不统一的桌面风格对视觉也是不小的挑战。
    WM的启动由DM控制,在gdm的登录窗口,我们可以进行选择。常见的WM有:Metacity(Gnome默认的WM), fluxbox, fvwm, E17等。

4, X Clients
    最后,就是X Client了。X客户端程序,顾名思义,就是使用X服务的程序。firefox,gedit等等都属于X Client程序。X Client部分值得考虑一下的就是DISPLAY环境变量。它主要用于远程X Client的使用。该变量表示输出目的地的位置,由三个要素组成:
    [host]:display[.screen]
    host指网络上远程主机的名称,可以是主机名、IP地址等。默认的host是本地系统,你可以在自己系统上echo $DISPLAY看一下。
    display和screen分别代表输出画面的编号和屏幕的编号。具体细节由于硬件的缺乏,还有待进一步研究。

5, GNOME与KDE
    光讲X却不提GNOME和KDE,对一些新手来说可能会更糊涂。所以简单解释一下,GNOME/KDE都是集成的工作环境,是完整X系统的一个组成部分。换句话说,它们提供的是一整套从DM到WM到一揽子X Client的程序集合。以GNOME为例:DM是gdm,WM是metacity,X Client有gnome-terminal, gedit, rhythmbox等等。
    不过要注意到,即使没有这些组件,我们像前辈们一样用startx登录X,用fvwm做窗口管理器,用那些最最原始的应用程序,仍然可以实现一个高效的X工作环境。GNOME/KDE的出现只是让这一切变得整合性更好而已。

 

[转自]http://hi.baidu.com/wienerlee/blog/item/f49f570208d2e80a4bfb5196.html

进程树pstree介绍 gnome-session-b进程会启动gnome-shell进程,它是GNOME桌面环境的窗口管理器,负责管理所有的窗口和工作区。同时,还有一些其他的进程,如ibus-daemon(输入法管理器)、gsd-a11y-settings(辅助功能设置)、gsd-color(颜色管理器)等等,它们都是GNOME桌面环境中的服务进程,负责提供一些特定的功能和服务。它可以将进程展示为树形结构,其中每个进程都是一个节点,而每个节点下面的子节点是该进程的子进程。 阅读详情

相关推荐

新手进行Cygwin/X(Windows)系统下安装使用NCL

一开始看不懂书上的介绍,自己乱来去官网看英文教程,还出了很多错误,因为入门者下载Cygwin及正确解压NCL会遇到很多问题,稍有不慎则需重新安装,而且英文教程虽说能看懂大概,但是由于本身对款模拟器完全没有基础而不能完全理解内容,因此折腾了N次最后没有办法还是尝试着安装书本步骤走,由于逛论坛看了很多关于处理问题的帖子,也学了一些Linux的编程语言,便能看懂了书上的内容,才发现老师是大神啊,已经帮我

Vicky510475733的博客 2万+

Linux的XServer

linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的: 图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统linux和Xfree的关系就相当于当年的DOS和WINDOWS 3.0 一样, windows 3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是 linux下的一个应用程序而已。 不是系统的一部分,但是X的存在可以方便用户使用电脑。WINDOWS 95.....

啊渊的专栏 7550

解析被微软放弃的Windows 10X系统

Windows操作系统作为全球使用最广泛的PC平台,其架构演进一直备受关注。Windows 10X作为微软在2019年推出的创新版本,采用了革命性的状态分离安全架构和容器化应用模型,大幅提升了系统安全性。这种设计通过只读系统分区和用户数据隔离,有效防止了恶意软件的持久性破坏。在用户界面方面,10X引入了居中的任务栏和圆角窗口等现代化设计元素,这些后来都被Windows 11继承。虽然由于兼容性问题和市场需求变化导致项目终止,但10X的技术理念仍值得开发者研究,特别是其对未来操作系统安全模型的探索。

weixin_33507732的博客 344

当前用户家目录下.xsession-error和.xsession-error.old文件无限增大】问题解决方法

Linux 系统中,当前用户家目录下的和文件通常与 X 会话(图形界面会话)相关,下面为你详细介绍它们的作用、可能出现问题的原因以及相应的解决办法。

太极淘的博客 1173

操作系统:实验二 进程控制

实验二 进程控制 16281002 杜永坤 计科1601 实验题目:根据课堂所学内容和基础知识介绍,完成实验题目。 1、打开一个vi进程。通过ps命令以及选择合适的参数,只显示名字为vi的进程。寻找vi进程的父进程,直到init进程为止。记录过程中所有进程的ID和父进程ID。将得到的进程树和由pstree命令的得到的进程树进行比较。 实验过程: 先打开一个终端 输入vi 回车 进入到如下界面: ...

weixin_41705703的博客 3041

Xsession :warning:unable to write to /tmp; X session may exit with an error问题解决

1.问题描述 今天使用PX2进行测试的时候,发现系统启动后在登录页面输入密码后竟然登录不了系统。并且多次操作还会出现下面页面的提示。 于是网上搜索弹框中的内容:Xsession :warning:unable to write to /tmp; X session may exit with an error 根据网上这个链接 https://www.experts...

8888

X-Windows系统

xlsfonts用于显示X服务器上可使用的字体.可使用匹配模式显示符合条件的字体信息-1 使用长格式显示字体信息-display 在指定的显示器上显示输出信息-l|| 此参数的效果和指定"||"参数类似,但显示的更详细-m 此选项配合"-l"使用,可以显示出字体大小的上下限-n 指定列数显示输出信息-u 对输出的字体信息不进行排序-w 多列显示时指定每列最多显示的字符数

终极神的专栏 793

记录一下我在Windows系统下复现SMPLify-X的过程

这几天在Windows系统上复现SMPLify-X,在网上疯狂找资料,终于复现成功了,但是一些问题的出现都忘记截图了,之后要是又出现再更新一下吧,暂时记录大致跑出来的过程,以及我遇到问题时找到的一些解决方法的链接。

weixin_47046422的博客 2272

在Dockur/Windows项目中集成Windows X Lite系统的技术解析

Windows X Lite是一个经过精简优化的Windows系统版本,其显著特点是体积小巧,安装后仅占用1-3GB磁盘空间,ISO镜像文件大小也控制在1.2-3GB范围内。这种轻量级特性使其成为资源受限环境或追求快速部署场景的理想选择。 ## Windows X Lite的技术特点 该系统基于Windows核心组件进行深度定制,移除了大量非必要组件和服务: - 精简了系统预装应用 - 优化了...

gitblog_01111的博客 526

42、Windows 9x 与 Windows 2000 操作系统深度解析

本文深入解析了Windows 9x与Windows 2000操作系统的版本识别、系统架构、虚拟内存管理机制及安全性差异。详细介绍了两种系统在启动模式、内存管理、文件系统支持(FAT16/FAT32/NTFS)以及安全功能(如NTFS权限、注册表安全和用户权利)方面的对比,突出了Windows 2000在稳定性与安全性上的显著优势,适用于对系统可靠性要求较高的环境。

x1y2z的博客 80

旧电脑重生秘籍:Windows 11 X Lite轻量级系统安装全攻略

面对老旧电脑运行缓慢、广告弹窗频繁、系统升级崩溃等痛点,你是否也曾考虑过花费重金更换新设备?然而,一位程序员父亲用亲身经历告诉我们,通过安装轻量级系统,旧电脑也能焕发新生。

Start_mswin的博客 4889

dotnet9x异常处理:Windows 9x系统异常捕获与调试

Windows 9x系统上运行.NET Framework 2.0-3.5应用程序面临着独特的异常处理挑战。由于Windows 9x缺乏现代操作系统的高级异常处理机制,dotnet9x项目通过创新的包装器技术和调试基础设施来解决这些问题。 ## dotnet9x异常处理架构 ### 核心调试系统 dotnet9x实现了一个分层的调试和异常处理系统: ```c // 调试级别定义 #def...

gitblog_00084的博客 911

【技巧】Windows 10系统连接共享打印机报错0x00000709、0x0000007c、0x0000011b

Windows 10系统连接共享打印机报错0x00000709、0x0000007c、0x0000011b一、问题展示二、解决方案三、附件下载地址 一、问题展示 打印机突然出现如下问题,如何解决! 二、解决方案 1.创建一个 txt 文件,将以下内容复制到 txt 中,然后将 txt 的扩展名更改为.bat,然后双击运行(最好以管理员运行) net stop spooler timeout /t 3 /nobreak Takeown /A /F C:\Windows\System32\win32s

Riu_Peter 4578

dotnet9x灾害防治:防灾系统Windows 9x支持方案

在灾害防治领域,许多关键监测设备仍依赖Windows 9x系统运行。然而,微软官方.NET Framework 2.0-3.5从未支持该系统,导致现代化防灾软件无法部署。dotnet9x项目通过Backport技术,将.NET框架移植到Windows 9x平台,为防灾系统提供了关键支持。 [![运行截图](https://raw.gitcode.com/GitHub_Trending/do/do...

gitblog_00816的博客 672

如何替换windows mobile系统的X键

首先了解一下Windows mobile系统中右上角的系统按键,有两种,即OK键和X键,点击OK键即退出应用程序,点击X键最小化应用程序,通常我们希望程序中使用OK键来关闭应用释放内存。笔者在开发应用程序中就遇到使用MFC来开发Windows mobile单文档应用程序,系统默认生成X键,如何替换成OK键呢?Windows mobile shell API提供了这样一个函数:SHDoneBut

roy_rui的专栏 836

dotnet9x公共安全:安防系统Windows 9x适配指南

你是否仍在维护运行Windows 9x的安防系统?这些老旧设备往往因硬件限制无法升级到现代操作系统,却又承担着关键的安全防护任务。本文将详细介绍如何通过dotnet9x项目,在Windows 9x系统上部署.NET Framework 2.0-3.5,为安防应用提供稳定运行环境,同时确保系统安全性。 读完本文后,你将能够: - 理解dotnet9x项目的核心功能与适配原理 - 完成Windows...

gitblog_00652的博客 1033

【亲测免费】 重温经典:Windows 3.x原版系统镜像下载指南

重温经典:Windows 3.x原版系统镜像下载指南 【下载地址】最全面的Windows3.x原版系统镜像下载地址 本仓库提供了最全面的Windows 3.x原版系统镜像下载地址,涵盖了多个版本,包括Windows 3.0 TestDrive、Windows 3.1 current、Windows for Workgro...

gitblog_06531的博客 1193

别等了!下一代操作系统Windows 10X,彻底凉凉了

本文转载自 猿大侠 在今年年初的时候,一直有报道说: 微软即将推出的Windows 10X 操作系统作为Chrome OS的竞争对手来推广。 并且,已经在去年的12月进入RTM阶段,预估今年正式上线。 现在,已经好几个月过去了,下一代操作系统Windows 10X是不是也快要来了呢? 你是不是一样,非常的期待呢? 但是,非常不幸,Windows 10X 或许不会来了。 近日,The Verge、Windows Latest等媒体的报道: Windows 10X疑似遭遇搁置,不会在今.

m0_46163918的博客 4932

48、Windows 9x系统内存与主要系统文件解析

本文深入解析了Windows 9x系统的内存架构与核心系统文件,涵盖常规内存、扩展内存、上位内存及虚拟内存的工作原理与优化策略,并详细介绍了himem.sys和emm386.exe等内存管理文件的作用。同时,对system.ini、win.ini、regedit.exe、system.dat、user.dat等关键系统文件的功能、结构与维护进行了全面阐述,帮助用户理解系统运行机制,优化性能并避免常见故障。适合希望深入了解Windows 9x底层机制的技术爱好者与系统维护人员参考。

x1y2z的博客 49
上一篇: ubuntu启动加载
下一篇: Ubuntu内核编译
Archer789
博客等级 码龄19年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值