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

內容目錄

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

在 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.7, “遠端桌面”

現代 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".

[提示] 提示

Detail features of GNOME desktop environment can be configured with utilities started by typing "settings", "tweaks", or "extensions" after pressing Super-key.

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

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

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

軟體包 流行度 軟體包大小 類型 說明
evolution V:27, I:234 498 GNOME 個人資訊管理(群組軟體和電子郵件)
thunderbird V:49, I:118 223965 GTK 電子郵件客戶端 (Mozilla Thunderbird(雷鳥))
kontact V:1, I:9 2208 KDE 個人資訊管理(群組軟體和電子郵件)
libreoffice-writer V:111, I:426 39146 LO 文書處理軟體
abiword V:1, I:7 3467 GNOME 文書處理軟體
calligrawords V:0, I:4 5836 KDE 文書處理軟體
scribus V:1, I:16 30242 KDE 編輯 PDF 檔案的 desktop publishing 編輯器
glabels V:0, I:3 1338 GNOME 標籤編輯器
libreoffice-calc V:106, I:423 30890 LO 電子表格
gnumeric V:3, I:14 10004 GNOME 電子表格
calligrasheets V:0, I:2 11244 KDE 電子表格
libreoffice-impress V:70, I:420 9017 LO 簡報
calligrastage V:0, I:2 5142 KDE 簡報
libreoffice-base V:31, I:136 5943 LO 資料庫管理
kexi V:0, I:1 7118 KDE 資料庫管理
libreoffice-draw V:71, I:421 13525 LO 向量圖形編輯器(繪圖)
inkscape V:14, I:122 99316 GNOME 向量圖形編輯器(繪圖)
karbon V:0, I:3 3581 KDE 向量圖形編輯器(繪圖)
dia V:2, I:21 3908 GTK 流程圖和示意圖編輯器
gimp V:50, I:260 19877 GTK 點陣圖圖形編輯器 (繪圖)
shotwell V:16, I:248 6187 GTK 數碼照片管理器
digikam V:1, I:9 292 KDE 數碼照片管理器
darktable V:4, I:13 30551 GTK 攝影師的虛擬燈臺和暗房
planner V:0, I:3 1394 GNOME 專案管理
calligraplan V:0, I:1 19013 KDE 專案管理
gnucash V:2, I:8 28051 GNOME 個人會計
homebank V:0, I:2 1239 GTK 個人會計
lilypond V:0, I:7 15747 - 音樂排版
kmymoney V:0, I:2 13341 KDE 個人會計
librecad V:1, I:14 8798 Qt 應用 計算機輔助設計(CAD) 系統 (2D)
freecad I:16 53 Qt 應用 計算機輔助設計(CAD) 系統 (3D)
kicad V:2, I:12 236009 GTK 電路圖和 PCB 設計軟體
xsane V:12, I:148 2339 GTK 掃描器前段
libreoffice-math V:54, I:424 2251 LO 數學方程/公式編輯器
calibre V:7, I:28 63554 KDE 電子書轉換器和庫管理
fbreader V:1, I:10 2631 GTK 電子書閱讀器
evince V:85, I:310 939 GNOME 文件(pdf)閱讀器
okular V:36, I:118 17334 KDE 文件(pdf)閱讀器
x11-apps V:29, I:456 2476 單純的 X 應用 xeyes(1)等。
x11-utils V:178, I:565 712 單純的 X 應用 xev(1)、 xwininfo(1)等。

對於 Debian 的使用者,有許多有用的向量字型存在。使用者關注是怎樣避免冗餘,怎樣配置禁用部分已經安裝的字型。此外,無用的字型選擇可以搞亂你的 GUI(圖形使用者介面)應用程式選單。

Debian 系統使用 FreeType 2.0 庫來柵格化許多向量字型格式,用於螢幕和列印:

The following table is compiled in the hope to help users to chose appropriate scalable fonts with clear understanding of the metric compatibility and the glyph coverage. Most fonts cover all Latin, Greek, and Cyril characters. The final choice of activated fonts can also be affected by your aesthetics. These fonts can be used for the screen display or for the paper printing.

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

軟體包 流行度 大小 sans serif mono 字型註釋
fonts-cantarell V:202, I:298 572 59 - - Cantarell (GNOME 3, 顯示)
fonts-noto I:148 31 61 63 40 Noto fonts (Google, 有 CJK 的多語言)
fonts-dejavu I:422 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 擴充套件 Bitstream Vera)
fonts-liberation2 V:116, I:412 15 56 60 40 Liberation 字型 用於 LibreOffice (Red Hat, MCMATC)
fonts-croscore V:19, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos 和 Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:143 2696 57 - - Chrome 作業系統: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:141 347 - 55 - Chrome 作業系統: Caladea (Google, MCM:Cambria ) (只有拉丁字元 )
fonts-freefont-ttf V:68, I:216 14460 57 59 40 GNU FreeFont (擴充套件 URW Nimbus)
fonts-quicksand V:63, I:422 392 56 - - Debian 任務桌面, Quicksand (顯示,只有拉丁字元)
fonts-hack V:23, I:113 2508 - - 40 P 給原始碼設計的一個字型 Hack (Facebook)
fonts-sil-gentiumplus I:31 13568 - 54 - Gentium SIL
fonts-sil-charis I:26 6406 - 59 - Charis SIL
fonts-urw-base35 V:150, I:435 15558 56 60 40 URW 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 453 - - 33 Cool retro 終端字型
ttf-mscorefonts-installer V:1, I:48 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.4, “Linux 安全特性”)。

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

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

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

The xdg-desktop-portal package provides a standardized API to common desktop features. See xdg-desktop-portal (flatpak) and 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"的值。

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

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

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