第 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".

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

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

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

軟件包 流行度 軟體包大小 類型 說明
evolution V:31, I:236 484 GNOME 個人資訊管理(群組軟體和電子郵件)
thunderbird V:60, I:133 201933 GTK 電子郵件客戶端 (Mozilla Thunderbird(雷鳥))
kontact V:1, I:14 2203 KDE 個人資訊管理(群組軟體和電子郵件)
libreoffice-writer V:165, I:439 40261 LO 文書處理軟體
abiword V:2, I:11 5133 GNOME 文書處理軟體
calligrawords V:0, I:7 5908 KDE 文書處理軟體
scribus V:2, I:22 31781 KDE 編輯 PDF 檔案的 desktop publishing 編輯器
glabels V:0, I:4 1327 GNOME 標籤編輯器
libreoffice-calc V:160, I:435 32913 LO 電子表格
gnumeric V:5, I:20 9959 GNOME 電子表格
calligrasheets V:0, I:5 11289 KDE 電子表格
libreoffice-impress V:134, I:431 10099 LO 簡報
calligrastage V:0, I:5 5193 KDE 簡報
libreoffice-base V:93, I:241 6981 LO 資料庫管理
kexi V:0, I:2 7118 KDE 資料庫管理
libreoffice-draw V:135, I:432 14479 LO 向量圖形編輯器(繪圖)
inkscape V:39, I:176 89027 GNOME 向量圖形編輯器(繪圖)
karbon V:0, I:6 3588 KDE 向量圖形編輯器(繪圖)
dia V:4, I:28 3620 GTK 流程圖和示意圖編輯器
gimp V:63, I:311 19729 GTK 點陣圖圖形編輯器 (繪圖)
shotwell V:18, I:237 6402 GTK 數碼照片管理器
digikam V:2, I:12 2647 KDE 數碼照片管理器
darktable V:6, I:16 24145 GTK 攝影師的虛擬燈臺和暗房
planner V:0, I:4 1146 GNOME 專案管理
calligraplan V:0, I:1 18517 KDE 專案管理
gnucash V:3, I:10 32435 GNOME 個人會計
homebank V:0, I:2 1114 GTK 個人會計
lilypond V:1, I:8 7363 - 音樂排版
kmymoney V:0, I:2 12850 KDE 個人會計
librecad V:3, I:17 7893 Qt 應用 計算機輔助設計(CAD) 系統 (2D)
freecad I:18 53 Qt 應用 計算機輔助設計(CAD) 系統 (3D)
kicad V:2, I:15 98819 GTK 電路圖和 PCB 設計軟體
xsane V:16, I:165 2346 GTK 掃描器前段
libreoffice-math V:120, I:436 2337 LO 數學方程/公式編輯器
calibre V:8, I:33 55463 KDE 電子書轉換器和庫管理
fbreader V:1, I:13 2698 GTK 電子書閱讀器
evince V:111, I:327 978 GNOME 文件(pdf)閱讀器
okular V:43, I:116 15376 KDE 文件(pdf)閱讀器
x11-apps V:29, I:468 2437 單純的 X 應用 xeyes(1)等。
x11-utils V:180, I:588 712 單純的 X 應用 xev(1)、 xwininfo(1)等。

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

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

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

表 7.4. 著名的 TrueTypeOpenType 字型列表

軟件包 流行度 大小 sans serif mono 字型註釋
fonts-cantarell V:87, I:295 836 59 - - Cantarell (GNOME 3, 顯示)
fonts-noto I:136 35 61 63 40 Noto fonts (Google, 有 CJK 的多語言)
fonts-dejavu I:456 39 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 擴充套件 Bitstream Vera)
fonts-liberation2 V:94, I:364 4290 56 60 40 Liberation 字型 用於 LibreOffice (Red Hat, MCMATC)
fonts-croscore V:16, I:47 5278 56 60 40 Chrome OS: Arimo, Tinos 和 Cousine (Google, MCMATC)
fonts-crosextra-carlito V:23, I:232 2732 57 - - Chrome 作業系統: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:231 258 - 55 - Chrome 作業系統: Caladea (Google, MCM:Cambria ) (只有拉丁字元 )
fonts-freefont-ttf V:69, I:253 6656 57 59 40 GNU FreeFont (擴充套件 URW Nimbus)
fonts-quicksand I:385 392 56 - - Debian 任務桌面, Quicksand (顯示,只有拉丁字元)
fonts-hack V:16, I:94 2508 - - 40 P 給原始碼設計的一個字型 Hack (Facebook)
fonts-sil-gentiumplus I:38 5756 - 54 - Gentium SIL
fonts-sil-charis V:3, I:20 8900 - 59 - Charis SIL
fonts-urw-base35 V:97, I:251 11095 56 60 40 URW Nimbus (Sans, Roman No. 9 L, Mono L, MCAHTC)
fonts-ubuntu V:2, I:5 4103 58 - 33 P Ubuntu 字型 (顯示)
fonts-terminus V:0, I:1 450 - - 33 Cool retro 終端字型
ttf-mscorefonts-installer V:1, I:61 92 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)相容。)

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"的值。

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

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

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