21 圖形使用者介面 #
SUSE Linux Enterprise Server 包含 X.org 伺服器和 GNOME 桌面。本章介紹用於所有使用者的圖形使用者介面組態。
21.1 X Window 系統 #
X.org 伺服器是實作 X11 通訊協定的事實上標準。X 採網路結構,可讓應用程式在一個主機上啟動而在透過任何種類的網路 (LAN 或網際網路) 連接的其他主機上顯示。
X Window System 一般不需要任何組態設定。X 啟動期間會動態偵測硬體。因此,xorg.conf
的使用已被取代。如果您仍需要指定自訂選項來變更 X 的行為方式,您仍然可以透過修改 /etc/X11/xorg.conf.d/
下的組態檔案實現變更。
IBM Z 沒有任何 X.Org 支援的輸入或輸出裝置。因此,本節中所述的所有組態程序都不適用。如需 IBM Z 的更多相關資訊,請參閱第 5 章 「IBM Z 和 LinuxONE 上的安裝」。
您可安裝 xorg-docs
套件以更深入地瞭解 X11。man 5 xorg.conf
更詳細地說明了手動設定的格式 (如果需要)。您可在專案的首頁 http://www.x.org 上找到關於 X11 開發的更多資訊。
驅動程式位於 xf86-video-*
套件中,例如 xf86-video-ati
。相關手冊頁中詳細描述了這些套件隨附的很多驅動程式。例如,如果您使用 ati
驅動程式,在 man 4 ati
中可以找到有關此驅動程式的詳細資訊。
/usr/share/doc/packages/<package_name>
中提供了有關協力廠商驅動程式的資訊。例如,安裝套件後,x11-video-nvidiaG04
的文件就位於 /usr/share/doc/packages/x11-video-nvidiaG03
中。
21.2 安裝與設定字型 #
Linux 中的字型可分為兩個部分:
- 描邊或向量字型
包含字符形狀的數學說明和繪圖說明。因此,每個字符都可以調整為任意大小而無損品質。在可以使用此類字型 (或字符) 之前,需要將數學說明轉換為點陣 (網格)。此過程稱為字型點陣化。字型影射 (內嵌於字型中) 改進和最佳化特定大小的展示效果。點陣化和影射透過 FreeType 程式庫完成。
Linux 下的常用格式是 PostScript Type 1 和 Type 2、TrueType 及 OpenType。
- 點陣圖或點陣字型
包含為特定字型大小設計的像素陣列。點陣圖字型的展示速度超快,而且相當簡單。然而,與向量字型相比,它無法在無損品質的情況下調整。因此,這些字型通常以不同的大小分佈。近期,點陣圖字型仍然在 Linux 主控台使用,有時也見於終端機。
Linux 旗下最常用的格式是可攜式編譯格式 (PCF) 或字符點陣圖影射格式 (BDF)。
這些字型的外觀會受兩個主要方面影響:
選擇合適的字型系列,
採用特定演算法展示字型,讓讀者觀看起來最為舒適。
最後一點僅與向量字型相關。雖然上述兩點非常主觀,但是需要建立一些預設值。
Linux 字型展示系統由若干個程式庫及其各種關係組成。基本字型程式庫是 FreeType,它會將字型字符從受支援的格式轉換為最佳化的點陣圖字符。展示程序由演算法及其參數 (可能受父問題影響) 控制。
使用 FreeType 的每個程式或程式庫都應參考 Fontconfig 程式庫。此程式庫會從使用者及系統收集字型組態。當使用者修正其 Fontconfig 設定時,此變更將導致發生 Fontconfig 感知的套用。
Arabic、Han 或 Phags-Pa 等程序檔所需的更複雜的 OpenType 塑形,以及其他更高層級的文字處理透過 Harfbuzz 或 Pango 來進行。
21.2.1 顯示已安裝的字型 #
若要大致瞭解系統上已安裝哪些字型,請執行 rpm
或 fc-list
指令。二者均會出色回答,但有可能因根據系統和使用者組態傳回不同的清單。
rpm
呼叫
rpm
可查看系統上已安裝哪些包含字型的軟體套件:tux >
rpm -qa '*fonts*'每個字型套件應符合此表示式。然而,指令可能傳回誤報,例如
fonts-config
(可能既不是也不包含字型)。fc-list
呼叫
fc-list
,大致瞭解哪些字型系列可供存取、是否已安裝在系統上或主目錄中:tux >
fc-list ':' family注意:指令fc-list
指令
fc-list
是 Fontconfig 程式庫的包裝程式。它可以從 Fontconfig (更確切地說,從它的快取) 查詢大量有趣的資訊。請參閱man 1 fc-list
以取得詳細資料。
21.2.2 檢視字型 #
如果您要瞭解已安裝的字型有何外觀,請使用指令 ftview
(套件 ft2demos
) 或造訪 http://fontinfo.opensuse.org/。例如,若要以 14 點顯示 FreeMono 字型,請依照下方所述使用 ftview
:
tux >
ftview 14 /usr/share/fonts/truetype/FreeMono.ttf
如果您需要進一步的資訊,請造訪 http://fontinfo.opensuse.org/ 以瞭解哪些樣式 (標準、粗體、斜體等)和語言受支援。
21.2.3 查詢字型 #
若要查詢給定模式時使用哪中字型,請使用 fc-match
指令。
例如,如果您的模式包含已安裝的字型,fc-match
會傳回檔案名稱、字型系列和樣式:
tux >
fc-match 'Liberation Serif'
LiberationSerif-Regular.ttf: "Liberation Serif" "Regular"
如果所需字型在系統上不存在,Fontconfig 會調用相符規則嘗試找到最接近的可用字型。換言之,您的要求被取代為:
tux >
fc-match 'Foo Family'
DejaVuSans.ttf: "DejaVu Sans" "Book"
Fontconfig 支援別名,即用另一個系列名稱取代原始名稱。常見的情況是通用名稱,例如 「sans-serif」、「serif」 和 「monospace」。這些別名可取代為實際的系列名稱或者甚至是系列名稱的偏好設定清單:
tux >
for font in serif sans mono; do fc-match "$font" ; done
DejaVuSerif.ttf: "DejaVu Serif" "Book"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
結果可能因系統而異,具體視目前安裝的字型而定。
Fontconfig 始終根據給定要求傳回最相似的實際系列 (如果至少已安裝一個系列)。「「相似度」」視 Fontconfig 的內部測量以及使用者或管理員的 Fontconfig 設定而定。
21.2.4 安裝字型 #
若要安裝新字型,可採用下列幾種主要的方法:
將
*.ttf
或*.otf
等字型檔案手動安裝至已知字型目錄。如果要將字型套用至整個系統,請使用標準目錄/usr/share/fonts
。如果要安裝到主目錄中,請使用~/.config/fonts
。如果不想使用標準目錄,Fontconfig 可讓您選擇其他目錄。使用
<dir>
元素通知 Fontconfig 所用目錄,相關詳細資料請參閱第 21.2.5.2 節 「深入瞭解 fontconfig XML」。使用
zypper
安裝字型。許多字型做為套件提供,隨附在 SUSE 套裝作業系統或位於 M17N:fonts 儲存庫中。使用以下指令將儲存庫新增至清單。例如,若要為 SUSE Linux Enterprise Server 15 SP3 新增儲存庫,請使用以下指令:tux >
sudo
zypper ar https://download.opensuse.org/repositories/M17N:/fonts/SLE_15/若要搜尋 字型系列名稱,請使用下面此指令:
tux >
zypper se 'FONT_FAMILY_NAME*fonts'
21.2.5 設定字型外觀 #
結果不一定會令人滿意,具體視展示媒體和字型大小而定。例如,如今常規監視器解析度為 100dpi,導致像素太大,字型看上去粗陋難看。
有些演算法可用於應對低解析度,例如消除鋸齒 (灰階平滑化)、影射 (適合網格) 或子像素展示 (在一個方向使解析度增至三倍)。這些演算法還可能因字型格式而異。
SUSE 套裝作業系統中不使用子像素展示。雖然 FreeType2 支援此演算法,但是所涉及的幾項專利將於 2019 年年末到期。因此,除非系統含有 FreeType2 程式庫並且該程式庫中已編譯子像素展示,否則在 Fontconfig 中設定子像素展示選項沒有任何效果。
透過 Fontconfig,可為每種字型個別選取展示演算法,也可為一組字型選取展示演算法。
21.2.5.1 透過 sysconfig
設定字型 #
SUSE Linux Enterprise Server 在 Fontconfig 上提供一個 sysconfig
層。您可以從此處入手體驗字型組態。若要變更預設設定,請編輯組態檔案 /etc/sysconfig/fonts-config
。(或使用 YaST sysconfig 模組)。編輯該檔案之後,請執行 fonts-config
。
tux >
sudo
/usr/sbin/fonts-config
重新啟動應用程式以查看效果。請記住下列指示:
一些應用程式不需要重新啟動。例如,Firefox 會不時重新讀取 Fontconfig 組態。新建立或重新載入的標籤日後可取得新的字型組態。
系統會在安裝或移除每個套件後自動呼叫
fonts-config
程序檔 (否則表示字型軟體套件有誤)。可以使用
fonts-config
指令行選項暫時覆寫每個 sysconfig 變數。如需詳細資料,請參閱fonts-config --help
。
有數個 sysconfig 變數可以變更。請參閱 man 1 fonts-config
或 YaST sysconfig 模組的說明頁面。系統提供下列變數:
- 呈現演算法的用法
請考慮
FORCE_HINTSTYLE
、FORCE_AUTOHINT
、FORCE_BW
、FORCE_BW_MONOSPACE
、USE_EMBEDDED_BITMAPS
和EMBEDDED_BITMAP_LANGAGES
- 一般別名的優先設定清單
使用
PREFER_SANS_FAMILIES
、PREFER_SERIF_FAMILIES
、PREFER_MONO_FAMILIES
和SEARCH_METRIC_COMPATIBLE
下面的清單提供了一些組態範例,從「「最適合閱讀」」字型 (對比度較高) 到「「最漂亮」」(較平滑) 排序。
- 點陣圖字型
透過
PREFER_*_FAMILIES
變數設定偏好的點陣圖字型。對於這些變數,請按照說明部份中的範例操作。須知,這些字型以黑白且未平滑形式展示,並且點陣圖字型只有數種大小。考慮使用SEARCH_METRIC_COMPATIBLE="no"
來停用度量相容性驅動的系統名稱取代。
- 以黑白呈現的可調整字型
展示可調整字型時如果未消除鋸齒,可能導致效果類似於點陣圖字型,同時保持字型可調整性。使用示意良好的 Liberation 系列之類。遺憾的是,系統中缺少影射良好的字型。設定下列變數以強制採用此方法。
FORCE_BW="yes"
- 以黑白呈現的等寬字型
僅以未消除鋸齒的方式展示等寬字型,否則使用預設設定:
FORCE_BW_MONOSPACE="yes"
- 預設設定
展示所有字型時都消除鋸齒。使用位元組碼解譯器 (BCI) 展示影射良好的字型,使用自動影射器 (
hintstyle=hintslight
) 展示其他字型。讓所有相關 sysconfig 變數保持預設設定。- CFF 字型
以 CFF 格式使用字型。人們認為它們在 FreeType2 中進行最新改進之後,比預設的 TrueType 字型更適合閱讀。請按照
PREFER_*_FAMILIES
範例嘗試一下。可以透過SEARCH_METRIC_COMPATIBLE="no"
將展示調暗調粗,因為它們依預設透過
hintstyle=hintslight
展示。還可以考慮使用:SEARCH_METRIC_COMPATIBLE="no"
- 專用自動影射器
即使對於影射良好的字型,也可以使用 FreeType2 的自動影射器。這可能會導致字形變得更粗、對比度更低,有時還會變得更模糊。設定下列變數以啟用此項:
FORCE_AUTOHINTER="yes"
可使用
FORCE_HINTSTYLE
來控制影射層級。
21.2.5.2 深入瞭解 fontconfig XML #
Fontconfig 的組態設定格式是可延伸標記語言 (XML)。下面的幾個範例不是完整參考,而是簡要概觀。詳細資料及其他靈感可在 man 5 fonts-conf
或 /etc/fonts/conf.d/
中找到。
中心 Fontconfig 組態檔案是 /etc/fonts/fonts.conf
,它及其他作品包括整個 /etc/fonts/conf.d/
目錄。若要自訂 Fontconfig,可在兩個位置插入變更:
泛系統變更: 編輯檔案
/etc/fonts/local.conf
(依預設包含一個空的fontconfig
元素)。使用者特定變更: 編輯檔案
~/.config/fontconfig/fonts.conf
。將 Fontconfig 組態檔案置於~/.config/fontconfig/conf.d/
目錄中。
使用者特定變更會覆寫任何泛系統設定。
檔案 ~/.fonts.conf
標示為已取代,不應繼續使用。請改為使用 ~/.config/fontconfig/fonts.conf
。
每個組態檔案都需要有 fontconfig
元素。因此,最小的檔案外觀如下:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Insert your changes here --> </fontconfig>
如果預設目錄不足,請插入 dir
元素及相應的目錄:
<dir>/usr/share/fonts2</dir>
Fontconfig 會以遞迴方式搜尋字型。
字型展示演算法可透過下列 Fontconfig 片段選擇 (請參閱範例 21.1 「指定呈現演算法」):
<match target="font"> <test name="family"> <string>FAMILY_NAME</string> </test> <edit name="antialias" mode="assign"> <bool>true</bool> </edit> <edit name="hinting" mode="assign"> <bool>true</bool> </edit> <edit name="autohint" mode="assign"> <bool>false</bool> </edit> <edit name="hintstyle" mode="assign"> <const>hintfull</const> </edit> </match>
可以測試的字型的各個內容。例如,<test>
元素可測試字型系列 (如範例中所示)、字型間隔、間距、字型格式以及其他。完全棄用 <test>
時,系統會將所有 <edit>
元素套用至每個字型 (全域變更)。
- 規則 1
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias>
- 規則 2
<alias> <family>serif</family> <prefer> <family>Droid Serif</family> </prefer> </alias>
- 規則 3
<alias> <family>serif</family> <accept> <family>STIXGeneral</family> </accept> </alias>
範例 21.2 「別名和系列名稱取代」中的規則可產生已設定優先順序的系列清單 (PFL)。系統會根據元素執行不同的動作:
將此片段放置在一起,當片段按規則 1 - 規則 2 - 規則 3 的順序出現並且使用者要求 「Alegreya SC」 時,便會建立如表格 21.1 「從 fontconfig 規則產生 PFL」中所述的 PFL。
在 Fontconfig 的度量中,系列名稱具有最高優先順序,高於樣式、大小等其他模式。Fontconfig 會檢查目前在系統上安裝了哪個系列。如果已安裝 「Alegreya SC」,則 Fontconfig 會傳回此名稱。如果未安裝,則系統會檢查 「Droid Serif」 等。
請小心。在變更 Fontconfig 片段的順序時,Fontconfig 可能傳回不同的結果,如表格 21.2 「從變更了順序的 fontconfig 規則產生 PFL 的結果」中所述。
將 <default>
別名視為此群組的分類或包含 (如果未安裝)。如範例所示,<default>
應該一律優先於該群組的 <prefer>
和 <accept>
別名。
<default>
分類不限於一般別名 serif、sans-serif 和 monospace。如需複雜的範例,請參閱 /usr/share/fontconfig/conf.avail/30-metric-aliases.conf
。
範例 21.3 「別名和系列名稱取代」中的下列 Fontconfig 片段會建立 serif
群組。當前一種字型未安裝時,此群組中的每個系列可取代其他系列。
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias> <alias> <family>Droid Serif</family> <default> <family>serif</family> </default> </alias> <alias> <family>STIXGeneral</family> <default> <family>serif</family> </default> </alias> <alias> <family>serif</family> <accept> <family>Droid Serif</family> <family>STIXGeneral</family> <family>Alegreya SC</family> </accept> </alias>
優先順序由 <accept>
別名中的順序提供。類似地,可以使用較強的 <prefer>
別名。
範例 21.4 「別名和系列名稱取代」擴展了範例 21.2 「別名和系列名稱取代」。
- 規則 4
<alias> <family>serif</family> <accept> <family>Liberation Serif</family> </accept> </alias>
- 規則 5
<alias> <family>serif</family> <prefer> <family>DejaVu Serif</family> </prefer> </alias>
範例 21.4 「別名和系列名稱取代」中擴展的組態將導致下列 PFL 演變:
如果同一個一般名稱存在多個
<accept>
宣告,則最後剖析的宣告「「勝出」」。若有可能,在建立泛系統組態時不要在使用者(/etc/fonts/conf.d/*-user.conf)
之後使用 <accept>。
如果同一個一般名稱存在多個
<accept>
宣告,則最後剖析的宣告「「勝出」」。若有可能,在泛系統組態中不要在使用者之前使用
<prefer>。對於相同的一般名稱,每個
<prefer>
宣告會覆寫<accept>
宣告。如果管理員不僅希望使用者能使用<prefer>
,還想允許其使用<accept>
,就不應該在泛系統組態中使用<prefer>
。另一方面,因為使用者通常都是使用<prefer>
,這種做法應該不會產生任何不利影響。我們還發現在泛系統組態中使用<prefer>
的情況。
21.3 適用於管理員的 GNOME 組態 #
21.3.1 dconf
系統 #
系統使用 dconf
管理 GNOME 桌面的組態。dconf 是依階層結構化的資料庫或登錄,可讓使用者修改其個人設定,並可讓系統管理員為所有使用者設定預設值或強制值。dconf
取代了 GNOME 2 的 gconf
系統。
使用 dconf-editor
可透過圖形使用者介面檢視 dconf 選項。使用
dconf
可透過指令行存取和修改組態選項。
GNOME Tweaks
工具提供易於使用的使用者介面,其中包含不屬於一般 GNOME 組態的其他組態選項。從 GNOME 應用程式功能表或在指令行中使用 gnome-tweak-tool
可啟動該工具。
21.3.2 泛系統組態 #
在 /etc/dconf/db/
目錄中可設定全域 dconf
組態參數,其中包括 GDM 的組態或針對使用者鎖定特定的組態選項。
我們以下面的程序舉例說明如何建立泛系統組態:
在
/etc/dconf/db/
中建立以.d
結尾的新目錄。此目錄可包含任意數量的組態選項文字檔案。在此範例中,建立含有以下內容的檔案/etc/dconf/db/network.d/00-proxy
:# This is a comment [system/proxy/http] host='10.0.0.1' enabled=true
將新組態指令剖析為 dconf 資料庫格式:
tux >
sudo
dconf update
建立
/etc/dconf/profiles/user
檔案,以將新network
組態資料庫新增至預設使用者設定檔。然後新增以下內容:system-db:network
/etc/dconf/profiles/user
檔案是將要使用的 GNOME 預設設定。在環境變數DCONF_PROFILE
中可定義其他設定檔。選擇性:若要鎖定使用者的代理組態,請建立
/etc/dconf/db/network/locks/proxy
檔案。然後將含有不能變更的關鍵字的一行新增至此檔案:/system/proxy/http/host /system/proxy/http/enabled
您可以使用圖形 dconf-editor
建立包含一個使用者的設定檔,然後使用 dconf dump /
列出所有組態選項。之後便可將組態選項儲存在全域設定檔中。
https://wiki.gnome.org/Projects/dconf/SystemAdministrators 中提供了全域組態的詳細描述。
21.3.3 更多資訊 #
如需詳細資訊,請參閱 http://help.gnome.org/admin/。
21.4 使用 SUSE Prime 在 Intel 和 NVIDIA Optimus GPU 之間切換 #
SUSE Prime 是一款用於在內建 Intel 圖形處理單位 (GPU) 和配有 NVIDIA「可切換圖形」Optimus 技術的 NVIDIA GPU 之間切換的工具。Optimus 提供了一種可在內建 Intel GPU 和獨立 NVIDIA GPU 之間輕鬆切換的機制。專為在省電模式下或以最佳效能執行筆記型電腦而設計:使用 Intel GPU 可省電,使用 NVIDIA GPU 可支援 3D 應用程式。
SUSE Prime 只能在執行 X11 (而不是 Wayland) 的系統上工作。如果您的系統執行 Wayland,您必須將其停用,並退回到 X11 (如果您希望使用 SUSE Prime) (請參閱第 21.4.1 節 「先決條件」)。
21.4.1 先決條件 #
/etc/X11/xorg.conf.d
目錄中不能有 /etc/X11/xorg.conf
檔案,也不能有作用中「ServerLayout」、「Device」或「Screen」區段的組態檔案。
SUSE Prime 僅適用於 X11。請使用 loginctl
指令查看您的系統是使用 X11 還是 Wayland:
tux >
loginctl SESSION UID USER SEAT TTY 2 1000 tux seat0tux >
loginctl show-session 2|grep Type Type=x11
如果您的系統使用 Wayland,請編輯 /etc/gdm/custom.conf
並取消註解 WaylandEnable=false
將其停用。然後重新開機。
21.4.2 安裝和使用 SUSE Prime #
您的 NVIDIA 圖形卡應已安裝且正常工作。如果沒有,請參閱第 21.4.3 節 「安裝 NVIDIA 驅動程式」。
安裝 suse-prime 套件:
tux >
sudo
zypper install suse-prime
若要切換 GPU,請執行以下指令之一,然後登出並重新登入:
tux >
sudo
prime-select inteltux >
sudo
prime-select intel2tux >
sudo
prime-select nvidia
如果是 modesetting 驅動程式,請使用 intel
驅動程式。intel2
適用於使用
xf86-video-intel 驅動程式的系統。您可以透過安裝和執行 inxi取得此資訊:
tux >
inxi -G
Graphics: Device-1: Intel Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
Display Server: x11(X.org 1.20.1 ) drivers: modesetting (unloaded: fbdev, vesa)
Resolution: 1920x1080@60.00hz
OpenGL: renderer: Mesa DRI Intel Haswell Desktop version: 4.5 Mesa 18.2.8
哪個 GPU 目前處於作用中狀態?
tux >
sudo
/usr/sbin/prime-select get-current Driver configured: intel
21.4.3 安裝 NVIDIA 驅動程式 #
如果您需要識別 NVIDIA 卡以便瞭解要使用哪個驅動程式,請執行以下指令:
tux >
/sbin/lspci | grep VGA
依照以下步驟使用 Zypper 安裝驅動程式。
列出可用的驅動程式套件:
tux >
sudo
zypper se nvidia
然後為您的 NVIDIA 圖形卡安裝驅動程式:
tux >
sudo
zypper se packagename