章 7. GUI(圖形使用者介面)系統

內容目錄

7.1. GUI(圖形使用者介面)桌面環境
7.2. GUI(圖形使用者介面)通訊協議
7.3. GUI(圖形使用者介面)架構
7.4. GUI(圖形使用者介面)應用
7.5. 使用者目錄
7.6. 字型
7.6.1. 基礎字型
7.6.2. 字型柵格化
7.7. 沙盒
7.8. 遠端桌面
7.9. X 服務端連線
7.9.1. X 服務端本地連線
7.9.2. X 服務端遠端連線
7.9.3. X 服務端 chroot 連線
7.10. 剪貼簿

在 Debian 系統上,有幾個功能全面的 GUI 桌面環境選擇。


[提示] 提示

選擇的任務元軟體包的依賴軟體包,在 Debian 非穩定版/測試版 環境下,由於最新的軟體包變遷狀態,可能沒有及時同步。對於 task-gnome-desktop,你可以按下面的方法調整軟體包選擇:

  • sudo aptitude -u 啟動 aptitude(8)。

  • 移動游標到"Tasks"並按回車鍵。

  • 移動游標到 "End-user" 並按回車鍵。

  • 移動游標到 "GNOME" 並按回車鍵。

  • 移動游標到 task-gnome-desktop 並按回車鍵。

  • 移動游標到 "Depends" 並按 "m"(手工選擇)。

  • 移動游標到 "Recommends"並按"m" (手工選擇)。

  • 移動游標到 "task-gnome-desktop 並按"-"。(刪除)

  • 調整選擇的軟體包,並刪除造成軟體包衝突的問題軟體包。

  • 按"g" 來開始安裝。

本章將大部分關注 Debian 預設的桌面環境: task-gnome-desktop,在 wayland 上提供 GNOME

在 GNOME 桌面使用的 GUI 通訊協議可以為:

請檢視 freedesktop.org 站點來了解 Wayland 架構和 X 視窗架構是如何不同

從使用者的觀點,不同能夠被通俗的概況為:

  • Wayland 是在同一個主機上的 GUI 通訊協議:新、簡單、快速,不需要 setuid root 二進位制

  • X Window 是一個具備網路功能的 GUI 通訊協議:傳統、複雜、慢,需要 setuid root 二進位制

對於使用 Wayland 協議的應用,由 VNCRDP 來支援從一個遠端主機上訪問它們顯示的內容。參見 節 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 服務端配置檔案 "/etc/X11/xorg.conf" 不應當在系統上存在。顯示卡和輸入裝置目前是由核心的 DRMKMSudev 配置。原生的 X 服務端已經重寫來使用它們。參見 Linux 核心文件的 "modedb default video mode support"。

這裡是 Wayland 環境上用於 GNOME 的著名的 GUI 架構軟體包。


這裡,"[auto]" 表示這些軟體包在 task-gnome-desktop 安裝時會自動安裝。

[提示] 提示

gnome-tweaks 是一個不可缺少的配置工具。例如:

  • 你能強制調整聲音音量,從“General(普通) ”到 "Over-Amplification(過分放大)"。

  • 你能夠強迫"Caps"鍵變成"Esc"鍵,從"Keyboard & Mouse" -> "Keyboard" -> "Additional Layout Option".

[提示] 提示

GNOME 桌面環境的詳細特徵能夠使用工具來配置,在按下 Super-鍵後,透過選擇 "settings", "tweaks"或 "extensions" 來啟動配置。

現在在 Debian 上,有許多有用的 GUI 應用存在。如果在 GNOME 桌面環境中沒有相應功能的軟體,那麼安裝例如 scribus(KDE)這樣的軟體包是完全可以接受的。但安裝過多功能重複的軟體包,會使你的系統凌亂。

這裡是一份捕獲我眼球的 GUI(圖形使用者介面)程式列表。

表格 7.3. 著名的的 GUI(圖形使用者介面)應用列表

軟體包 流行度 軟體包大小 類型 說明
evolution V:30, I:239 486 GNOME 個人資訊管理(群組軟體和電子郵件)
thunderbird V:48, I:119 224760 GTK 電子郵件客戶端 (Mozilla Thunderbird(雷鳥))
kontact V:1, I:12 2208 KDE 個人資訊管理(群組軟體和電子郵件)
libreoffice-writer V:117, I:435 31474 LO 文書處理軟體
abiword V:1, I:8 3542 GNOME 文書處理軟體
calligrawords V:0, I:7 6097 KDE 文書處理軟體
scribus V:1, I:16 31345 KDE 編輯 PDF 檔案的 desktop publishing 編輯器
glabels V:0, I:3 1338 GNOME 標籤編輯器
libreoffice-calc V:111, I:432 26009 LO 電子表格
gnumeric V:4, I:14 9910 GNOME 電子表格
calligrasheets V:0, I:5 11396 KDE 電子表格
libreoffice-impress V:69, I:429 2646 LO 簡報
calligrastage V:0, I:5 5339 KDE 簡報
libreoffice-base V:26, I:121 5003 LO 資料庫管理
kexi V:0, I:1 7118 KDE 資料庫管理
libreoffice-draw V:72, I:430 10312 LO 向量圖形編輯器(繪圖)
inkscape V:15, I:112 99800 GNOME 向量圖形編輯器(繪圖)
karbon V:0, I:6 3610 KDE 向量圖形編輯器(繪圖)
dia V:2, I:22 3741 GTK 流程圖和示意圖編輯器
gimp V:50, I:252 19304 GTK 點陣圖圖形編輯器 (繪圖)
shotwell V:17, I:255 6263 GTK 數碼照片管理器
digikam V:1, I:9 293 KDE 數碼照片管理器
darktable V:4, I:13 30554 GTK 攝影師的虛擬燈臺和暗房
planner V:0, I:4 1394 GNOME 專案管理
calligraplan V:0, I:2 19013 KDE 專案管理
gnucash V:2, I:8 28928 GNOME 個人會計
homebank V:0, I:2 1218 GTK 個人會計
lilypond V:0, I:7 16092 - 音樂排版
kmymoney V:0, I:2 13937 KDE 個人會計
librecad V:1, I:15 8963 Qt 應用 計算機輔助設計(CAD) 系統 (2D)
freecad I:18 36 Qt 應用 計算機輔助設計(CAD) 系統 (3D)
kicad V:3, I:14 236461 GTK 電路圖和 PCB 設計軟體
xsane V:12, I:144 2339 GTK 掃描器前段
libreoffice-math V:51, I:432 1898 LO 數學方程/公式編輯器
calibre V:6, I:28 63385 KDE 電子書轉換器和庫管理
fbreader V:1, I:9 3783 GTK 電子書閱讀器
evince V:92, I:314 941 GNOME 文件(pdf)閱讀器
okular V:40, I:123 17728 KDE 文件(pdf)閱讀器
x11-apps V:31, I:463 2460 單純的 X 應用 xeyes(1)等。
x11-utils V:192, I:566 651 單純的 X 應用 xev(1)、 xwininfo(1)等。

使用者目錄,比如"~/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 庫來柵格化許多向量字型格式,用於螢幕和列印:

下面的編撰的表格希望幫助使用者選擇適當的向量字型,並清楚的理解 排版指標相容(metric compatibility) 和 字形覆蓋。大部分字型覆蓋了所有拉丁、希臘和 Cyril 字元。最終選擇的啟用字型也受你的審美觀影響。這些字型能夠被用於螢幕顯示和紙張列印。

表格 7.4. 著名的 TrueTypeOpenType 字型列表

軟體包 流行度 大小 sans serif mono 字型註釋
fonts-cantarell V:216, I:306 572 59 - - Cantarell (GNOME 3, 顯示)
fonts-noto I:153 31 61 63 40 Noto fonts (Google, 有 CJK 的多語言)
fonts-dejavu I:421 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 擴充套件 Bitstream Vera)
fonts-liberation2 V:130, I:427 15 56 60 40 Liberation 字型 用於 LibreOffice (Red Hat, MCMATC)
fonts-croscore V:20, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos 和 Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:131 2696 57 - - Chrome 作業系統: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:128 347 - 55 - Chrome 作業系統: Caladea (Google, MCM:Cambria ) (只有拉丁字元 )
fonts-freefont-ttf V:76, I:218 14460 57 59 40 GNU FreeFont (擴充套件 URW Nimbus)
fonts-quicksand V:123, I:438 392 56 - - Debian 任務桌面, Quicksand (顯示,只有拉丁字元)
fonts-hack V:24, I:120 2508 - - 40 P 給原始碼設計的一個字型 Hack (Facebook)
fonts-sil-gentiumplus I:32 14345 - 54 - Gentium SIL
fonts-sil-charis I:27 6704 - 59 - Charis SIL
fonts-urw-base35 V:167, I:472 15560 56 60 40 URW Nimbus (Nimbus Sans, Roman No. 9 L, Mono L, MCAHTC)
fonts-ubuntu V:2, I:5 4339 58 - 33 P Ubuntu 字型 (顯示)
fonts-terminus V:0, I:3 452 - - 33 Cool retro 終端字型
ttf-mscorefonts-installer V:1, I:49 85 56? 60 40 下載微軟非開源字型(見下)

這裡:

  • "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:" 列出,在本地化任務軟體包裡面是首要候選軟體包。

Linux 上大部分 GUI(圖形使用者介面)應用在非 Debian 的源上,是以二進位制格式存在。

[警告] 警告

從這些站點來的二進位制軟體包,有可能包括私有的非開源軟體。

對使用 Debian 的自由軟體的狂熱愛好者,這些二進位制格式的分發,有一些存在的理由。因為這能夠得到一個乾淨的庫集合,由 Debian 提供的庫和由每個應用程式相應的上游開發者使用的庫,獨立開來。

執行外部二進位制的固有風險,能夠使用 沙盒環境 減少,它有現代 Linux 安全特性的手段。(參見 節 4.7.5, “Linux 安全特性”)。

  • 對於 AppImage 和一些上游站點來的二進位制,在 手工配置 後的 firejail 裡執行。

  • 對於從 FLATHUB 來的二進位制,在 Flatpak 裡執行它們。(不需要手工配置。)

  • 對於從 snapcraft 來的二進位制,在 Snap 裡面執行它們。(不需要手工配置。和後臺守護程序(daemon)相容。)

xdg-desktop-portal 軟體包為通用的桌面特性提供一個標準的 API。參見 xdg-desktop-portal (flatpak) xdg-desktop-portal (snap)


這個沙盒環境技術和在智慧手機作業系統上的應用程式非常相像,這裡的應用程式也是在資源訪問受到控制下執行的。

一些大的 GUI(圖形使用者介面)應用程式,比如說 Debian 上的網頁瀏覽器,也在內部使用了沙盒環境技術,這樣讓它們安全性更好。


有幾種方法從遠端主機上的應用連線到 X 服務端(包括本地主機的 xwayland )。


使用 X 核心協議的本地應用,能夠透過本地 UNIX 域名套接字進行本地連線,來訪問本地的 X 服務端。這可以透過擁有 access cookie 的授權檔案來授權。 授權檔案的位置透過"$XAUTHORITY"環境變數確定,X 顯示透過"$DISPLAY" 環境變數確定。由於這些環境變數通常會被自動設定,不需要另行指定。 例如,下面的 "gitk"。

username $ gitk
[注意] 注意

對於 xwayland, XAUTHORITY 有類似 "/run/user/1000/.mutter-Xwaylandauth.YVSU30"的值。

使用 X 核心協議的遠端應用訪問本地的 X 伺服器顯示,由 X11 轉發特性支援。

這個方法可以顯示來自遠端 X 客戶端的輸出,相當於它是通過一個本地 UNIX 域名 socket 進行本地的連線。

參見介紹 SSH/SSHD 的 節 6.3, “伺服器遠端存取和工具 (SSH)”

[警告] 警告

由於安全的原因,在 Debian 系統上,遠端 TCP/IP 連線到 X 服務端,是預設被停用的。不要透過簡單的設定 "xhost +"來啟用它們。如果能夠避免的話,也不要啟用 XDMCP 連線

剪貼文字到剪貼簿,參見 節 1.4.4, “滑鼠操作”

剪貼影像到剪貼簿,參見 節 11.6, “圖形資料工具”

一些命令列的命令也能操作字元剪貼簿(主要鍵和剪貼簿)。