X11/Print 指南

| 這是 列印版本 的 X11 指南 當你列印或預覽此頁面時,你將不會看到此訊息或任何不屬於書籍內容的元素。 |

本書,即華夏公益教科書 X11 指南,是關於X 視窗系統的。本書的目標讀者是 X11 使用者。
X11 是大多數Unix 或類 Unix 系統的圖形環境,包括*BSD 和GNU/Linux;它提供對螢幕、鍵盤和滑鼠的訪問。X11 是 Unix 和 Linux 的圖形驅動程式。你是否在這些系統上使用Firefox、OpenOffice.org、GNOME、GIMP 或KDE?如果是,那麼你就是 X11 使用者。
本書是關於X 視窗系統的。有些使用者將其描述為 Unix 和 Linux 的圖形驅動程式。
本章將解釋 X11 的基礎知識,包括
- 為什麼會有如此多的視窗管理器和桌面環境?
- 什麼是控制檯,X 如何提供對它的訪問?
- X 伺服器和 X 客戶端的目的是什麼?
- 不同的 X 客戶端是否可以互操作?

大多數 Unix 和 Linux 發行版都提供命令列和 X 視窗系統。在Mac OS X 中,“X”是版本號“十”;但是,蘋果和其他方為 Mac OS X 提供了 X11,這使你能夠同時使用 X11 和原生 Macintosh 視窗系統。
然而,僅僅因為許多系統都提供 X 視窗系統,並不意味著它看起來總是相同。一些 X 使用者使用 GNOME 桌面環境,一些使用 KDE 桌面環境。有些使用者在使用 GNOME 和 KDE 程式時使用 Xfce 桌面環境。這並不意味著所有 *BSD 使用者都使用 GNOME,所有 Linux 使用者都使用 KDE;相反,*BSD 和 Linux 使用者都分為使用 GNOME 的使用者、使用 KDE 的使用者、使用其他環境的使用者以及不執行 X 的使用者。
有其他華夏公益教科書,使用 GNOME 和使用 KDE,它們記錄了這兩個環境。
有許多不同的視窗管理器 可用於 X。大多數視窗周圍都有裝飾,這些裝飾提供了一些功能,例如移動、關閉、調整大小以及其他組織視窗的方式。但是,這些裝飾在每臺執行 X 的計算機上並不相同。
視窗管理器是那些繪製這些裝飾的程式。大多數視窗管理器都繪製標題欄,但有些則不繪製。有些視窗管理器不製作任何裝飾,而是提供選單或按鍵來管理視窗。有些視窗管理器允許你重疊視窗、在視窗之間切換以及暫時隱藏視窗。
有些視窗管理器比 GNOME 和 KDE 都要古老,一些使用者繼續喜歡輕量級的視窗管理器,而不是那些佔用更多記憶體和計算資源的重量級桌面環境。許多 X11 使用者正在執行Metacity,即 GNOME 視窗管理器,或KWin,即 KDE 視窗管理器。
X 的與眾不同之處在於它提供了許多可供選擇的視窗管理器。(本書列出了至少 20 個視窗管理器。)作為使用者,*您*可以選擇要安裝、配置和使用的視窗管理器。您可以擁有自己的自定義環境,除非您無法安裝或配置您想要的視窗管理器。
但是,雖然 X 只允許一個視窗管理器,但它允許多個視窗。與 Mac 或 Windows 不同,X11 沒有提供標準介面或配色方案,因此每個視窗可能會以不同的方式繪製其選單、捲軸和按鈕。至少視窗裝飾在每個視窗上將是相同的。例如,可以在一個 X 伺服器上同時執行 Firefox 和 OpenOffice.org,以及來自 GNOME 和 KDE 的程式,因為每個程式都有自己的視窗或多個視窗。但如果您正在執行 Metacity,那麼您就不能同時執行 KWin,因為這兩個都是視窗管理器,而不是桌面環境。

在內部,X 視窗系統有一個特殊的協議 - X 協議的版本 11。這個協議的作用是為像 Firefox、OpenOffice.org、Nautilus 和 Konqueror 這樣的程式提供控制檯訪問。
每臺家用電腦或工作站都有一臺控制檯,它包括一個螢幕、滑鼠和鍵盤。事實上,一些控制檯有多個螢幕和多個輸入裝置,比如兩個滑鼠或一個滑鼠和一個觸控板。通常,Unix 核心只提供一個控制檯終端。核心載入一個純文字影片驅動程式和一個鍵盤驅動程式,並建立一個純文字終端,適合執行命令列,例如Bourne shell 和一些純文字程式,比如vi 和NetHack。
如果我們想要繪製圖形或使用滑鼠,我們必須執行一個知道如何做到這一點的程式。我們啟動一個名為X 伺服器的 X11 程式。它載入一個圖形影片驅動程式、一個鍵盤驅動程式和一個滑鼠驅動程式。然後,X 伺服器允許程式建立一個視窗。視窗是一個矩形區域,程式出現在其中;人們可以在視窗中輸入和點選。X11 允許程式共享控制檯,因為它允許螢幕上有多個視窗。(例如,一個人可能有兩個 Firefox 視窗和一個 OpenOffice.org 視窗開啟。)這與 Mac 和 Windows 的功能相同。
當您啟動 X 伺服器時,它會將螢幕更改為灰色並建立一個滑鼠游標。然後它等待。就像一個 web 伺服器等待 web 瀏覽器連線,或者一個 ssh 伺服器等待遠端登入,X 伺服器等待 X 客戶端連線。X 客戶端是一個程式,比如 Firefox 和 OpenOffice.org,它想要在螢幕上建立一到多個視窗。
與 Mac 或 Windows 不同的是,X 伺服器可以接受網路連線。當您在一臺計算機上使用 X 伺服器時,您可以遠端登入到另一臺計算機,然後要求它連線到您的 X 伺服器。這樣您就可以看到和使用其他計算機上的程式,即使這些計算機在不同的作業系統上使用 X。
當一個 X 客戶端連線到 X 伺服器(在同一臺或不同的計算機上)時,它會使用X 協議的版本 11。這就是客戶端告訴伺服器繪製什麼的方式,而伺服器告訴客戶端鍵盤和滑鼠輸入是什麼。許多 X 客戶端永遠不需要了解 X 伺服器的硬體或作業系統,因為 X 伺服器控制著控制檯。像 Firefox 和 OpenOffice.org 這樣的客戶端只需要瞭解 X 協議。
X11 程式共享剪貼簿和字型,但有時它們沒有太多其他共同之處。這導致了不僅在外觀上,而且在功能上也存在不相容性:應用程式之間的拖放有時是不可能的,並且剪貼簿的使用不一致。
現在,隨著freedesktop.org 等機構的努力,一些不同桌面環境的程式可以進行合作。桌面環境,如 GNOME 和 KDE,以及不太常用的環境,如 Xfce,提供了可以很好地相互協作的應用程式。這些努力的結果包括
- 使用剪貼簿的標準規則
- 視窗管理器和應用程式之間的合作
- GNOME、KDE 和其他視窗之間的拖放
- 對 X 伺服器的改進
您會做
$ XFree86 -configure $ Xorg -configure
或
$ xf86cfg $ xorgcfg
特別是對於 XFree86 4.0 或 Xorg,"xf86config" 和 "xorgconfig" 指令碼已經過時(除非您有舊硬體)。
這將建立您的 XF86Config 或 xorg.conf 檔案。
如果您使用Debian,您可以在重新配置 xserver-xorg 包時建立一個新的配置檔案。執行它將覆蓋您當前的配置,因此請建立備份副本,例如
cp /etc/X11/xorg.conf /etc/X11/xorg.conf.new.backup
使用以下命令重新配置:
dpkg-reconfigure xserver-xorg
- 通常,如果您想讓 X 正常執行,您首先要做的就是關閉它。通常可以使用 ctrl-alt-backspace 來完成此操作,但有時 KDM/GDM 會重新啟動(登入管理器)。按下 ctrl-n 或其他鍵進行控制檯登入。
- 以 root 使用者身份登入並輸入 "init 3" 以進入執行級別 3。這將允許您安裝圖形驅動程式。
- 如果您使用的是 opensuse,您應該執行 sax2,或者如果 sax2 不起作用,則使用非加速 x 的選項,即 sax2-vesa。
- 如果您有 nvidia 顯示卡,它們有一個 x 配置指令碼。命令是 nvidia-xconfig,開始輸入 "nvidia" 並兩次按下 tab 鍵。如果您沒有得到任何結果,則需要安裝圖形驅動程式。
如果您有 Opensuse,您可能會從 Novell 的 Bugzilla 團隊獲得幫助。他們可能無法立即解決問題,但您會發現,無論是由於您的努力還是其他人,這些問題在以後的版本中都得到了修復。
要手動配置幾乎任何東西,請搜尋 gentoo 或 gentoo wiki。對於這個主題,http://www.gentoo.org/doc/en/xorg-config.xml 應該很有用。
從參考實現到 Xorg 6.9,X11 使用自己的 "imake" 構建系統。客戶端、伺服器和庫在一個構建樹中。(只構建樹的一部分非常困難;必須構建整個樹。)一些東西,比如 Mesa 和 Freetype,被修改為可以選擇成為樹的一部分。
Xorg 7.0 用一組基於 GNU autoconf 構建系統的模組取代了它。這建立了一個複雜的包和依賴關係系統。同時實現 Xorg 6.9rc1 和 Xorg 7.0rc1 的兩個系統的困難導致了第一個候選版本釋出的延遲。
為了使用 imake 構建 Xorg,您首先需要下載並解壓縮原始碼包。Xorg 6.9rc1 的程式碼包名為xorg-x11-6.8.99.901.tar.bz2可以從這裡獲得。現在 Xorg 6.9 和 7.0 的最終版本已經可用,您可以使用映象列表這裡找到它們。
構建系統的粗略概述
- 建立一個 "host.def" 檔案(可選)。
- 執行 "make World" 以配置和構建樹。
- 執行 "make install" 和 "make install.man" 以安裝所有內容。
您可以使用 "host.def" 檔案自定義構建。如果您不建立它,那麼您將使用預設設定,這些設定應該已經針對您的作業系統進行了調整。
檔案xc/BUILD更詳細地描述了構建過程。
是的,您必須構建整個樹才能構建其中的一部分。唯一的例外是,有時您可以執行僅伺服器或無伺服器構建。請參閱我們關於#構建靜態伺服器的部分,以及xc/config/cf/xorgsite.def.
在以下示例中,root 已授予我們對/usr/local/src的寫入許可權。我們下載了 Xorg 6.9 版本候選 1(/usr/local/src/xorg-x11-6.8.99.901.tar.bz2).
)。我們已經安裝了 Xorg 6.8.2。我們正在構建期間執行它,因此我們有多個 xterm 用於在其中輸入 shell 命令。
使用“xterm”,將原始碼解壓縮到/usr/local/src,建立/usr/local/src/xc:
$ cd /usr/local/src $ bzcat xorg-x11-6.8.99.901.tar.bz2 | pax -rv
。正如xc/BUILD解釋的那樣,我們可以使用lndir建立指向原始碼的符號連結的影子樹。(這可以防止物件出現在原始碼樹中。)由於“lndir”是 X 的一部分,並且我們已經安裝了 Xorg 6.8.2,因此我們可以執行“lndir”。
$ mkdir xcbuild $ cd xcbuild $ lndir ../xc
請注意,當前目錄是/usr/local/src/xcbuild。現在我們將跳過建立config/cf/host.def並使用預設配置。現在是呼叫 Makefile 的時候了。我們必須執行make World,因為沒有其他正確的方法來配置和啟動構建。如果我們執行 Bourne shell
$ make World > World.log 2>&1
如果我們執行 C shell,那麼上面的命令是make World >& World.log. |
執行“make”的“xterm”現在很忙。為了檢視日誌,我們在第二個 xterm 中執行“tail”。
$ cd /usr/local/src/xcbuild $ tail -f World.log
最終,日誌會宣佈 Xorg 的構建已完成。
如果我們需要重新啟動構建(例如,在發生錯誤後),那麼我們不想清理樹。一個make World配置樹,清理樹並啟動構建。我們可以使用以下命令重新啟動構建make Everything或make;參見xc/BUILD瞭解詳細資訊。 |
我們安裝(到預設的/usr/X11R6,因此覆蓋了大多數 Xorg 6.8.2)。
$ sudo make install $ sudo make install.man
注意
- 如果我們的系統上沒有“sudo”工作,那麼我們將使用“su”。
- 可以在執行安裝之前退出 X11。另一種選擇是在 X11 執行時覆蓋大部分 X11。這可以工作,但稍微不安全一點。
如果需要,退出 X 並執行xorgcfg建立配置檔案。
可以修改樹以僅構建靜態 X 伺服器。如果您需要從樹的較新版本中獲得更好的硬體支援,這將很有用。此外,這跳過了構建庫、客戶端和單獨的伺服器模組。(X11 協議非常穩定,因此較新的伺服器可以與較舊的庫和客戶端一起使用。)
OpenBSD 提供了一個示例host.def。他們的示例host.def是下一個場景的基礎。如果您有靜態構建 X 伺服器的理由,那麼您將執行類似於下一個場景的操作。
場景:我們已經安裝了 Xorg 6.8.2。我們需要 Xorg 6.9rc0(版本候選 0)中更好的“ati”驅動程式,但我們需要跳過大部分 6.9rc0 樹以避免錯誤。
解決方案:我們將靜態構建一個 6.9rc0 伺服器。
如果您使用“lndir”製作了一個影子樹,請在影子樹中建立像“host.def”和“X11Conf.h”這樣的檔案,而不是原始碼樹中。 |
在config/cf/host.def處的樹中建立此檔案。如果您有一個影子樹,請將其放在影子樹中。該檔案是
#define InstallEmptyHostDef #define BuildServersOnly YES /* * you may also restrict the drivers that are built by editing and * uncommenting the line below */ #define XF86CardDrivers wsfb ati #define UsbMouseSupport NO #define DoLoadableServer NO #define XnestServer NO #define XVirtualFramebufferServer NO #define XprtServer NO #define BuildGlxExt NO #define BuildGLXLibrary NO #define BuildGLULibrary NO #define BuildRenderLibrary NO #define BuildLBX NO #define BuildType1 NO #define BuildFreeType NO #define BuildXTrueType NO #define BuildSpeedo NO #define BuildFonts NO #define BuildXFree86ConfigTools NO
“XF86CardDrivers”行已更改為僅指定“wsfb”和“ati”。我們的驅動程式是“ati”。我們有一個用於避免高階硬體功能的第二個驅動程式,以防“ati”讓我們失望。“wsfb”驅動程式在 OpenBSD 上使用核心幀緩衝區而不是重新配置硬體。在 Linux 上,幀緩衝區驅動程式是“fbdev”。在 i386 硬體上,“vga”和“vesa”可能是不錯的選擇。使用以下行之一
#define XF86CardDrivers wsfb ati #define XF86CardDrivers fbdev ati #define XF86CardDrivers vga ati #define XF86CardDrivers vesa ati
現在啟動構建
$ make World > World.log 2>&1
構建最終會因某些“XlibConf.h”丟失而停止,因為我們的 host.def 正在跳過該步驟。(這是一個錯誤;Xorg 6.8.2 不需要“XlibConf.h”檔案。)該檔案可能是在構建 libX11 時生成的,而我們跳過了它。對於伺服器,我們實際上不需要它。在xc/lib/X11/XlibConf.h:
$ touch lib/X11/XlibConf.h
處建立一個空檔案。現在繼續構建
$ make Everything >> World.log 2>&1
最終,構建會完成。伺服器將出現在xc/programs/Xserver/Xorg處。由於此檔案是靜態連結的,因此它是唯一要安裝的檔案。我們安裝在/usr/X11R6/bin/Xorg69處,以補充我們安裝在/usr/X11R6:
$ cp -p programs/Xserver/Xorg /usr/X11R6/bin/Xorg69
處的 Xorg 6.8.2 安裝。
$ cd /usr/X11R6/bin $ chown root:wheel Xorg69 $ chmod a+xs Xorg69
現在我們需要測試伺服器。首先,如果我們現在正在執行 X,請退出 X 到控制檯。然後使我們的新伺服器設定為 root,以便它可以使用影片硬體使用Xorg69 -configure生成新的配置檔案,然後使用xinit -- /usr/X11R6/bin/Xorg69對其進行測試。如果它有效,請透過更改/usr/X11R6/bin/X
$ cd /usr/X11R6/bin $ rm X $ ln -s Xorg69 X
符號連結將 Xorg69 設定為預設伺服器。
我們可能希望chmod a-x /usr/X11R6/bin/Xorg來防止任何人使用舊的“Xorg”以及依賴於“Xorg69”驅動程式的新配置檔案。
啟動會話本章介紹如何啟動 X11 會話。
- 本章將回答以下問題
- 啟動 X11 的方法有哪些?
- 如何啟動 X11 和視窗管理器?
- 如何控制將啟動哪些視窗管理器和程式?
有沒有辦法使字型看起來更漂亮?
啟動 X11 的方法回想一下,X11 由一個X 伺服器和多個客戶端組成。如果只啟動 X 伺服器,您將獲得一個空白螢幕。需要的是一種方法來啟動 X 伺服器以及一些預設客戶端,例如視窗管理器。
首先,一些 Unix 控制檯提供純文字登入提示。在這種情況下,首先以普通方式登入以獲取您的 Unix shell,然後使用xinit或startx命令在您的 shell 中啟動 X 伺服器和預設客戶端。
其次,一些 Unix 控制檯具有圖形登入提示!在這種情況下,系統啟動指令碼已經啟動了一個 X 伺服器;一個名為顯示管理器的程式繪製了一個圖形使用者介面,讓您輸入使用者名稱和密碼。在這種情況下,當您登入時,您將立即開始使用 X11。
第三,某些系統正在使用非 X11 的圖形環境。例如,Mac OS X 具有其本地的Quartz系統。在 Mac OS X 中,您啟動X11.app程式,它是一個 X 伺服器,允許 X 客戶端出現在與其他 Mac 程式相同的桌面上。類似的程式存在於 Microsoft Windows(它不是 Unix 平臺)中。
xinit 和 startx$ startx
有一個名為startx的程式,它可以啟動 X11。它使用起來很簡單這將為您提供一些預設環境。但是,如果您想自定義預設環境,使用xinit可能會更容易。startx指令碼會查詢幾個檔案(, ~/.Xresources~/.Xmodmap
,…)並載入它們;它使用的檔案在每個系統上都不同,因此您可能需要閱讀系統上的startx指令碼以瞭解它做了什麼。相比之下,xinit程式只啟動一個 X 伺服器並執行一個~/.xinitrc
指令碼。不需要記住您的系統是否將其稱為“.Xresources”或“.xresources”或“.xrdb”;您只需在您的“~/.xinitrc”中指定您想要的確切行為即可。
在沒有 .xinitrc 的情況下使用 xinitthese will work $ xinit /usr/X11R6/bin/xterm $ xinit $(which xterm) this will NOT work $ xinit xterm
如果您破壞了您的“.xinitrc”,或者還沒有,那麼您可以啟動一個。例如
這將啟動一個 X 伺服器和一個名為“xterm”的程式,您可以使用它啟動更多 X 客戶端。最後一行失敗(即使“xterm”在您的 PATH 中),因為 xinit 假設它是一個引數,而不是一個程式。您必須在程式名稱中包含斜槓 /。
$ which startkde /usr/local/bin/startkde
如果您有 KDE,則可以找到您的startkde指令碼
$ xinit /usr/local/bin/startkde
然後您可以啟動 KDE
這將允許您使用 Konqueror 查詢您的“.xinitrc”並使用 Kate 編輯它。(瀏覽您的主目錄時,請在“檢視”選單中選中“顯示隱藏檔案”。)
$ xinit /bin/ksh: xinit: not found
如果您看到類似... 這樣的訊息,那麼您需要將/usr/X11R6/bin
新增到您的 PATH 環境變數中。
如何編寫 .xinitrc[編輯 | 編輯原始碼]如果您沒有用斜槓指定程式,那麼“xinit”將使用您的.xinitrc
$ xinit # starts .xinitrc $ xinit xterm # passes "xterm" as argument to .xinitrc
指令碼,該指令碼位於您的主目錄中。如果您沒有用斜槓指定程式,那麼“xinit”將使用您的在使用“xinit”之前,需要一個名為
$ cd # changes current directory to home directory $ ls -a # list all files, including dotfiles $ ls .xinitrc # list the .xinitrc file $ vi .xinitrc # edit .xinitrc using vi $ emacs .xinitrc # edit it using Emacs
“.xinitrc” 只是一個 Bourne shell 指令碼。您可以嘗試使用 sh .xinitrc 執行它,但如果尚未啟動 X 伺服器,則會失敗。您可以輸入命令,就像在 Unix shell 中輸入一樣。如果您不理解,請嘗試從以下示例開始。
這是一個簡單的單行“.xinitrc”示例
exec startkde
“startkde” 命令啟動 KDE 桌面環境。此命令不會在您退出 KDE 之前結束。通常情況下,shell 會等待 KDE 結束,然後執行下一個命令。此命令前面的 “exec” 字首告訴 shell 這是最後一個命令,因此 shell 不需要等待執行下一個命令。“exec” 在這種情況下是可選的。
這是一個更復雜的“.xinitrc”示例
ulimit -Sn 512 /usr/bin/mixerctl monitor.master=5,5 /usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace' case "$#" in 0) exec sh /etc/X11/xinit/xinitrc ;; *) session="$1" shift exec "$session" "$@" ;; esac # NOTREACHED exec /usr/X11R6/bin/xterm
第一行,“ulimit -Sn 512”,是一個 Bourne shell 命令,用於將開啟檔案“-n”的軟限制“-S”增加到 512。(使用 ulimit -a,或者如果您的 shell 不是 Bourne shell,請使用 sh -c 'ulimit -a' ,檢視您的預設限制。)下一個命令,/usr/bin/mixerctl monitor.master=5,5,將 OpenBSD 或 NetBSD 系統上的聲音音量設定為左右聲道均為 5。在其他 Unix 系統上,命令將有所不同。還可以新增許多其他命令。
第三行,“/usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace'”(或只是“xmodmap -e 'keycode 107 = BackSpace'”),調整鍵對映。對於只做少量調整的使用者來說,這可能比載入 .Xmodmap 檔案更容易。(您可以使用 xmodmap ~/.Xmodmap 載入這樣的檔案。)
其餘行構成一個 Bourne Shell “case” 語句。這些處理命令列引數以啟用以下內容
$ xinit gnome-session # start GNOME $ xinit startkde,GNOME # start KDE $ xinit fvwm,KDE# start window manager fvwm $ xinit xtermfvwm # start an xterm without a window manager
請注意,由於沒有任何程式包含斜槓,因此它們由“.xinitrc”指令碼處理,而不是直接由“xinit”處理。
xdm
[edit | edit source]示例~/.xsession:
. ~/.profile
managers=startkde,fvwm,wmaker
prompt="Welcome, $USER@$(hostname), select window manager:"
# miscellaneous setup
xmodmap -e 'keycode 107 = BackSpace'
test -f /usr/local/GNUstep/System/Makefiles/GNUstep.sh &&
. /usr/local/GNUstep/System/Makefiles/GNUstep.sh
manager="$(xmessage -buttons "$managers" -print -center "$prompt")"
test -z "$manager" && exec fvwm
exec "$manager"
製作螢幕截圖
[edit | edit source]用於轉儲 X 視窗影像的標準實用程式是xwd(1),xwd 生成一個 XWD 影像。它可以透過以下方式呼叫
xwd -root -out root.xwd
xwd 也可以用來轉儲使用滑鼠選擇或使用-id選項後跟相應的視窗 ID 選擇的單個視窗;有關更多資訊,請參見man 1 xwd [1]。當遠端執行時,xwd 非常有用,可以拍攝處於活動狀態的模態選單的螢幕截圖。GIMP 可用於將 XWD 檔案轉換為其他更常見的格式,例如 PNG;或者,命令列實用程式 xwdtopnm(Netpbm 實用程式套件的一部分)可用於將 XWD 檔案轉換為 PNM 格式,然後可以將其轉換為任何常見的格式,例如使用以下 管道
xwd | xwdtopnm | pnmtopng > screendump.png
也可以使用convert實用程式(此處提供)將 XWD 影像轉換為許多其他格式:convert root.xwd root.XYZ,其中 XYZ 是所需格式的典型檔名副檔名。
啟動程式
[edit | edit source]傳統的 Unix 啟動程式的方法是透過在命令列上輸入其名稱從 shell 中呼叫它。例如
$ emacs
在 X 視窗系統開始時,啟動 X11 客戶端的方法基本上相同。您始終需要開啟一個 XTerm,這樣您就可以輸入命令開啟 Emacs、Netscape 和其他 XTerm。當然,這意味著如果您關閉(或 xkill)一個 XTerm,您將“掛起”從它啟動的所有程式,從而導致它們突然退出並消失。因此,您必須記住保留啟動客戶端的 XTerm 開啟。
這種行為是前臺啟動程式的功能,這使得它依賴於 shell/終端視窗(xterm、rxvt 或其他)處於開啟和工作狀態。
要啟動多個獨立於 shell 視窗的視窗程式(即,在後臺),在每個命令的末尾新增一個和號
$ xclock &
在 shell 之外
[edit | edit source]一些視窗管理器添加了一個名為 minicli 的功能,用於 MINIature Command LIne。您從某些選單中選擇“執行命令”,然後鍵入程式的名稱,例如“emacs”。這解決了僅為了啟動某些程式而開啟額外的 XTerm(或 Konsole 等)的問題。但是,它引入了另一個問題:某些程式將錯誤訊息列印到終端,如果您想知道為什麼程式崩潰或沒有啟動,則可能需要檢索錯誤訊息。解決方案是記錄到某個檔案,例如~/.xsession-errors,當啟動您的會話時。大多數 X 的實現會自動執行此操作。
許多視窗管理器還允許從選單啟動程式。但是,不同的視窗管理器具有不同的配置方法。有些人試圖找到一個解決方案,這樣您就可以在不同的視窗管理器中使用相同的選單。GNOME 和 KDE 桌面環境當前使用一個通用的*.desktop檔案格式來表示選單項。
KDE 通常在螢幕左下角提供一個 K 選單。GNOME 通常在左上角提供“應用程式”之類的選單。這兩個環境都可以自定義。一些視窗管理器,如 twm 和 IceWM,允許您單擊桌面背景以召喚選單。
指定視窗幾何形狀
[edit | edit source]在 X 中,通常可以透過使用 -geometry 引數指定以下值語法來輕鬆設定程式視窗的大小和位置——
[{WIDTH}][x{HEIGHT}][{+-}{XOFF}[{+-}{YOFF}]]
XOFF或水平軸處理自上而下和反向方向;YOFF或垂直軸用於從左到右和反向方向。XOFF/YOFF 前面的加號 (+) 和減號 (-) 與原點的邊緣相關:+ 是距離左/上邊緣的畫素數;- 是距離右/下邊緣的畫素數。
xeyes 的示例
$ xeyes -geometry 100x100-37+50 &
—— 其中 xeyes 以 100x100 畫素的大小開啟,距離螢幕右側 37 畫素,距離螢幕頂部 50 畫素。和號 (&) 將程序置於後臺(將 xeyes 從終端中釋放)。
-geometry 引數既可以在 shell 中使用,也可以在 X 菜單系統和其他視窗環境的菜單系統中使用。
注意事項
[edit | edit source]設定視窗幾何形狀可能無法或不會對不識別規範的程式起作用,例如 Mozilla Firefox 和 Wine;Firefox 使用其自己的命令列設定,而 Wine 啟動多個視窗,其中至少有一個視窗不是 X 的本機視窗。
雖然大多數視窗管理器和桌面環境都支援該規範,但有些可能不支援。
{{TODO|todonote=描述如何使用網路。描述 Xlib}}
字型
[edit | edit source]當您的 X11 客戶端繪製文字時,它們使用 字型,這些字型是標準字元的圖畫,例如字母、數字和標點符號。最起碼,字型是一個 字形(也稱為 族),例如 Bitstream Vera Sans、Luxi Mono、Nimbus Roman No9 L 或 fixed。更具體地說,字型包括大小或樣式,例如 Bitstream Vera Sans Bold Italic 10 point。字型還分為三類,稱為 襯線(如 Nimbus Roman No9 L)、無襯線(如 Bitstream Vera Sans)和 等寬(如 Luxi Mono 或“fixed”)。
字型有多種格式,例如點陣圖、TrueType 和 PostScript。TrueType 字型是.ttf檔案。如果 X11 伺服器和客戶端位於不同的計算機上,那麼您可能在每臺計算機上安裝了不同的字型。
X11 客戶端可以用多種方式繪製文字
- 使用原始核心 X11 協議繪製文字。使用這種方法,X11 伺服器將載入並存儲字型的每個字元。因此,如果 X11 伺服器(帶有螢幕和鍵盤)和 X11 客戶端(帶有您的 Web 瀏覽器或其他視窗)位於不同的計算機上,那麼您必須在伺服器上安裝字型。伺服器將字元轉換為點陣圖並直立繪製它們,這意味著您無法旋轉它們。此外,伺服器從不為字型提供抗鋸齒功能。
- 使用 Xft 庫和 RENDER 擴充套件來繪製文字。使用這種方法,X11 客戶端將載入並存儲字型的每個字元。您必須在客戶端計算機上安裝字型。客戶端將字元轉換為幾何形狀。它將形狀分解為基本形狀,例如三角形和梯形,然後將它們傳送到伺服器。伺服器繪製形狀並可選地提供抗鋸齒功能,這將使字型的外觀更平滑。您也可以旋轉這些形狀。
- 使用客戶端庫(例如 libart_lgpl 或 SDL_ttf)繪製文字。雖然 libart_lgpl 是一個向量圖形庫,但 SDL_ttf 是一個庫,用於繪製使用跨平臺 Simple DirectMedia Layer 的程式的文字。通常,這些庫會載入幾何形狀,然後將它們繪製到點陣圖中,可能具有抗鋸齒和旋轉功能,然後再將它們傳送到 X11 伺服器,就好像 X11 伺服器對文字一無所知一樣。這些庫也可以像 Xft 一樣使用 RENDER。
第一個 X11 客戶端使用核心 X11 協議來繪製文字,因為這是唯一的選擇。但是,現在有幾個客戶端使用 Xft。由於 GTK+ 和 Qt(幾個應用程式背後的工具包,包括所有 GNOME 和 KDE 應用程式)切換到 Xft,因此大多數桌面(包括 Konqueror)上的許多程式現在使用 Xft。
舊版本的 Xft 1 有自己的配置方案。這裡描述的版本 2 使用fontconfig 進行配置。由於 fontconfig 獨立於 X11,因此存在像fc-list 這樣的程式,它們列出可供 X11 程式(如 Konqueror)使用的字型,但它們本身不使用 X11。一個簡單的終端命令來列出可用字型是
$ fc-list | sort | less
預設情況下/etc/fonts/fonts.conf允許您選擇性地建立一個自定義檔案~/.fonts.conf用於您的自定義字型設定。
一些自定義包括
- 您可以新增包含字型的其他目錄。Fontconfig 會遞迴搜尋目錄。如果您有一個包含.ttf檔案的資料夾,那麼您只需將其新增到~/.fonts.conf;您不需要編寫fonts.scale或任何其他此類檔案用於 fontconfig。
- 您可以指定其他字型來搜尋晦澀字元。如果您在這些引號“→”之間看不到右箭頭,那麼在搜尋用於繪製此句子的字元時沒有找到右箭頭字元。實際上,與 Xorg 一起提供的 Bitstream 和 Luxi 字型以及來自 ghostscript 的 Nimbus 字型沒有該字元,但來自 ghostscript 的“Standard Symbols L”字型包含一個右箭頭。
但是,~/.fonts.conf使用嚴格的 XML 語法。您必須宣告<?xml version="1.0"?>在檔案開頭,並且您必須將檔案中的所有其他內容放在<fontconfig>和</fontconfig>標籤之間,否則它將無法工作。
這是一個示例檔案,展示瞭如何執行這兩個自定義
<?xml version="1.0"?><fontconfig> <dir>/usr/local/share/ghostscript/fonts</dir> <alias> <family>sans-serif</family> <prefer><family>Standard Symbols L</family></prefer> </alias> <alias> <family>serif</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> </fontconfig>
新增字型目錄很簡單:使用<dir>/full/path</dir>。上面的示例添加了/usr/local/share/ghostscript/fonts,它在某些計算機上是 Ghostscript 字型(包括 Standard Symbols L)的位置。
將 Standard Symbols L 新增到首選字型列表中,以便我們始終能夠繪製右箭頭“→”,這更加困難。假設您已將 Konqueror Web 瀏覽器設定為使用 Luxi Serif 顯示網頁。然後,您載入了一些包含一些右箭頭的文字。當 fontconfig 無法在 Luxi Serif 字型中找到右箭頭時,它轉向通用字型名稱“serif”,它實際上是首選襯線字型列表的別名。
作為參考,以下是來自/etc/fonts/fonts.conf與 Xorg 6.9rc1 一起提供的。
<!-- Provide required aliases for standard names --> <alias> <family>serif</family> <prefer> <family>Bitstream Vera Serif</family> <family>Times New Roman</family> <family>Thorndale AMT</family> <family>Luxi Serif</family> <family>Nimbus Roman No9 L</family> <family>Times</family> <family>Frank Ruehl</family> <family>Kochi Mincho</family> <family>AR PL SungtiL GB</family> <family>AR PL Mingti2L Big5</family> <family>ï¼ï¼³ ææ</family> <family>Baekmuk Batang</family> <family>FreeSerif</family> </prefer> </alias> <alias> <family>sans-serif</family> <prefer> <family>Bitstream Vera Sans</family> <family>Verdana</family> <family>Arial</family> <family>Albany AMT</family> <family>Luxi Sans</family> <family>Nimbus Sans L</family> <family>Helvetica</family> <family>Nachlieli</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>AR PL KaitiM Big5</family> <family>ï¼ï¼³ ã´ã·ãã¯</family> <family>Baekmuk Dotum</family> <family>SimSun</family> <family>FreeSans</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Bitstream Vera Sans Mono</family> <family>Andale Mono</family> <family>Courier New</family> <family>Cumberland AMT</family> <family>Luxi Mono</family> <family>Nimbus Mono L</family> <family>Courier</family> <family>Miriam Mono</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>Baekmuk Dotum</family> <family>FreeMono</family> </prefer> </alias>
根據您的發行版,可能存在一個萬無一失的字型安裝程式 - 也可能不存在。無論如何,使用簡單的命令總是有效的。
要安裝新字型,只需下載字型檔案(例如“.ttf”檔案)並將它們放到正確的目錄中。對於帶有 fontconfig 的 Xft,您可以安裝哪些型別的字型以及在何處安裝,由預設配置檔案/etc/fonts/fonts.conf或/etc/fonts/local.conf或~/.fonts.conf中的額外配置決定。大多數發行版在/etc/fonts/fonts.conf中都有以下行
<dir>~/.fonts</dir>
這意味著您可以在您的主目錄中使用簡單的使用者許可權安裝新字型。要更新 fontconfig,您可以使用命令fc-cache。
舉個例子:假設您已將字型anicefont.ttf下載到您的桌面。開啟您最喜歡的終端或一個簡單的xterm,然後鍵入
cd mkdir .fonts cd .fonts cp ~/Desktop/anicefont.ttf . fc-cache
完成。您可以使用命令fc-list檢查字型是否已成功安裝(例如,使用sort和more對其進行分頁)並檢查您的字型的名稱:fc-list | sort | more。
視窗管理器是一個程式,它繪製視窗周圍的框架,並允許使用者移動、調整大小、最小化以及以其他方式管理視窗。與其他一些視窗環境不同,您可以為 X11 找到許多視窗管理器。
您也可以在沒有視窗管理器的情況下使用 X11。通常,您會編寫一個會話指令碼,該指令碼在“xterm”上以“-geometry”位置啟動。基於鍵盤的使用者可以啟動一個鍵盤快捷鍵守護程式,例如 xbindkeys,並透過 Xresources 幾何提示或使用 xdotool 之類的工具來管理視窗。
請參閱http://github.com/patrickhaller/no-wm上的資源
- 2wm Anselm Garbe 編寫的立體視窗管理器的初始版本。
- 3dwm 3D 工作空間管理器是 Niklas Elmqvist 和 Robert Karlsson 開發的一個合成視窗管理器。
- 4dwm 通常在執行 IRIX 的矽圖形工作站上使用的視窗管理器
- 9wm Plan 9 視窗管理器的模擬
- aegis 一個用 C++ 編寫的可指令碼化的視窗管理器(正在開發中)
- aewm 一個用 C 編寫的最小的 X 視窗管理器
- aewm++ 基於aewm,但用 C++ 重寫
- afterstep 一個堆疊視窗管理器是 BowMan 視窗管理器的延續... 基於fvwm
- ahwm Alex Hioureanu 開發的一個小型堆疊視窗管理器
- alloywm 基於 aewm 的堆疊式視窗管理器
- alptwm 基於 dwm 的一個小而快的視窗管理器
- amaterus 一個基於 GTK+ 的 堆疊式 視窗管理器
- amiwm 一個試圖讓您的顯示看起來和感覺像 Amiga Workbench 的 X11 視窗管理器
- anarchy 一個用 Scheme 寫的輕量級視窗管理器
- antico 一個基於 Qt 庫的快速簡單視窗管理器
- antiwm 一個最小的全屏鍵盤驅動視窗管理器
- asclassic 一個基於 afterstep 的經典視窗管理器
- awesome 一個高度可配置的下一代 動態 視窗管理器,主要面向高階使用者和開發人員
- awm Ardent 視窗管理器是 X 視窗系統的早期視窗管理器。
- azalea 一個基於 gnustep 的視窗管理器,基於 openbox3
- badwm 一個基於 evilwm 的視窗管理器
- beryl 一個 Xgl 加速的遺留合成視窗管理器,後來與 compiz 合併
- blackbox 一個小型快速高效的堆疊式視窗管理器,具有易於使用的選單。
- bluetile 一個動態視窗管理器
- blwm FreeBSD: "qvwm 的葡萄牙語衍生物,簡化以節省資源"
- braintop
- bspwm 一個使用樹狀間距的替代視窗管理器,更改由 bspc shell 命令觸發。
- calmwm
- clementine FreeBSD: "有標題欄、圖示化和樣式(不穩定)"
- clfswm
- compiz Xgl 加速的令人驚歎的模組化視窗管理器,它匹配 Apple 的 Expose,使用立方體作為四個桌面,並添加了像視窗淡出、透明 alt-tab 視窗選擇和在高速拖動時視窗扭曲這樣的整潔效果。安裝後,查詢快捷鍵。
- ctwm - Claude 的標籤式視窗管理器是 twm 的擴充套件,它提供了多個桌面支援和其他功能
- cwm 包含在 OpenBSD 中。優秀的程式碼庫,非常小的系統需求。OpenBSD: "cwm 具有幾個新穎的功能,包括搜尋視窗的能力。它具有非常簡單和有吸引力的美觀。”
- dtwm - CDE 視窗管理器
- dwemo
- dwm - 動態視窗管理器
- dxwm - DECwindows 工作站上使用的視窗管理器
- e16
- e17
- echinus
- eclipse
- ecomorph
- ede 包含一個視窗管理器,FreeBSD: "Equinox 桌面環境"
- efsane
- enlightenment 圖形效果比較多,OpenBSD: "Enlightenment 不僅僅是管理視窗,它提供了一個有用的、好看的圖形外殼來工作。”
- epiwm FreeBSD: "另一個快速、小巧、可配置的視窗管理器"
- euclidwm 一個極簡主義的平鋪式視窗管理器
- evilpoison
- evilwm X 視窗系統的一個輕量級極簡主義視窗管理器
- expocity FreeBSD: "一個具有 Expose(tm) 類似功能的 metacity 分支"
- exwm Emacs 的一個功能齊全的平鋪式 X 視窗管理器
- failsafewm
- firebox
- fluxbox — "看起來像 blackbox 並且處理樣式、顏色、視窗放置和類似的東西與 blackbox 完全相同(100% 主題/樣式相容)" http://fluxbox.org/ (包大小:681 KiB,加上它的依賴項 (OpenBSD 4.1))
- flwm 一個利用 FLTK 工具包的輕量級視窗管理器。
- framer
- fvwm F 虛擬視窗管理器 (F 的含義不確定),twm 的衍生物,外觀漂亮,虛擬桌面,但文字配置檔案晦澀難懂
- fvwm2 fvwm 的一個更新版本,OpenBSD: "Fvwm... 提供了一個虛擬/多個不重疊的桌面,視窗裝飾的 3D 外觀,形狀/彩色圖示.... 一個漂亮的按鈕欄可用於提供對常用功能或程式的便捷訪問。”
- fvwm95 感覺像 Windows 95 (類似於 fvwm2 的 AnotherLevel),OpenBSD: "它試圖模擬知名產品的好功能,而不會使常規 fvwm 程式碼膨脹。”
- fxwm
- golem OpenBSD: "設計目標是它快速輕便,以及可以以任何不會阻止第一個目標實現的方式進行自定義。”
- gwm 一個具有內建 Lisp 直譯器 (來自 Bull) 的通用視窗管理器
- gwml
- HackedBox FreeBSD: "Hackedbox 是一個基於 Blackbox 的小型快速視窗管理器"
- haze
- heliwm 一款記憶體佔用極小的緊湊型視窗管理器
- hpwm 惠普的這款視窗管理器提供3D外觀
- i3
- icewm 一款小型視窗管理器,可以透過編輯文字檔案或使用第三方工具進行配置,OpenBSD:“為“感覺”和速度而最佳化,而不是外觀。具有多個工作區、不透明的移動/調整大小、工作列、視窗列表、時鐘、郵箱、CPU、網路、APM 狀態。”
- integrity
- interfacewm
- ion OpenBSD:“Ion 是一種新型的視窗管理器,它為視窗管理帶來了類似文字編輯器、鍵盤友好的使用者介面。Ion 只將螢幕劃分為佔用整個螢幕的框架。”
- ion2
- ion3
- jwm Linux:“Joe 的視窗管理器”。http://joewing.net/programs/jwm/ 用在 Puppy Linux 中。
- kahakai 一款支援指令碼語言的視窗管理器(基於"waimea")
- karmen 一款簡單輕量級的視窗管理器,除了xlib之外沒有其他依賴項
- kwin KDE 的視窗管理器(以前稱為 kwm)
- larswm FreeBSD:“X 的平鋪式視窗管理器”
- lucca
- luminosity
- /lunchbox
- lwm FreeBSD:“一個輕量級的視窗管理器”
- maewm
- matchbox FreeBSD:“適用於低解析度螢幕的視窗管理器”
- mavosxwm 一款處於早期開發階段的最小化堆疊 視窗管理器
- MaXX Interactive Desktop;以前稱為“5dwm”。
- metacity 一個常用的 GNOME 視窗管理器
- miwm 用 C++ 編寫的微型視窗管理器
- mlvwm FreeBSD:“X11 的類似 Macintosh 的視窗管理器”
- monkeywm
- mosquito
- mpwm
- mswm
- multicursorwm
- musca
- mutter
- mvwm
- mwm Motif Window Manager 與 Motif 或 OpenMotif 一起提供,也與商業 Common Desktop Environment (CDE) 一起提供
- ncdwm
- novawm FreeBSD:“為 X 開發的視窗管理器,在速度、大小和風格方面都經過精心設計”
- olvwm - OPEN LOOK 虛擬視窗管理器為 olwm 添加了虛擬視窗
- olwm - Sun Microsystems 為 OpenWindows 提供的 OPEN LOOK 視窗管理器
- omegawm
- openbox OpenBSD:“Openbox 是一款符合標準、快速、輕量級、可擴充套件的視窗管理器。”
- orion FreeBSD:“用 Scheme 編寫的 X11 視窗管理器”
- oroborox
- oroborus OpenBSD:“Oroborus 是一款非常簡化的 X11 視窗管理器。它提供良好的預設鍵繫結、全鍵盤控制(除了滑鼠之外!),...”
- oswm
p, q, r, s, t
[edit | edit source]- parti
- pawm FreeBSD:“Puto Amo 視窗管理器”
- pekwm OpenBSD:“Pekwm 是 aewm++ 的一個分支,它包含了新功能,例如視窗分組(類似於 fluxbox/pwm)可配置的按鍵捕獲器、Xinerama 支援、畫素圖主題和可配置的按鈕。”
- perlwm
- phluid
- piewm OpenBSD:“這是 piewm,一個帶有“餅圖”(即圓形)選單的 tvtwm。”
- plwm
- plpwm
- pmwm
- pswm Sun Microsystems 的 PostScript 視窗管理器
- puppet 一款鍵盤驅動的視窗管理器,沒有視窗裝飾。用Java 編寫
- pwm OpenBSD:“PWM 是一款輕量級的 X11 視窗管理器,重點在於易用性。它是第一個實現“選項卡式框架”的視窗管理器。”
- pwm2
- pycawm
- pywm PyWM 小巧、快速且可擴充套件,使用 Python。它基於flwm。 http://www.freenet.org.nz/python/pywm/
- qlwm
- qtile
- qlwm OpenBSD:“一款利用 qt 保持小巧且易於維護的視窗管理器。”
- quarkwm
- qvwm OpenBSD:“Qvwm 是一款類似 Windows 95/98/NT 的視窗管理器...”
- ratpoison 類似於 GNU screen,一款不喜歡滑鼠的平鋪式視窗管理器(參見 Wikibook Using Ratpoison)
- rox
- rtl 西門子使用的平鋪式 視窗管理器
- sapphire FreeBSD:“小型視窗管理器”
- sawfish 一款高效且可配置的視窗管理器,曾經是 GNOME 的預設管理器,OpenBSD:“Sawfish 是一款可擴充套件的視窗管理器,使用基於 Lisp 的指令碼語言。”
- scrotwm
- scwm Scheme 約束視窗管理器
- sigmawm Sigma 視窗管理器
- sithwm 一款基於evilwm 的極簡主義視窗管理器,帶有選單和多個桌面
- skatoswm
- smallwm FreeBSD:“適用於低記憶體系統的視窗管理器,帶有標題欄和陰影” http://www.small-window-manager.de/
- spookwm
- stumpwm 旨在成為 ratpoison 的繼任者。用 Common Lisp 編寫,從頭開始設計,以便能夠定製。
- subtle 是一款另一個平鋪式視窗管理器,具有非常靈活和動態的佈局,支援視窗標記、滑鼠和鍵盤控制以及可擴充套件的狀態列。 http://subforge.org/projects/subtle
- sugar
- swm Solbourne 視窗管理器
- talwm
- tecwm
- tinywm FreeBSD:“荒謬的小型視窗管理器”
- toyd
- treewm OpenBSD:“從 README 中摘錄:... 除了使用者可以建立的客戶端視窗之外,還可以建立桌面,這些桌面本身可以包含視窗和桌面。”
- tritium
- trswm
- tsubasa
- tvtwm OpenBSD:“tvtwm 是 twm 的一個版本,它結合了虛擬桌面,類似於 vtwm 和 swm。”
- twindy
- twm 與 X11 一起提供的 Tab Window Manager
u, v, w, x, y, z
[edit | edit source]- UDE 是一款具有獨特設計(習慣它)的視窗管理器,由“Unix 桌面環境”專案開發 http://udeproject.sourceforge.net/
- ultimate 視窗管理器
- universalwm 是一款過時的視窗管理器,但由於其速度快,因此仍然很流行。
- unwimp
- uwm Ultrix 視窗管理器
- vtwm FreeBSD: “帶有虛擬桌面的 Twm,並提供可選的 Motif 風格功能”
- vuewm
- w9wm FreeBSD: “對 9wm 進行了一些修改,使其能夠提供虛擬螢幕”
- waimea OpenBSD: “它使用 Blackbox 影像渲染引擎(支援 Blackbox 樣式)並且可以使用 Xft 庫進行字型渲染(支援抗鋸齒字型)。”
- weewm FreeBSD: “速度快且超輕量級的視窗管理器,可以完全透過鍵盤控制”
- whim 是一款用 tcl 編寫的 多桌面 視窗管理器
- whimsy
- wimpwm
- windowlab FreeBSD: “一款用於 X11 的小型視窗管理器”
- windowmaker 是一款類似 NextStep 的視窗管理器,它與 GNUstep 配合得很好,並且擁有可配置的主題。
- wm 是一款簡單的標題欄視窗管理器
- wm2 是一款非常簡化的、小型、快速的視窗管理器
- wmaker
- wmfs 是一款 平鋪式 視窗管理器
- wmg FreeBSD: “一款基於 GTK 的小型 GNOME 相容視窗管理器”
- wmi OpenBSD: “WMI……試圖將 LarsWM、Ion、evilwm 和 ratpoison 的最佳功能整合到一個視窗管理器中……。WMI 是視窗管理器中的 vim……”
- wmii FreeBSD: “下一代 WMI 視窗管理器”
- wmx OpenBSD: “它基於 wm2……但取代了 wm2 的最小功能,它以最簡單的實現方式提供了許多傳統管理器的功能。”
- wwm 奇怪的視窗管理器
- xcompmgr
- xd640 是一款 堆疊式 視窗管理器
- xdswm
- xfce-wm 是名為 XFCE(無膽固醇桌面環境,它還包含一個工具欄和檔案管理器,並且使用的系統資源比 GNOME 或 KDE 少)的桌面環境的一部分,FreeBSD: “XFce 4 視窗管理器”
- xige xilicius 桌面環境
- xfwm 是一款 合成 視窗管理器
- xmonad 是一款用於 X 的平鋪式視窗管理器。 視窗會自動排列成平鋪式佈局,沒有間隙或重疊,最大限度地利用螢幕空間。 http://xmonad.org
- xpwm
- xswm
- xwem
- xwm
- yawm FreeBSD: “具有標題欄、圖示化、最大化、工作列、放置、時鐘”
- yeahwm 是一款 堆疊式 視窗管理器
- zwm 用 C++ 編寫,並根據 GNU 通用公共許可證提供
Xt 客戶端
[edit | edit source]
一些 X 客戶端是 Xt 客戶端,也就是說它們使用 X Toolkit Intrinsics。 這是一個將視窗劃分為稱為 部件 的較小視窗的機制,例如按鈕和選單。 可以使用 X 資源來配置這些部件。
例如,典型的 “xterm” 視窗包含一個捲軸和終端的模擬螢幕。 用於檢視手冊頁的 “xman” 程式在它的小型主螢幕上包含三個部件的按鈕。 透過使用 “手冊頁” 按鈕,你會獲得一個更大的視窗,其中包含幾個部件:選單按鈕、一個捲軸和一個包含手冊頁的文字框。
但是,GTK+ 和 Qt 等庫的開發人員已決定不使用這些內在機制。 因此,GTK+ 和 Qt 程式不可用 X 資源。
X 資源 是以特定語法寫入文字檔案中的設定,然後使用 xrdb 載入。
xrdb
[edit | edit source]要設定 X 資源,你需要將它們放在一些文字檔案中,例如這將為您提供一些預設環境。但是,如果您想自定義預設環境,使用xinit可能會更容易。startx指令碼會查詢幾個檔案(然後使用以下命令載入它:
$ xrdb -merge ~/.Xresources
“XTerm.resource” 和 “xterm.resource” 之間存在區別。
如果你想讓一個 xterm 使用 “GameTerm.resource” 資源而不是 “XTerm.resource” 資源,你應該使用以下命令啟動它:
$ xterm -class GameTerm
使用標準輸入的 xrdb
[edit | edit source]你也可以使用標準輸入來輸入資源。
xterm
[edit | edit source]
xterm 具有選單。 你必須按住 Control 鍵並使用滑鼠按鈕 1、2 或 3 點選。
政治歷史
[edit | edit source]- 本節需要檢查其準確性和細節。
X 共有 10 個版本,對應於客戶端和伺服器之間 10 個版本的協議。 然後出現了第 11 個版本,即 X11。 該版本保持了大量的新增內容,並一直使用到今天。
X11 規範和參考實現的控制權在多個組織之間傳遞:MIT X Consortium、X Consortium、Open Group 和 X.org。 作業系統供應商(主要是 Unix 和 VMS)會獲取參考實現,對其進行修改,新增適用於其作業系統的 X 伺服器,然後授予修改後的版本非自由許可證。 這些非自由版本會部署到伺服器和工作站上。
XFree86
[edit | edit source]隨著帶有廉價 Intel 386 處理器的家用電腦(在 Microsoft DOS 和 Windows 的幫助下)的普及,用於它們的廉價或免費的 Unix 實現(Minix、Xenix、Linux、FreeBSD、NetBSD)也開始普及。 因此,Thomas Roell 和 Snitily Graphics Consulting Service 建立了 X386 伺服器並將其捐贈給了 X11R5,即參考實現的 X 版本 11 第 5 版。 從那時起,XFree86 推出了帶有自由許可證的 X11 實現,因此名稱中包含 “Free”。 最終,XFree86 將埠新增到了 Alpha、PowerPC 和 SPARC 上。 XFree86 擴充套件到了多個免費和商業 Unix 變體,包括 Mac OS X 和 Cygwin。
與此同時,隨著 X11 的普及,一些人為此編寫了軟體,包括視窗管理器。參考實現包含“twm”,一個簡單的視窗管理器。一些人透過修改 twm 或從頭開始編寫了視窗管理器。其中許多視窗管理器,例如 fvwm、afterstep 和 windowmaker,都擁有免費許可證。這些許可證與 X11 或 XFree86 分開分發和維護。一些 Linux 發行版提供了其中一些許可證。
參考實現還包含 Xt(X 工具包)框架和使用該工具包的 Xaw(雅典娜)部件。Xaw 使用的原始黑白按鈕、捲軸和選單讓 Macintosh 和 Windows 使用者感到不滿意。因此,一些人制作了 Xaw3d 等變體,並將其作為 X11 的補丁分發。另一些人則拒絕 Xt 並製作了自己的部件,建立了 FOX、FLTK、GTK+ 和 Qt 等工具包。OpenOffice.org 仍然使用自己的部件。
開放組的 OS 供應商共同努力建立了 Motif 視窗管理器和部件工具包。在此基礎上,供應商們又建立了通用桌面環境。雖然 Motif 和 CDE 出現在一些商業 OS 發行版中,但它們擁有非自由許可證,因此許多 Linux 和 *BSD 使用者都避開了它們。隨著 Linux 和 XFree86 的發展,Motif 和 CDE 逐漸衰落。
基於 Qt 部件工具包的 K 桌面環境和基於 GTK+ 部件工具包的 GNU 網路物件模型環境成為 Motif 和 CDE 的免費替代方案。GNOME 和 KDE 開發人員鼓勵改進 XFree86,並透過 http://www.freedesktop.org 進行了合作。最終,XFree86 和 freedesktop.org 取代了 x.org,成為 X11 開發的主體。
其他工具包和視窗管理器也注意到了 freedesktop.org,並繼續與 GNOME 和 KDE 競爭。
開放組停止了 X11 參考實現的免費許可。他們後來重新引入了免費許可,但大多數 X11 開發已經轉移到 XFree86,而 XFree86 在很長一段時間內一直保持免費。
在 2004 年 2 月,XFree86 專案在 XFree86 4.4.0 中採用了從 MIT 許可證到 XFree86 許可證 1.1 的許可證變更,該許可證包含與原始 BSD 許可證類似的版權宣告,自由軟體基金會認為該宣告與 GPLv2 不相容。
這種許可證變更在 XFree86 核心開發者之間引起了爭議,並促使大多數 Linux 發行版和 OpenBSD 拋棄 XFree86,轉而使用一個分叉版本。最終,**X.Org 伺服器**成為了 X11 的官方參考實現。**X.Org** 的第一個版本,X11R6.7.0,從 XFree86 4.4 RC2 版本分叉出來,以避免 XFree86 許可證變更,同時合併了 X11R6.6 的變更。
大多數開源類 Unix 作業系統都採用了 X.Org 伺服器,取代了 XFree86,而且大多數 XFree86 開發者都遷移到了 X.Org。
雖然有多種桌面環境和視窗管理器導致了碎片化,但來自不同開發者和使用者社群的 X 伺服器和客戶端能夠很好地協同工作。X.Org 內部的開發工作穩定,並且桌面發行版之間對 X.Org 的使用依然牢固。
桌面和視窗環境之間的碎片化並非一定是壞事,因為它可以讓使用者擁有更多選擇,並根據不同的使用場景和不同的需求進行調整。
在某些用例中,X 已經被 Wayland 取代,Wayland 被用於 Sailfish 和 Tizen 移動作業系統以及 Hawaii 桌面環境。Wayland 在 GNOME、KWin(KDE)、Enlightenment 和 Mate 桌面環境以及 Fedora 發行版中也獲得了初步支援。
- XConsortium 手冊頁
- Xorg 手冊頁
- http://www.xfree86.org
- http://wiki.x.org
- The X Window System (LPIC101) LPIC101 認證
- X 視窗程式設計 C 語言介面到 X 客戶端
- Unix 指南 xterm 中的內容
- XFree86 和 Xorg 是開源軟體;您可以自由地複製、重新分發和修改它們。
- GNOME 和 KDE 有自己的書籍。

