闲鱼技术01 发表于 2023-2-2 11:55

[转]X 系统的构成

X窗口系统:X Window System.这是MIT 1984年提出的以位图图像显示图形化界面的一套软件规范及协议.

X Window System使用最广的软件实现是Xorg.

X Window System使用C/S架构,服务端和客户端可以基于网络通信

客户端(也就是各种软件)将绘图请求发给服务端,服务端操纵显卡或视频终端把位图图像绘制出来,并处理键盘鼠标的事件,发送给客户端.注意,和人交互的是服务端.

image

而为了方便编写GUI程序,程序员开发出GTK,QT这种图形库,这些图形库作为X window的客户端工作.

WSL是Windows的一个子系统,科学的(非官方)名称为GNU/NT:lxcore.微软没有从Linux抄一行代码,实现了Linux大部分二进制接口,但是目前没有实现Linux的显卡驱动功能,因此即使WSL中安装了Xorg,也会不能启动.

要想使用WSL显示GUI,必须要利用X window可以使用网络远程显示的特性,在Windows可以使用GUI的子系统win32中安装X server.

那么Xfce是干什么的呢?

为了管理众多的窗口怎么在屏幕上显示,需要窗口管理器(Window manager).窗口管理器可以实现一个屏幕上显示多个X程序,实现调整程序大小,标题栏,最大化,最小化,关闭按钮,虚拟桌面这些功能.

没有WM,一次只能运行一个GUI程序,而且分辨率锁死,显然很不符合使用习惯.

为了实现窗口之间的特效,还需要窗口合成器.窗口合成器可以制造半透明之类的特效.

Xfce使用的窗口管理器为Xfwm,此外还有Gnome的mutter,KDE的Kwin等

image

<figcaption>xfwm设置与帮助信息</figcaption>

Windows也有类似的概念,其窗口管理器为Desktop Window Manager(DWM.exe),win7酷炫的Aero就算dwm实现的,win8之后虽然砍掉了毛玻璃,但是dwm成为关键进程,不能像win7一样关掉.

为了使用方便,一般还需要Windows里任务栏,开始按钮,通知区域这种功能,Linux里一般称之为面板.

xfce的面板

Linux还有一个组件叫显示管理器(display manager),用于开机后显示登陆界面,并启动窗口管理器等X组件.没有显示管理器,Linux开机会显示命令行登陆界面,需要使用命令行登陆后手动启动Xserver和窗口管理器才能显示GUI,显示管理器自动的完成这些工作.常见的有GDM,KDM,LightDM,LXDM

此外为了显示桌面图标,还需要一个文件管理器.

把窗口管理器,显示管理器,合成器,文件管理器及其他应用,主题,GTK+/QT等图形库,连同通用的组件,比如Xorg,进程间通信用的Dbus等等库或程序,打包起来,就形成当今Linux下的桌面环境(Desktop environment),Gnome,KDE,Xfce,Ubuntu放弃的Unity,国产Deepin的DDE,都是桌面环境.也可以使用各种组件拼接出自己的桌面环境.

作者:韩朴宇
链接:https://www.zhihu.com/question/321725817/answer/669568568
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
页: [1]
查看完整版本: [转]X 系统的构成