X 視窗系統

X Window 系統（X Window System，也常稱為 X11 或 X，天視窗系統）是一種以點陣圖方式顯示的軟體視窗系統。最初是 1984 年麻省理工學院的研究，之後變成 UNIX、類 UNIX、以及 OpenVMS 等作業系統所一致適用的標準化軟體工具套件及顯示架構的運作協定。X Window 系統透過軟體工具及架構協定來建立作業系統所用的圖形使用者介面，此後則逐漸擴充套件適用到各形各色的其他作業系統上。現在幾乎所有的作業系統都能支援與使用 X。更重要的是，今日知名的桌面環境 ——GNOME 和 KDE 也都是以 X Window 系統為基礎建構成的。

由於 X 只是工具套件及架構規範，本身並無實際參與運作的實體，所以必須有人依據此標準進行開發撰寫。如此才有真正可用、可執行的實體，始可稱為實現體。目前依據 X 的規範架構所開發撰寫成的實現體中，以 X.Org 最為普遍且最受歡迎。X.Org 所用的協定版本，X11，是在 1987 年 9 月所釋出。而今最新的參考實作（參考性、示範性的實作體）版本則是 X11 Release 7.8（簡稱：X11R7.8），而此專案由 X.Org 基金會所領導，且是以 MIT 授權和相似的授權許可的自由軟體。

X 的 C/S 模式和網路透明性

X 能為 GUI 環境提供基本的框架：在螢幕上描繪、呈現影像與移動程式視窗，同時也受理、執行、及管理電腦與滑鼠、鍵盤的互動程式。不過，X 並沒有管轄到使用者介面的部份，而是由其他以 X 為基礎的實現體來負責，也因為如此，以 X 為基礎環境所開發成的視覺樣式非常地多；不同的程式可能有截然不同的介面呈現。

X 採用 C/S 的架構模型，由一個 X 伺服器與多個 X 客戶端程式進行通訊，伺服器接受對於圖形輸出（視窗）的請求並反饋使用者輸入（鍵盤、滑鼠、觸控式螢幕），伺服器可能是一個能顯示到其他顯示系統的應用程式，也可能是控制某個 PC 的影片輸出的系統程式，也可能是個特殊硬體。

X 的一大特點在於 “網路透明性”：應用程式（“客戶端” 應用程式）所執行的機器，不一定是使用者本地的機器（顯示的 “伺服器”）。X 中所提及的 “客戶端” 和 “伺服器” 等字眼用詞也經常與人們一般想定的相反，“伺服器” 反而是在使用者本地端的自有機器上執行，而非是在遠端的另一部機器上執行。

伺服器和客戶端之間的通訊協議的運作對計算機網路是透明的：客戶端和伺服器可以在同一臺計算機上，也可以不是，或許其架構和作業系統也不同，但都能執行。客戶機和伺服器還能夠使用安全連線在網際網路上安全地通訊。

為了使遠端客戶程式顯示到本地伺服器，使用者一般需要啟動一個終端視窗和到達遠端計算機的 telnet 或者 ssh，令其顯示到使用者計算機，（例如：在執行 bash 的遠端計算機上 export DISPLAY = 使用者的計算機：0）然後啟動客戶端。然後客戶端就會連線到本地計算機，並且遠端應用程式會顯示到本地螢幕並被本地輸入裝置所控制。與之對應，本地計算機上也可以執行一個連線到遠端計算機的小型代理程式，並在該端啟動與執行自有需求與指定的應用程式。

實際的遠端客戶端的例子有：圖形化管理遠端計算機；在遠端 UNIX 計算機上執行計算密集的模擬程式並把結果顯示到本地的 Windows 桌面計算機；用一套顯示器、鍵盤和滑鼠控制同時執行在多臺計算機上的圖形化軟體。

X 的設計原則

X 的設計原則，早在最初仍在麻省理工學院的階段（1984 年）就已經成形，由和兩人制訂出 X 最早的開發、強化、改進原則，原則大體如下：

除非沒有它就無法完成一個真正完整的應用程式，否則不用增加新的功能。
決定一個系統不是什麼和決定它是什麼同樣重要。與其去適應整個世界的需要，寧可使得系統可以擴充套件，如此才能以持續相容的方式來滿足新增需求
只有完全沒例項時，才會比只有一個例項來的糟。
如果問題沒完全弄懂，最好不要去解決它
如果可以透過 10％的工作量得到 90％的預期效果，應該用更簡單的辦法解決。（參見：更糟就是更好）
盡量避免複雜性。
提供機制而不是策略，有關使用者介面的開發實現，交給實際應用者自主。

之後，上述原則中的第一項原則在設計 X11 時被加以修改，修訂成：「除非已有真正的應用程式，真的需要 X 為其修訂、增訂等支援，否則不會為 X 增加新功能。」X 基本上一直遵循這些原則，參考實現的擴充套件及改進也是以此原則的角度來著手，也因為奉行上述原則，使至今的最新版 X 仍能與最初（1987 年）釋出的協定標準近乎完全相容。

使用者介面

X 刻意不去規範應用程式在使用者介面上的具體細節設計，這些包括按鈕、選單和視窗的標題欄等等，這些都由視窗管理器（window manager）、GUI 構件工具包、桌面環境（desktop environment）或者應用程式指定的 GUI（如 POS）等等的使用者軟體來提供，然而因為架構設計上保留了高度的彈性發揮空間，致使多年來 X 在 “基礎、典型、一般性” 的使用者介面上，也都有數目驚人的多樣性選擇。

在 X 的系統架構中，視窗管理器用於控制視窗程式的位置和外觀，其介面類似 Microsoft 的 Windows 或者 Macintosh（例如：KDE 的 KWin 或者 GNOME 的 Metacity），不過在控制機制上卻截然不同（例如：X 提供的基本視窗管理器 twm）。視窗管理器可能只是個框架（例如：twm），但也可能提供了全套的桌面環境功能（例如：Enlightenment）。

雖然不同的 X 使用者介面可以有很大的差距、差異，然而絕大多數的使用者在使用 X 時，多是用已經高度全套化的桌面環境，桌面環境不僅有視窗管理器，還具備各種應用程式以及協調一致的介面，目前最流行的桌面環境是 GNOME 和 KDE，此兩者已普遍使用於 Linux 作業系統上，而 UNIX 所用的標準桌面環境多是通用桌面環境 CDE，然而也有些 UNIX 也開始採行 GNOME。

此外，X 桌面環境及元件雖然極其多樣，但同時也需要保持相容性與互通性，關於此則有 freedesktop.org 積極與努力地維持各種不同 X 桌面環境的相容性，使相競態勢下仍不失 X 的相容本色。

實現

X 的標準實現是 X.Org 的參考實現。由於其許可證比較寬鬆，出現了大量自由的或者專有的實現。商業的 UNIX 商家傾向於採用參考實現並使之適應其硬體，例如高度定製並加入專有的擴充套件。

直到 2004 年，在自由的類 UNIX 系統上最常見的 X 變體是 XFree86。顧名思義，它源於 X 的 386 相容的 PC 機的移植，到了上個（20）世紀 90 年代末期成為 X 的技術創新的主要來源和 X 開發的事實標準。但是從 2004 年起，最流行的 X 伺服器是 XFree86 的分支 —X.Org 的參考實現。

雖然 X 一般和 UNIX 聯絡在一起，X 伺服器也能夠自然地存在於其他圖形環境。DEC／COMPAQ／HP 的 OpenVMS 作業系統用 X 加上 CDE 做為其標準桌面環境，稱為 DECwindows。蘋果公司的 Mac OS X v10.3（研發時的代號：Panther，美洲豹）包括 Apple X11，它基於 XFree86 4.3 和 X11R6.6，並能和 Mac OS X 更好地整合。

Microsoft 的 Windows 本身不包含對 X 的支援，但是有不少第三方的實現可用，其中有自由軟體如 Cygwin/X、Xming、WeirdMind 和 WeirdX，另外專有、專屬性的也有 Xmanager、X-Deep/32、、WiredX 和。它們多用於控制遠端 X 客戶端。

當 X 寄生在其他視窗系統（例如：Windows 或 Mac OS）時，X 系統一般是 “rootless，無根” 的，也就是說：宿主（主體）視窗系統擔當根視窗（背景和相關選單）並管理寄生（客體）的 X 視窗的位置。但是也有些伺服器，例如 Exceed，能夠在宿主系統上建立根視窗使得遠端客戶端能夠做為分離的視窗在其上顯示。

4.1 X 終端機

X 終端機（X Terminal）是做為僅執行 X 伺服器的瘦客戶機的專用硬體。該架構廣泛用於為了使多人同時使用同一個大型伺服器而構造終端。這也符合 MIT 的計劃的初衷。

X 終端搜尋網路，使用 X 顯示管理器產生允許其執行客戶機的主機列表。初始主機需要執行 X 顯示管理器。

專用的 X 終端機（硬體）現在已經不太常見了，現在經常使用個人計算機並搭配執行 X 終端機的實效模擬程式（Emulator）來完成相同的功能，過去（1990 年代初期）業界在推行 X 終端機時也將其稱為「窮人的 UNIX 工作站」。

X 的侷限和批評

在《》一書中有個章節為："X 視窗所造成的災禍（The X-Windows Disaster）"，該書用此整個章節的篇幅內容來討論 X 在 20 世紀 80 年代末到同世紀 90 年代初的問題與困擾。

5.1 影片硬體

5.1.1 PC

在 PC 世界裡，需要第三方硬體的驅動的非主流的個人計算機軟體往往不能支援所有為 Microsoft Windows 出品的裝置。X Window 也不例外，它的實現往往缺少較新（或者非常舊）的顯示卡高效驅動程式。

X.org 和 XFree86 這樣的開源 X 實現中，開發社群透過複用已有程式碼，可以很快更新改進驅動程式，從而能夠為較陳舊的或者很通用的硬體開發出高質量的驅動。

高效能圖形計算目前是頂級的圖形功能，一般由廠家透過專有驅動來實現，而且往往優先考慮是 Windows（最大的消費市場）。由於高效能影片市場的顯赫地位，一些硬體／驅動廠商會考慮透過將技術細節變為商業秘密或者將其中創新變為軟體專利，而這阻礙了開源驅動的實現。

5.1.2 其他裝置

在 PC 機之外的世界裡，很多 X 的實現是為非傳統裝置如 PDA 和手機而編寫（或者移植）的。這樣的實現必須提供為在此之上執行的平臺提供至少且必須的裝置支援。

5.1.3 效能

X Window 的 C/S 體系（主從式架構）設計在應用程式和影片硬體之間多加了一層軟體，導致繪圖效率下降，所以引起了一些批評。因此開發了若干擴充套件，在裝置和客戶機在同一個系統上時，透過在取得適當許可的情況下，以直接訪問裝置來改善這一問題。而在 Linux 上，一些影片驅動已經部分移入核心以提高效率。

5.1.4 穩定性

另一方面，X 也被批評為需要（或者提供）了過多的對硬體的直接訪問，從而影響了系統穩定性。行為不良的顯示卡驅動（有時也可能是應用程式）甚至能夠導致整個系統崩潰或者重啟；有時即使作業系統仍在工作，它也不能繼續渲染其顯示（這時除了重啟，缺乏好的恢復手段）。

根本上，目前所有的桌面 GUI 作業系統都提供某種對硬體的直接訪問，支持者認為市場已經證明為了提供圖形效能犧牲一點穩定性是值得的。或許將來隨著技術和使用者的演化這一平衡會有所變化。

5.2 使用者介面特徵

X 刻意不去規範使用者介面和程式之間大多數的通訊，導致出現了幾種非常不同的介面，同時程式之間協同困難；而客戶機之間的互操作規範 ICCCM 以難以正確實現而聞名。後來的標準化嘗試，如 Motif 和 CDE，也於事無補。長久以來這已經成為使用者和程式設計師的巨大的挫折的源頭。目前，程式的感觀一致性和通訊一般是透過為特定桌面環境或者構件工具箱程式設計來處理，這也避免了直接和 ICCCM 接觸。

X 缺乏良好的網路與透明的音效系統。當用戶對音效日益期盼時，各種不相容的音效子系統便出現了。過去，大多數程式設計師只好忽略網路問題，簡單地使用本地的並且是 OS 專用的音效 API。第一代客戶機 - 伺服器音效系統有 rplay 和 Network Audio System。而最近的努力產生了 EsounD（GNOME）和 ARts（KDE），而這也並非標準。而其他系統如 Media Application Server 則正在開發當中。

直到最近，X 也沒有好的顯示印表機所列印的內容（所見即所得）的解決方案。許多 X 客戶機完全用 PostScript 實現列印，而這與傳送到伺服器的幾乎整個是分離的。從 X11R6.3 起包含了 Xprint，此時客戶機已經不錯，但是伺服器實現還不行。而從 X11R6.8 起實現的質量已經很好，並且獲得了部件的支援。

5.3 網路

X 不能像 VNC 那樣把客戶端的通訊從一個伺服器卸下然後再附加到另一個上，但正在進行為 X 增加此功能的工作，另外還要實現透過 VNC 實現 X 伺服器的顯示。

X 伺服器和遠端客戶機之間的網路通訊使用明文的缺陷，讓攻擊者使用封包擷取程式就能夠截獲和閱讀它。這一缺陷一般可以透過在 SSH 通訊上使用 X 來解決。

裝置中立和客戶機與伺服器分離還帶來了一定開銷。X 的網路透明性要求客戶機和伺服器分別執行。在其早期，與同時的採取視窗系統嵌入作業系統這一方法的 Microsoft Windows 和 Mac OS 比較，這給獨立系統帶來明顯的效能影響。為了獲得可以接受的效能，推薦起碼要 4 到 8MB 的 RAM，但在 1990 年代之前，這被認為與 Windows 或者 Mac OS 相比太超過了。

當前版本的 Windows 和 Mac OS X Quartz 也包含了和 X 的客戶機／伺服器相類似的子系統劃分，其效能和資源需求同 X 加上 KDE 或者 GNOME 也類似。現在主要的消耗來自於客戶機和伺服器之間的網路往返延遲（非協議本身產生的滯後時間），應該透過應用程式的設計來改善。

X 的競爭者

X 在類 Unix 系統上幾乎完全佔據統治地位。但是仍然有人嘗試提供替代品和更多的選擇。過去曾經有昇陽的，但它遭到市場淘汰；還有 NeXT 的 Display PostScript，它最終轉變為蘋果公司的 Mac OS X 內的 Quartz。

應對對於 X 的批評的更前衛的嘗試有 Berlin/Fresco 和 Y Window System 這樣的完全替換。這些代用品被認為不值得采用，而任何不能做到與 X 向後相容的的替代品的可行性都被廣泛置疑。

歷史

7.1 前身

事實上，早在 X 出現前已有幾個點陣圖式的軟體顯示系統已經存在，例如帕洛阿爾託研究中心（施樂公司）提出的 Alto（1973 年）和 Star（1981 年）、蘋果電腦提出的 Lisa（1983 年）和麥金塔（1984 年）、在 UNIX 世界也有雅典娜工程（1982 年）和 Rob Pike 的 Blit 終端機（1984 年）。

X 從 1983 年之前稱為 W Window 系統的視窗系統中，推衍出它的名字當作是繼任者（在拉丁字母裡面 X 直接接在 W 後面）。W Window 系統是執行於 V 作業系統。W 使用一個支援終端機和圖形視窗的網路協定，而伺服器維護顯示的列表。

7.2 起源和早期的發展

X 起初是 MIT 於 1984 年的構想，當作為雅典娜工程的和 MIT 電腦科學實驗室的的共同研究。Scheifler 需要一個可以使用的顯示環境來對 Argus 系統除錯。雅典娜工程，是 DEC、MIT、和 IBM 之間的聯合計畫，用來提供給需要一個平臺獨立顯示系統，可把不同種類多個製造商之系統連結在一起，給所有學生容易存取電腦資源；該視窗系統曾經在卡耐基美隆大學（Carnegie Mellon University，CMU）的雅典娜工程中發展過，但是在授權上並可能得到且沒有其他可替代可選擇。

該計畫藉由創立一個可以執行本地應用程式且能夠拜訪遠端資源的協定來解決這個問題。起初在 1983 年中期 W 視窗系統的 UNIX 移植在 V 作業系統下以 1/4 速度執行；在 1984 年 5 月，Scheilfer 將 W 的同步協定換成非同步協定，以及將顯示列表換成直接模式繪圖，而創造出 X 的版本 1。X 是第一個真正的硬體和製造商無關的視窗系統環境。

Scheifler、Gettys 和 Ron Newman 著手工作且 X 快速地進展著。版本 6 於 1985 年 1 月推出。DEC 正準備要推出它的第一個 Ultrix 工作站，且 X 是唯一最有希望即時準備妥當的視窗系統。於是 X6 被移植到 MicroVAX 的 DEC QVSS 顯示器。

1985 年第二季，為了支援 DEC 的 VAXstation-II/GPX 增加了色彩支援，由此形成了版本 9。儘管 MIT 此前已經免費許可 X6 給一些外部群體，它此時決定在後來演變為 MIT 授權的許可證下發放對 X9 和後續版本。X9 於 1985 年 9 月釋出。

布朗大學的一些人將版本 9 移植到 IBM RT/PC，為了讀取 RT 的非對齊資料對協議做了不相容的修改，導致 1985 年稍後釋出版本 10。1986 年有若干外部團體對 X 提出需要。X10R2 釋出於 1986 年 1 月。1986 年 2 月的 X10R3 是第一個廣泛發行的版本，DEC 和惠普都基於它釋出產品。別的一些團體把 X10 移植到 Apollo 或者 Sun 工作站甚至 IBM PC/AT。X10 的最後一個版本 X10R4 於 1986 年 12 月釋出。

儘管 X10 既有趣又強大，但很明顯在 X 被更加廣泛地採納前人們期待 X 的協議更加裝置中立；但是這樣大規模地完全重新設計所要求地資源超出了 MIT 自身能夠提供的。於是 DEC 的 Western Software Laboratory 躋身該專案。DEC WSL 的 Smokey Wallace，另外還有 Jim Gettys 提議 X11 在 DEC WSL 建立，但能夠使用與 X9 和 X10 同樣的方法自由獲取。該專案於 1986 年 5 月開始，協議部分於 8 月結束，軟體的 alpha（內部）測試於 1987 年 2 月就，beta（外部）測試開始於 5 月。X11 最終於 1987 年 9 月 15 日釋出。

X11 協議設計由 Scheifler 領導，並在 nascent Internet 的開放郵件列表上廣泛討論。於是 X 成為最早的較大規模的開源軟體專案之一。

7.3 MIT X 協會與 X 協會公司

1987 年，隨著 X11 取得明顯成功，MIT 希望免除 X 的管理責任。但是 1987 年 6 月與 9 個廠商舉行會晤，這些廠商表示他們相信為了避免 X 由於商業因素而分裂，需要中立方的參與。1988 年 1 月，X 協會（X Consortium）做為非營利廠商團體而成立，由 Scheifler 擔任主管，而 Keith Packard 擔任高階開發人員，確保 X 能持續以中立超然的立場提供商業與學術教育所需的開發。此後 MIT X 協會（MIT X Consortium）完成了一系列重要的 X11 版本，第一個就是 1988 年 1 月的版本 2（X11R2）。

1993 年，X 協會公司（X Consortium, Inc.；非營利性質的公司）做為 MIT X 協會的接繼者而成立。它於 1994 年 5 月 16 日釋出了 X11R6。1995 年 X 協會公司接手了 UNIX 系統的 Motif 工具箱和 CDE（Common Desktop Environment）共通桌面環境。而原有的 X 協會在釋出了最後一個版本的 X11R6.3 後，於 1996 年末解散。

7.4 開放團體

1997 年中，X Consortium 將 X 的管理交給開放團體，而它是 1996 年由開放軟體基金會（OSF）和 X/Open 合併成立的廠商團體。

開放團體於 1998 年首次釋出 X11R6.4。為了確保 X 開發上的資金，所以 X11R6.4 偏離傳統的自由許可條款，進而引起爭議。新條款阻礙了許多專案（例如：XFree86）採納它，甚至包括一些廠商。在 XFree86 以分離相威脅後，X11R6.4 於 1998 年 9 月在傳統許可條款下發布，而開放團體的最後一個釋出是 X11R6.4 patch 3，即第三度釋出的補強程式。

7.5 X.Org

1999 年 5 月開放團體組建了 X.Org。X.Org 指導了 X11R6.5.1 之前的版本釋出。在此期間 X 的開發死氣沉沉。2003 年，隨著 Linux 的流行 X 被大量安裝。但是 X.Org 幾乎無聲無息，活躍的開發由 XFree86 承擔。

7.6 XFree86

在 1989 年至 1990 年期間，托馬斯・羅爾把 X11R4 分類器上提供的 X 伺服器程式的原始碼下載到執行速度僅為 33MHz 的 386PC 上，成功運行了被他稱為是 X38611.1 的 X 伺服器。這就是 XFree86 的雛形。

1992 年後多數技術創新都發生在 XFree86 專案中。1999 年，由於眾多對於 XFree86 在 Linux 上應用有興趣的硬體廠商的推動，並也已經成為最普及的 X 版本，XFree86 成為 X.Org 的榮譽成員（不付費）。

但是自 2003 年開始，XFree86 內部卻發生了爭論。它被認為太教堂式了，如同它的開發模式；開發者不能透過 CVS 做提交，而廠商被迫維護大量補丁。2003 年 3 月，自從最初的 MIT X Consortium 結束之後就參加 XFree86 的 Keith Packard 由於被認為態度不良而被驅逐

X.Org 和 XFree86 開始討論能夠有助於 X 開發的重組 Jim Gettys 早在 2000 年就熱心於開放的開發模式。Gettys、Packard 和其他幾個人開始討論有效管理 X 和開放式開發的細節。

最終就像是 X11R6.4 許可證爭議的迴響，XFree86 於 2004 年 2 月在更加嚴格許可證下發布了 4.4。許多依賴 X 的專案認為該許可證無法接受，特別是它和 GNU General Public License 不相容。這引起一場論戰，許多人認為到了該對 XFree86 分叉（fork）的時候了，許多 Linux 發行版，包括 Fedora、Gentoo 都紛紛在最新的版本中使用 X.Org 基金會的釋出代替 XFree86。

7.7 X.Org 基金會

2004 年年初 X.Org 基金會成立。這意味著 X 在管理上的根本轉變。1988 年以來 X 的管理者（包括過去的 X.Org）都是廠商組織，而基金會由軟體開發者領導，採用依靠外部參與的集市模式的社群開發。其成員身份對個人開放，法人成員則成為贊助者。X.Org 還開始同 freedesktop.org 密切合作。

在 XFree86 4.4RC2 基礎上合併了 X11R6.6 的修改，基金會在 2004 年 4 月釋出了 X11R6.7。Gettys 和 Packard 使用了在舊許可證下發布的 XFree86 的最後的版本，但是強調了開放的開發模式並保持了與 GPL 的相容性，從而帶來了很多過去 XFree86 的開發者。

2004 年 9 月 X11R6.8 釋出。它加入重要的新特性，包括對半透明視窗的初步支援、很多複雜的視覺效果、螢幕放大和簡圖，以及與 3D 沉浸式顯示系統（例如 Sun 的 Project Looking Glass 和 Croquet project）整合的設施。而外觀策略由稱為合成管理器（compositing managers）的外部應用程式提供。

7.8 停滯

X 視窗系統標準最新版本截至 2024 年，已經超過十年，而修正 X 許多侷限的 Wayland，也逐漸步入成熟，並被許多重大 Linux 發行版如 Fedora 和 Ubuntu 選為預設視窗系統，成為事實上的下一代視窗系統。RHEL 在發行版本 8 時預設使用 Wayland，發行版本 9 時將 Xorg 伺服器標示為以棄用，並預計於版本 10 正式移除。

未來方向

有了 X.Org 基金會和 freedesktop.org，X 的開發再度加速。目前和未來的版本都將是可使用的最終產品，而不僅僅是在其上構築產品的骨架。

隨著硬體操作被移入核心，幾乎對影片硬體的訪問將透過 OpenGL（沒有硬體 OpenGL 的系統使用 Mesa 3D）和基層直接渲染模組進行。這由 XFree86 version 4 引入並出現在 X11R6.7 及其後續版本。

參考實現的架構被模組化，每個獨立模組做為分離的專案維護。X11R6.9 將是單體原始碼而 X11R7.0 將有具備相同特徵集的模組化原始碼。。

寫法、稱呼上的誤混

“X Window 系統” 一般也簡稱成 “X11” 或 “X”，而 “X Windows” 的稱寫方式（類似 “Microsoft Windows” 的稱寫）並沒有被正式認可，不過這種誤會的稱寫法卻很普遍且經常出現（例如在一書中）。

版本歷史