第 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

[提示] 提示

Task menu may be out of sync with the latest package transition state under Debian unstable/testing environment. In such situation, you need to deselect some (meta)packages listed under aptitude(8) task menu to avoid package conflicts. When deselecting (meta)packages, you must select certain packages providing their dependencies manually to avoid them deleted automatically.

你也可以手動只建立一個 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 軟體包。

The X Window System is activated as a combination of the server and client programs. The meaning for the words server and client with respect to the words local and remote requires attention here.


Modern X servers have the MIT Shared Memory Extension and communicate with their local X clients using the local shared memory. This bypasses the network transparent Xlib interprocess communication channel and gains performance for large images.

關於 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.3.5 节 “只用於 X 視窗的特定語言環境”

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

  1. The script specified as the argument of "/etc/X11/Xsession" by the X display manager, if it is defined.

  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.3 节 “語言環境”) 。它在 “~/.dmrc” 中像下面那樣設定選擇的預設值。

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

Fontconfig 2.0 was created to provide a distribution independent library for configuring and customizing font access in 2002. Debian after squeeze uses Fontconfig 2.0 for its font configuration.

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:703 4439 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L URW (Adobe 相容的大小)
gsfonts-x11 I:134 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:148 33270 LMSans* LMRoman* LMTypewriter* 基於現代計算機的可縮放 PostScript 和 OpenType 字型(來自 Tex)

表 7.6. 對應的 TrueType 字型

字型軟體包 流行度 大小 無襯線字型 襯線字型 等寬字型 字型來源
ttf-mscorefonts-installer V:1, I:90 125 Arial Times New Roman Courier New 微軟(Adobe 相容的大小)(這會安裝 non-free 資料)
fonts-liberation I:575 2093 Liberation Sans Liberation Serif Liberation Mono Liberation 字型專案(微軟相容的大小)
fonts-freefont-ttf V:38, I:382 10747 FreeSans FreeSerif FreeMono GNU 自由字型(微軟相容的大小)
fonts-dejavu I:489 39 DejaVu Sans DejaVu Serif DejaVu Sans Mono 覆蓋了 Unicode 的 DejaVuBitstream Vera
fonts-dejavu-core V:310, I:724 2954 DejaVu Sans DejaVu Serif DejaVu Sans Mono 覆蓋了 Unicode 的 DejaVuBitstream Vera(sans、sans-bold、serif、serif-bold、mono、mono-bold)
fonts-dejavu-extra I:510 7217 N/A N/A N/A 覆蓋了 Unicode 的 DejaVuBitstream Vera(oblique、italic、bold-oblique、bold-italic、condensed)
ttf-unifont I:23 16903 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 字型集合檔案。

In order to cover complicated code space of characters, CID keyed PostScript Type 1 font is used with CMap files starting themselves with "%!PS-Adobe-3.0 Resource-CMap". This is rarely used for normal X display but used for PDF rendering etc. (see 第 7.7.2 节 “X 實用應用”).

[提示] 提示

The multiple glyphs are expected for some Unicode code points due to Han unification. One of the most annoying ones are "U+3001 IDEOGRAPHIC COMMA" and "U+3002 IDEOGRAPHIC FULL STOP" whose character positions differ among CJK countries. Configuring priority of Japanese centric fonts over Chinese ones using "~/.fonts.conf" should give peace of minds to Japanese.