第 7 章 X 視窗系統

目录

7.1. 關鍵軟體包
7.2. 設定桌面環境
7.2.1. Debian 選單
7.2.2. Freedesktop.org 選單
7.2.3. 從 Freedesktop.org 選單到 Debian 選單
7.3. 伺服器/客戶端關係
7.4. X 伺服器
7.4.1. X 伺服器的(重新)配置
7.4.2. 連線到 X 伺服器的方式
7.5. 啟動 X 視窗系統
7.5.1. 使用 gdm3 啟動 X 會話
7.5.2. 自定義 X 會話(經典方式)
7.5.3. 自定義 X 會話(新方式)
7.5.4. 通過 SSH 連線一個遠端 X 客戶端
7.5.5. 連線網際網路的安全 X 終端
7.6. X 視窗中的字型
7.6.1. 基礎字型
7.6.2. 其它字型
7.6.3. CJK 字型
7.7. X 應用
7.7.1. X 辦公應用
7.7.2. X 實用應用
7.8. X 瑣事
7.8.1. 剪貼簿
7.8.2. X 中的鍵盤和滑鼠按鈕對映
7.8.3. 典型的 X 客戶端
7.8.4. X 終端模擬器 —— xterm
7.8.5. 以 root 執行 X 客戶端
[警告] 警告

本章是基於 2013 年發佈的 Debian 7.0 (Wheezy) 編寫的,所以其內容正在變得過時。

Debian 上的 X 視窗系統基於 X.Org 的原始碼。

這裡有一些用於簡易安裝的(元)軟體包。


關於 X 基礎知識,請參考 X(7)the LDP XWindow-User-HOWTO

一個 桌面環境 通常是一個 X 視窗管理器、一個檔案管理器和一套相容的實用程式組合而成。

你能夠在 aptitude 的任務選單下安裝全部的桌面環境,例如 GNOMEKDEXfce 或者 LXDE

[提示] 提示

在Debian unstable/testing下,任務選單可能與最新的軟體包過渡狀態不同步。在這種情況下,您需要取消選擇aptitude(8)任務選單下列出的一些(元)包。當取消選擇 (元) 軟體包時,您必須選擇那些提供依賴項手動操作的軟體包,避免它們被自動刪除。

你也可以手動只建立一個 X 視窗管理器,例如 Fluxbox

關於 X 視窗管理器和桌面環境的介紹,參見 Window Managers for X

Debian 菜單系統menu 軟體包中為帶有 update-menus(1) 的文字和 X 程式提供了一個通用介面。每個軟體包都會將它的選單資料安裝到 “/usr/share/menu/” 目錄。參見 “/usr/share/menu/README”。

為了從遵從 Freedesktop.org 選單的視窗管理器環境(例如 GNOME 和 KDE)訪問傳統的 Debian 選單,你必須安裝 menu-xdg 軟體包。

X Window系統作為服務和客戶端程式的組合被啟動. 在這裡,serverclient的意義需要和localremote區分開來.


現代X伺服器具有 MIT 共享記憶體擴充套件 ,他們和本地X客戶端通過本地共享記憶體進行通訊. 這就繞過了網路透明的Xlib程序間通訊通道,提升了大型影象的處理效能.

關於 X 伺服器的資訊,參見xorg(1)

X 視窗系統通常是作為 X 會話啟動的,X 會話是 由 X 伺服器和連線客戶端組成的。對於常規的桌面系統,它們兩個都是在一個工作站上執行的。

X 會話 由以下方式之一啟動。

  • 從命令列用 startx 命令啟動

  • 從 “/etc/rc?.d/”(“?” 對應執行級別)目錄中的啟動指令碼末尾使用 X 顯示管理器 後臺守護程序(daemon)程式 *.dm 啟動

[提示] 提示

顯示管理器後臺守護程序(daemon)的啟動指令碼在實際執行它們自己時會檢查 “/etc/X11/default-display-manager” 檔案的內容。這可以確保只有一個 X 顯示管理器 後臺守護程序(daemon)程式被啟用。

[提示] 提示

關於 X 顯示管理器的初始環境變數,參見 第 8.4.5 节 “只用於 X 視窗的特定語言環境”

本質上,所有的這些程式都是執行 “/etc/X11/Xsession” 指令碼。之後 “/etc/X11/Xsession” 指令碼通過 run-parts(8) 執行 “/etc/X11/Xsession.d/” 目錄中的指令碼。這本質上是通過 內建的 exec 命令執行按下面順序第一個被找到的程式。

  1. X顯示管理器呼叫"/etc/X11/Xsession" 的引數中指定的指令碼, 如果他被定義了。

  2. ~/.xsession” 或 “~/.Xsession” 指令碼,如果它被定義。

  3. /usr/bin/x-session-manager” 命令,如果它被定義。

  4. /usr/bin/x-window-manager” 命令,如果它被定義。

  5. /usr/bin/x-terminal-emulator” 命令,如果它被定義。

這個過程會受 “/etc/X11/Xsession.options” 的影響。“/usr/bin/x-*” 命令所指向的準確程式,是由 Debian 選擇系統決定的,並且可以通過 “update-alternatives --config x-session-manager” 修改。

細節參見 Xsession(5).

gdm3(1) 讓你從它的選單中選擇會話型別(或桌面環境:第 7.2 节 “設定桌面環境”),還有 X 會話的語言(或語言環境:第 8.4 节 “語言環境”) 。它在 “~/.dmrc” 中像下面那樣設定選擇的預設值。

[Desktop]
Session=default
Language=ja_JP.UTF-8

在2002年,人們建立了發行版獨立的庫Fontconfig 2.0用於配置和定製字型訪問. squeeze 以後的Debian使用 Fontconfig 2.0 進行字型配置.

X 視窗系統中的字型支援可以概括如下。


你可以通過下列方法檢視字型配置資訊。

  • 使用 “xset q” 檢視核心 X11 字型路徑

  • 使用 “fc-match” 檢視 fontconfig 的字型預設

  • 使用 “fc-list” 檢視所有可用的 fontconfig 字型

[提示] 提示

The Penguin and Unicode” 很好地概述了現代的 X 視窗系統。在 http://unifont.org/ 中的其它文件提供了關於 Unicode 字型、支援 Unicode 的軟體以及國際化的相關資訊,還有 免費/自由/開源(free/libre/open source,FLOSS) 作業系統中的 Unicode 可用性問題。

計算機字型有兩種主要的型別。

  • 點陣字型(低解析度柵格化下表現良好)

  • 輪廓/筆畫字型(高解析度柵格化下表現良好)

縮放點陣字型會導致影象產生鋸齒,而縮放輪廓/筆畫字型則生成平滑的影象。

Debian 系統中的點陣字型通常由壓縮的 X11 pcf 點陣字型檔案 提供,它帶有 “.pcf.gz” 檔案字尾名。

Debian 系統中的輪廓字型由以下提供。

  • PostScript Type 1 字型檔案,它帶有 “.pfb”(二進位制字型檔案)和 “.afm”(字型規格檔案)檔案字尾名。

  • TrueType(或 OpenType)字型檔案,通常帶有 “.ttf 檔案字尾名。

[提示] 提示

OpenType 是為了取代 TrueTypePostScript Type 1。

表 7.5. 相應的 PostScript Type 1 字型

字型軟體包 流行度 大小 無襯線字型 襯線字型 等寬字型 字型來源
PostScript N/A N/A Helvetica Times Courier Adobe
gsfonts I:698 4439 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L URW (Adobe 相容的大小)
gsfonts-x11 I:127 96 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L PostScript Type 1 字型支援的 X 字型。
t1-cyrillic I:23 4884 Free Helvetian Free Times Free Courier URW 擴充套件(Adobe 相容的大小)
lmodern I:142 33270 LMSans* LMRoman* LMTypewriter* 基於現代計算機的可縮放 PostScript 和 OpenType 字型(來自 Tex)

表 7.6. 對應的 TrueType 字型

字型軟體包 流行度 大小 無襯線字型 襯線字型 等寬字型 字型來源
ttf-mscorefonts-installer V:1, I:84 125 Arial Times New Roman Courier New 微軟(Adobe 相容的大小)(這會安裝 non-free 資料)
fonts-liberation I:574 2093 Liberation Sans Liberation Serif Liberation Mono Liberation 字型專案(微軟相容的大小)
fonts-freefont-ttf V:38, I:368 10747 FreeSans FreeSerif FreeMono GNU 自由字型(微軟相容的大小)
fonts-dejavu I:500 39 DejaVu Sans DejaVu Serif DejaVu Sans Mono 覆蓋了 Unicode 的 DejaVuBitstream Vera
fonts-dejavu-core V:314, I:745 2954 DejaVu Sans DejaVu Serif DejaVu Sans Mono 覆蓋了 Unicode 的 DejaVuBitstream Vera(sans、sans-bold、serif、serif-bold、mono、mono-bold)
fonts-dejavu-extra I:523 7217 N/A N/A N/A 覆蓋了 Unicode 的 DejaVuBitstream Vera(oblique、italic、bold-oblique、bold-italic、condensed)
ttf-unifont I:23 16946 N/A N/A unifont GNU Unifont,帶有 Unicode 5.1 基本多文種平面(BMP)中所有的可列印字元

[提示] 提示

DejaVu 字型基於 Bitstream Vera 字型,並對其進行了擴充。

下面是一些主要關注 CJK 字元 的字型。


像 “VL PGothic” 這樣帶有 “P” 的字型名稱是對應的 “VL Gothic” 字型修改寬度後的比例字型。

舉個例子,Shift_JIS 的碼錶包含了 7070 個字元。它們可以像下面那樣分類。

  • JIS X 0201 單位元組字元(191 個字元,又名半形字元)

  • JIS X 0208 雙位元組字元(6879 個字元,又名全形字元)

使用修復寬度的 CJK 字型的雙位元組字元佔用控制檯終端的雙倍寬度。為了應對這種情況,帶有 “.hbf” 檔案字尾名的 漢字點陣字型(Hanzi Bitmap Font,HBF)檔案 被設計為包含了單位元組和雙位元組字元的字型。

為了節省 TrueType 字型檔案的空間,可以使用帶有 “.ttc” 檔案字尾名的 TrueType 字型集合檔案。

為了覆蓋複雜的編碼字型空間, CID採用"%!PS-Adobe-3.0 Resource-CMap"開頭的CMap檔案作為PostScript型別1字型的關鍵字。這個幾乎很少用在普通的X顯示上,更多用於PDF等格式的檔案渲染上。(參考 第 7.7.2 节 “X 實用應用”).

[提示] 提示

對於Han unification,一些Unicode編碼點陣期望能夠有多樣化的glyphs。其中最令人討厭的在中日韓三個國家“U + 3001頓號”和“U + 3002表意的句號”的字元位置各不相同。配置日文中心字型的優先順序,中文用的是" 7~/.fonts.conf 8"能夠讓日本感到有所平衡。