目录
在 Debian 系统上,有几个功能全面的 GUI 桌面环境选择。
表 7.1. 桌面环境列表
任务软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
task-gnome-desktop
|
I:198 | 9 | GNOME 桌面环境 |
task-xfce-desktop
|
I:96 | 9 | Xfce 桌面环境 |
task-kde-desktop
|
I:81 | 6 | KDE Plasma 桌面环境 |
task-mate-desktop
|
I:43 | 9 | MATE 桌面环境 |
task-cinnamon-desktop
|
I:41 | 9 | Cinnamon 桌面环境 |
task-lxde-desktop
|
I:29 | 9 | LXDE 桌面环境 |
task-lxqt-desktop
|
I:18 | 9 | LXQt 桌面环境 |
task-gnome-flashback-desktop
|
I:13 | 6 | GNOME Flashback 桌面环境 |
提示 | |
---|---|
选择的任务元软件包的依赖软件包,在 Debian
|
本章将大部分关注 Debian 默认的桌面环境: task-gnome-desktop
,在 wayland 上提供 GNOME。
在 GNOME 桌面使用的 GUI 通信协议可以为:
Wayland (服务端显示协议) (原生)
X 窗口系统核心协议 (通过
xwayland
)
请查看 freedesktop.org 站点来了解 Wayland 架构和 X 窗口架构是如何不同。
从用户的观点,不同能够被通俗的概况为:
Wayland 是在同一个主机上的 GUI 通信协议:新、简单、快速,不需要 setuid root 二进制
X Window 是一个具备网络功能的 GUI 通信协议:传统、复杂、慢,需要 setuid root 二进制
对于使用 Wayland 协议的应用,由 VNC 或 RDP 来支持从一个远程主机上访问它们显示的内容。参见 第 7.8 节 “远程桌面”
现代 X 服务器具有 MIT 共享内存扩展 ,他们和本地 X 客户端通过本地共享内存进行通讯. 这就绕过了网络透明的 Xlib 进程间通讯通道,获得了性能。这个情况,也是创建 Wayland 作为本地 GUI 通信协议的背景。
使用从 GNOME 终端启动的 xeyes
程序,你能够检查每个 GUI(图形用户界面)应用程序使用的 GUI
通信协议。
$ xeyes
如果鼠标是在使用 Wayland 服务端显示协议的应用程序上,比如“GNOME 终端”,眼睛不会跟随鼠标移动。
如果鼠标是在使用 X 窗口系统核心协议的应用程序上,比如“xterm”,眼睛会跟随鼠标移动,暴露出不是那么孤立的 X 窗口架构的特性。
到 2021 年 4 月,许多流行的 GUI 应用程序,比如 GNOME 和 LibreOffice (LO) 已经被移植到了 Wayland 服务端显示协议。我发现
xterm
, gitk
,
chromium
, firefox
,
gimp
, dia
和 KDE 应用程序任然使用 X 窗口系统核心协议。
注意 | |
---|---|
对于 Wayland 之上的 xwayland 或 原生的 X 窗口系统,这两个上面的旧的 X 服务端配置文件
" |
这里是 Wayland 环境上用于 GNOME 的著名的 GUI 架构软件包。
表 7.2. 著名的 GUI 架构软件包列表
软件包 | 流行度 | 软件包大小 | 说明 |
---|---|---|---|
mutter
|
V:1, I:60 | 187 | GNOME 的 mutter 窗口管理器 [auto] |
xwayland
|
V:240, I:319 | 2388 | 运行在 wayland 之上的一个 X 服务端 [auto] |
gnome-remote-desktop
|
V:35, I:221 | 1068 | 使用 PipeWire 的 GNOME 远程桌面后台守护进程(daemon) [auto] |
gnome-tweaks
|
V:21, I:229 | 1170 | GNOME 的高级配置设置 |
gnome-shell-extension-prefs
|
V:13, I:213 | 60 | 启用/禁用 GNOME 外壳扩展的工具 |
这里,"[auto]" 表示这些软件包在
task-gnome-desktop
安装时会自动安装。
提示 | |
---|---|
|
提示 | |
---|---|
GNOME 桌面环境的详细特征能够使用工具来配置,在按下 |
现在在 Debian 上,有许多有用的 GUI 应用存在。如果在 GNOME 桌面环境中没有相应功能的软件,那么安装例如
scribus
(KDE)这样的软件包是完全可以接受的。但安装过多功能重复的软件包,会使你的系统凌乱。
这里是一份捕获我眼球的 GUI(图形用户界面)程序列表。
表 7.3. 著名的的 GUI(图形用户界面)应用列表
用户目录,比如"~/Desktop
"、"~/Documents
"……,其默认的名字,使用系统安装时桌面环境的语言。你能够把它们重置为英语:
$ LANGUAGE=C xdg-user-dirs-update --force
然后你手工移到所有数据到新的目录。参加 xdg-user-dirs-update
(1)。
通过编辑 "~/.config/user-dirs.dirs
",你也能够把它们设置为任何名字。参见
user-dirs.dirs
(5)。
对于 Debian 的用户,有许多有用的矢量字体存在。用户关注是怎样避免冗余,怎样配置禁用部分已经安装的字体。此外,无用的字体选择可以搞乱你的 GUI(图形用户界面)应用程序菜单。
Debian 系统使用 FreeType 2.0 库来栅格化许多矢量字体格式,用于屏幕和打印:
Type 1 (PostScript) 字体 使用三次 贝塞尔曲线 (差不多废弃的格式)
TrueType 字体 使用二次 贝塞尔曲线 (好的选择格式)
OpenType 字体 使用三次 贝塞尔曲线 (最佳选择格式)
下面的编撰的表格希望帮助用户选择适当的矢量字体,并清楚的理解 排版指标兼容(metric compatibility) 和 字形覆盖。大部分字体覆盖了所有拉丁、希腊和 Cyril 字符。最终选择的激活字体也受你的审美观影响。这些字体能够被用于屏幕显示和纸张打印。
表 7.4. 著名的 TrueType 和 OpenType 字体列表
这里:
"MCM"表示"与微软提供的字体是排版指标兼容的"
"MCMATC"表示和"微软提供的字体: Arial, Times New Roman, Courier New 排版指标兼容"
"MCAHTC" 表示 "和 Adobe 提供的字体: Helvetica, Times, Courier 排版指标兼容"
在字体类型列的数字表示对相同磅数的字体与 M 字重的相对粗细程度(译注:M 表示 Medium 适中,字体粗细程度的适中值)。
在 mono 字体类型列中的"P" 表示用于编程中,能够清晰的区分 "0"/"O" 和 "1"/"I"/"l"。
ttf-mscorefonts-installer
软件包下载微软的 "Core fonts for the Web" 并安装 Arial, Times New
Roman, Courier New, Verdana, ... 。这些安装的字体数据,是非开源的数据。
许多开源的拉丁字体,有 URW Nimbus 家族或 Bitstream Vera 的血统痕迹。
提示 | |
---|---|
如果你的语言环境所需要的字体没有在上面的字体中涵盖,请使用 aptitude 在 "Tasks" -> "Localization" 下面检查任务软件包列表。字体软件包作为 "Depends:" 或 "Recommends:" 列出,在本地化任务软件包里面是首要候选软件包。 |
Debian 使用 FreeType 来栅格化字体。它的字体选择架构由 Fontconfig 字体配置库提供。
表 7.5. 著名的字体环境和相关软件包列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
libfreetype6
|
V:560, I:997 | 938 | FreeType 字体栅格化库 |
libfontconfig1
|
V:554, I:849 | 587 | Fontconfig 字体配置库 |
fontconfig
|
V:437, I:721 | 680 | fc-* : Fontconfig 命令行命令 |
font-manager
|
V:2, I:8 | 1022 | Font 管理器: Fontconfig GUI(图形用户界面)命令 |
nautilus-font-manager
|
V:0, I:0 | 37 | Font 管理器 的 Nautilus 扩展 |
提示 | |
---|---|
一些字体软件包,比如说
|
你也可以从命令行列出字体配置状态。
使用 “fc-match(1)
” 查看 fontconfig 的默认字体
使用 “fc-list(1)
” 查看所有可用的 fontconfig 字体
你能够从文本编辑器配置字体配置状态,但这是琐碎的。参见 fonts.conf
(5)。
Linux 上大部分 GUI(图形用户界面)应用在非 Debian 的源上,是以二进制格式存在。
警告 | |
---|---|
从这些站点来的二进制软件包,有可能包括私有的非开源软件。 |
对使用 Debian 的自由软件的狂热爱好者,这些二进制格式的分发,有一些存在的理由。因为这能够得到一个干净的库集合,由 Debian 提供的库和由每个应用程序相应的上游开发者使用的库,独立开来。
运行外部二进制的固有风险,能够使用 沙盒环境 减少,它有现代 Linux 安全特性的手段。(参见 第 4.7.5 节 “Linux 安全特性”)。
xdg-desktop-portal
软件包为通用的桌面特性提供一个标准的 API。参见 xdg-desktop-portal (flatpak) 和
xdg-desktop-portal (snap) 。
表 7.6. 著名的沙盒环境和相关软件包列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
flatpak
|
V:65, I:70 | 7499 | Flatpak 桌面应用程序配置框架 |
gnome-software-plugin-flatpak
|
V:20, I:29 | 254 | GNOME 软件 管理器的 Flatpak 支持 |
snapd
|
V:67, I:70 | 60022 | 启用 snap 软件包的后台守护进程(daemon)和工具 |
gnome-software-plugin-snap
|
V:1, I:2 | 121 | GNOME 软件 管理器的 Snap 支持 |
xdg-desktop-portal
|
V:303, I:394 | 1936 | Flatpak 和 Snap 的桌面集成门户 |
xdg-desktop-portal-gtk
|
V:274, I:392 | 715 | gtk (GNOME) 的 xdg-desktop-portal 后端 |
xdg-desktop-portal-kde
|
V:53, I:72 | 1438 | Qt (KDE) 的 xdg-desktop-portal 后端 |
xdg-desktop-portal-wlr
|
V:0, I:4 | 135 | wlroots (Wayland) 的 xdg-desktop-portal 后端 |
firejail
|
V:1, I:4 | 1771 | 和 AppImage 一起使用的 SUID 安全沙盒程序 firejail |
这个沙盒环境技术和在智能手机操作系统上的应用程序非常相像,这里的应用程序也是在资源访问受到控制下执行的。
一些大的 GUI(图形用户界面)应用程序,比如说 Debian 上的网页浏览器,也在内部使用了沙盒环境技术,这样让它们安全性更好。
表 7.7. 著名的远程访问服务端列表
访问在远程主机上使用 Wayland 协议的桌面和应用,由远程主机上的 GNOME 远程桌面 软件提供,通过 VNC 或 RDP 到本地客户端。
访问所有 QEMU 虚拟机桌面的能力是由 SPICE (the Simple Protocol for Independent Computing Environments) 协议提供。
软件包 | 流行度 | 大小 | 协议 | 说明 |
---|---|---|---|---|
gnome-remote-desktop
|
V:35, I:221 | 1068 | RDP | GNOME 远程桌面 服务端 |
xrdp
|
V:22, I:24 | 3202 | RDP | xrdp, 远程桌面协议 (RDP) 服务器 |
x11vnc
|
V:6, I:23 | 2107 | RFB (VNC) | x11vnc, 远程帧缓存协议 (VNC) 服务器 |
tigervnc-standalone-server
|
V:4, I:15 | 2768 | RFB (VNC) | TigerVNC, 远程帧缓存协议 (VNC) 服务器 |
gnome-connections
|
V:0, I:1 | 1356 | RDP, RFB (VNC) | GNOME 远程桌面客户端 |
vinagre
|
V:2, I:68 | 4249 | RDP, RFB (VNC), SPICE, SSH | Vinagre: GNOME 远程桌面客户端 |
remmina
|
V:15, I:72 | 953 | RDP, RFB (VNC), SPICE, SSH, ... | Remmina: GTK 远程桌面客户端 |
krdc
|
V:1, I:17 | 3873 | RDP, RFB (VNC) | KRDC: KDE 远程桌面客户端 |
guacd
|
V:0, I:0 | 83 | RDP, RFB (VNC), SSH / HTML5 | Apache Guacamole: 无客户端的远程桌面网关 (HTML5) |
virt-viewer
|
V:5, I:52 | 1284 | RFB (VNC), SPICE | 虚拟机管理器 下的客户机操作系统的 GUI 显示客户端 |
有几种方法从远程主机上的应用连接到 X 服务端(包括本地主机的 xwayland
)。
表 7.8. 连接到 X 服务端的方式
软件包 | 流行度 | 大小 | 命令 | 说明 |
---|---|---|---|---|
openssh-server
|
V:730, I:814 | 1804 | sshd 使用选项 X11-forwarding |
SSH 服务端(安全) |
openssh-client
|
V:866, I:996 | 4959 | ssh -X |
SSH 客户端(安全) |
xauth
|
V:165, I:961 | 81 | xauth |
X 授权文件工具 |
x11-xserver-utils
|
V:302, I:528 | 568 | xhost |
X 服务端访问控制 |
使用 X 核心协议的本地应用,能够通过本地 UNIX 域名套接字进行本地连接,来访问本地的 X 服务端。这可以通过拥有 access cookie 的授权文件来授权。
授权文件的位置通过"$XAUTHORITY
"环境变量确定,X
显示通过"$DISPLAY
" 环境变量确定。由于这些环境变量通常会被自动设置,不需要另行指定。 例如,下面的
"gitk
"。
username $ gitk
注意 | |
---|---|
对于 |
使用 X 核心协议的远程应用访问本地的 X 服务器显示,由 X11 转发特性支持。
在本地主机中打开一个 gnome 终端
。
通过下列命令,运行带 -X
选项的 ssh
(1),建立与远程站点的连接。
localname @ localhost $ ssh -q -X [email protected] Password:
通过下列命令,在远程站点运行一个 X 应用程序,例如 “gitk
”。
loginname @ remotehost $ gitk
这个方法可以显示来自远程 X 客户端的输出,相当于它是通过一个本地 UNIX 域名套接字进行本地的连接。
参见介绍 SSH/SSHD 的 第 6.3 节 “服务器远程访问和工具 (SSH)” 。
在同一个环境下(比如 chroot),使用 X 核心协议的应用访问同一主机的 X 服务端,授权文件无法访问,能够使用
xhost
进行安全的授权,通过使用 User-based access ,例如下面的
"gitk
"。
username $ xhost + si:localuser:root ; sudo chroot /path/to # cd /src # gitk # exit username $ xhost -
剪贴文本到剪贴板,参见 第 1.4.4 节 “鼠标操作”。
剪贴图像到剪贴板,参见 第 11.6 节 “图形数据工具”。
一些命令行的命令也能操作字符剪贴板(主要键和剪贴板)。
表 7.9. 操作字符剪贴板相关程序列表
软件包 | 流行度 | 软件包大小 | 当前目标 | 说明 |
---|---|---|---|---|
xsel
|
V:9, I:42 | 55 | X | X 选择的命令行接口(剪贴板) |
xclip
|
V:12, I:63 | 62 | X | X 选择的命令行接口(剪贴板) |
wl-clipboard
|
V:3, I:14 | 162 | Wayland | wl-copy wl-paste : Wayland 剪贴板 的命令行接口 |
gpm
|
V:10, I:12 | 521 | Linux 控制台 | 在 Linux 控制台上捕获鼠标事件的后台守护进程(daemon) |