內容目錄
在 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 桌面環境 | 
| ![[提示]](images/tip.png)  | 提示 | 
|---|---|
| 選擇的任務元軟體包的依賴軟體包,在 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 視窗系統核心協議。
| ![[注意]](images/note.png)  | 注意 | 
|---|---|
| 對於 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 安裝時會自動安裝。
| ![[提示]](images/tip.png)  | 提示 | 
|---|---|
|   
 | 
| ![[提示]](images/tip.png)  | 提示 | 
|---|---|
|  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 的血統痕跡。
| ![[提示]](images/tip.png)  | 提示 | 
|---|---|
| 如果你的語言環境所需要的字型沒有在上面的字型中涵蓋,請使用 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 擴充套件 | 
| ![[提示]](images/tip.png)  | 提示 | 
|---|---|
|  一些字型軟體包,比如說
 | 
你也可以從命令列列出字型配置狀態。
 使用 “fc-match(1)” 檢視 fontconfig 的預設字型 
 使用 “fc-list(1)” 檢視所有可用的 fontconfig 字型 
你能夠從文字編輯器配置字型配置狀態,但這是瑣碎的。參見 fonts.conf(5)。
Linux 上大部分 GUI(圖形使用者介面)應用在非 Debian 的源上,是以二進位制格式存在。
| ![[警告]](images/warning.png)  | 警告 | 
|---|---|
| 從這些站點來的二進位制軟體包,有可能包括私有的非開源軟體。 | 
對使用 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
| ![[注意]](images/note.png)  | 注意 | 
|---|---|
| 對於  | 
使用 X 核心協議的遠端應用訪問本地的 X 伺服器顯示,由 X11 轉發特性支援。
在本地主機中開啟一個 gnome 終端。
透過下列命令,執行帶 -X 選項的 ssh(1),建立與遠端站點的連線。
localname @ localhost $ ssh -q -X [email protected] Password:
透過下列命令,在遠端站點執行一個 X 應用程式,例如 “gitk”。
loginname @ remotehost $ gitk
這個方法可以顯示來自遠端 X 客戶端的輸出,相當於它是通過一個本地 UNIX 域名 socket 進行本地的連線。
參見介紹 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-copywl-paste: Wayland 剪貼簿 的命令列介面 | 
| gpm | V:10, I:12 | 521 | Linux 控制檯 | 在 Linux 控制檯上捕獲滑鼠事件的後臺守護程序(daemon) |