0 前言
Linux桌面环境琳琳琅满目,本文对其进行梳理和总结。
1 桌面环境
可进入系统设置查看所用桌面环境,也可通过“XDG_CURRENT_DESKTOP”环境变量确认所用桌面环境的类型:
Linux发行版 | XDG_CURRENT_DESKTOP | DESKTOP_SESSION | |
Ubuntu | 10.04 | 空 | gnome |
12.04 | Unity | ubuntu-2d | |
14.04 | ubuntu | ||
16.04 | |||
18.04 | ubuntu:GNOME | ||
20.04 | |||
22.04 | |||
Ubuntu MATE | 22.04 | mate | |
Kubuntu | 22.04 | KDE | |
openKylin | 0.9.5 | UKUI | |
Ubuntu Kylin | 22.04 | ||
Deepin Community | 20.8 | Deepin | |
UOS home | 22 | ||
UOS pro | 20 |
下表是各Linux桌面环境的技术栈对比情况:
桌面 | 开源 | 图形库 | 发行版 | 显示服务器(协议) | 显示管理器(登录) | 窗口管理器 | |
KDE | Y | Qt | Kubuntu | 22.04 | x11 | sddm | KWin |
MATE | ? | ? | Ubuntu MATE | 22.04 | lightdm | Metacity(Marco) | |
GNOME | Y | GTK | Ubuntu | 10.04 | gdm | ||
18.04 | gdm3 | GNOME Shell(Mutter) |
|||||
20.04 | |||||||
22.04 | wayland | ||||||
UNITY | ? | ? | 12.04 | x11 | lightdm | Metacity(Marco) | |
14.04 | Compiz | ||||||
16.04 | |||||||
LXDE | ? | ? | Lubuntu | 18.04 | Openbox | ||
XFCE | ? | ? | FreeBSD | ||||
DDE | Y | Qt | Deepin | 20.8 | x11 | lightdm | KWin |
UOS home | 22 | ||||||
UOS pro | 20 | ||||||
UKUI | openKylin | 0.9.5 | wayland | ukui-kwin | |||
UbuntuKylin | 22.04 | x11 | ukwm(源自Mutter) |
通过可总结出以下几点:
- UOS的图形技术栈和Deepin是一样的;
- UOS/UbuntuKylin的显示服务器协议依然是x11,均未升级至最新的wayland,这点不如openKylin-0.9.5和Ubuntu-22.04。
2 显示服务器
2.1 协议
可通过环境变量“XDG_SESSION_TYPE”来确认所用显示服务器协议类型:
Linux发行版 | XDG_SESSION_TYPE | 说明 | |
Ubuntu | 12.04 | 空 | |
14.04 | |||
16.04 | x11 | ||
17.10 | wayland | ||
18.04 | x11 | ||
20.04 | 默认x11,但可以安装并切换到Wayland | ||
21.04 | wayland | ||
22.04 | |||
CentOS | 7 | 空 | |
openKylin | 0.9.5 | wayland | |
Lubuntu | 18.04 | x11 | |
Kubuntu | 22.04 | ||
UbuntuKylin | 22.04 | ||
Deepin Community | 20.8 | ||
UOS home | 22 | ||
UOS pro | 20 |
可见,虽然说wayland是未来的趋势,但目前为止多数发行版用的依然是x11。
2.2 实现
开源实现主要有XFree86和X.Org,其中前者是先驱(1992年),后者由前者的4.4RC2版本衍生而来以规避许可证问题(2004年)[10],因此X.Org中存在大量XFree86源码。
3 显示管理器
“显示管理器”又称“登录管理器”),通常是一个在启动过程结束时代替默认shell显示的图形用户界面,与“窗口管理器”和“桌面环境”类似,“显示管理器”也有很多实现[4],下表是一些流行的显示管理器:[7]
GDM | GNOME显示管理器GNOME Display Manager,GNOME桌面环境的首选 |
SDDM | 简单桌面显示管理器Simple Desktop Display Manager,KDE桌面环境的首选 |
lightDM | 由Ubuntu为Unity桌面环境开发,但被广泛应用到其它桌面环境 |
各Linux发行版均可通过下面方法查看所用的显示管理:
(1)方法1:适用于X11
cat /etc/X11/default-display-manager /usr/sbin/lightdm # [5] Ubuntu 14.04 22.04 |
(2)方法2:适用于X11和Wayland
cat /etc/systemd/system/display-manager .service # [6] |
4 窗口管理器
- 标题栏:一般来说窗口管理器会对应用程序窗口加上标题栏,用以进行窗口的拖拽操作,其中还有最小化,最大化,关闭按钮,方便用户快捷的操作窗口。
- 边框:窗口管理器还会对窗口边框进行处理,设计边框颜色和阴影效果来区分激活与非激活窗口;
- 快捷键:大部分窗口管理器还提供了一些快捷键绑定,来实现窗口切换,工作区切换,显示桌面等功能;
不同发现版所用窗口管理器有所不同,可通过下面方法查看:
(1)方法1
可安装“wmctrl”工具,然后查看所用的窗口管理器:
sudo apt-get install -y wmctrl
export DISPLAY=:01 # ssh登录才需设置这个
wmctrl -m # [8]
其结果中的“Name”字段表示所用窗口管理器类型,总结如下:
Linux发行版 | Name | |
Ubuntu | 14.04 | Compiz |
20.04 | GNOME Shell | |
22.04 | ||
Ubuntu Kylin | 22.04 | Ukwm |
Ubuntu MATE | 22.04 | Metacity(Marco) |
Kubuntu | 22.04 | KWin |
Deepin | 20.8 | |
UOS home | 22 | |
UOS pro | 20 |
(2)方法2
Ubuntu12.04之前的版本均无法安装wmctrl,此时只能查看窗口管理器进程来确定所用的窗口管理器:
ps -ef | egrep -i "Metacity|Compiz"
参考资料
[1]X,X11,Xorg,XServer,XClient,Xlib
[2]Implementation needs for Android/Wayland graphics buffer sharing
[3]窗口管理器Linux用哪个,如何确定哪个窗口管理器正在运行
[8]窗口管理器Linux用哪个,如何确定哪个窗口管理器正在运行
[9]X.Org Server
[10]XFree86(百度百科)
[11]UKUI 桌面环境之窗口管理器(UbuntuKylin官网)