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，能够在宿主系统上创建根窗口使得远程客户端能够做为分离的窗口在其上显示。

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年代初的问题與困擾。

视频硬件

PC 
在PC世界裡，需要第三方硬件的驱动的非主流的个人计算机软件往往不能支持所有为Microsoft Windows出品的设备。X Window也不例外，它的实现往往缺少较新（或者非常旧）的显示卡高效驱动程序。 

X.org和XFree86这样的开源X实现中，开发社区通过复用已有代码，可以很快更新改进驱动程序，从而能够为较陈旧的或者很通用的硬件开发出高质量的驱动。

高性能图形计算目前是顶级的图形功能，一般由厂家通过专有驱动来实现，而且往往优先考虑是Windows（最大的消费市场）。由于高性能视频市场的显赫地位，一些硬件／驱动厂商会考虑通过将技术细节变为商业秘密或者将其中创新变为软件专利，而这阻碍了开源驱动的实现。

其他设备 
在PC机之外的世界裡，很多X的实现是为非传统设备如PDA和手机而编写（或者移植）的。这样的实现必须提供为在此之上运行的平台提供至少且必须的设备支持。

性能 
X Window的C/S体系（主從式架構）设计在应用程序和视频硬件之间多加了一层软件，导致繪圖效率下降，所以引起了一些批评。因此开发了若干扩展，在设备和客户机在同一个系统上时，通过在取得适当许可的情况下，以直接访问设备来改善这一问题。而在Linux上，一些视频驱动已经部分移入内核以提高效率。

稳定性 
另一方面，X也被批评为需要（或者提供）了过多的对硬件的直接访问，从而影响了系统稳定性。行为不良的显卡驱动（有时也可能是应用程序）甚至能够导致整个系统崩溃或者重启；有时即使操作系统仍在工作，它也不能继续渲染其显示（这时除了重启，缺乏好的恢复手段）。

根本上，目前所有的桌面GUI操作系统都提供某种对硬件的直接访问，支持者认为市场已经证明为了提供图形性能牺牲一点稳定性是值得的。或许将来随着技术和用户的演化这一平衡会有所变化。

用户界面特征 
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起实现的质量已经很好，并且获得了部件的支持。

网络 
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向后兼容的的替代品的可行性都被广泛置疑。 

其他有的竞争者通过直接操作硬件来避免X的开销，这样的项目包括DirectFB。但是由于正在致力于使用可靠的内核级接口提供帧缓冲，这些努力可能变成是多余的。

freedesktop.org所主持的Wayland顯示伺服器同時運用了前述兩種方法處理X的缺點，它完全替換了X的架構而且運用DRI來直接操作硬體。Canonical公司替他旗下的Ubuntu Linux作業系統開發中的Mir是一個類似的計劃。預計支援ARM晶片組和x86架構的電腦。Mir透過Xmir向後兼容使用X Window的程式。

其他以图形终端服务形式达到网络透明性的尝试还有VNC（很底层的系统，通过网络发送压缩的位图；UNIX上的实现包括X服务器）、思杰系统（类似X的Windows软件）、塔朗泰拉（为网络浏览器提供Java客户机）和NX技術（用于远程显示的节省带宽的协议）。

历史

前身 
事實上，早在X出現前已有幾個-{zh-hans:位图;zh-hk:點陣圖;zh-tw:點陣圖;}-式的軟體顯示系統已經存在，例如帕洛阿尔托研究中心（施乐公司）提出的Alto（1973年）和Star（1981年）、蘋果電腦提出的Lisa（1983年）和麥金塔（1984年）、在UNIX世界也有-{zh-hans:雅典娜工程;zh-hk:Athena計畫;zh-tw:Athena計畫;}-（1982年）和Rob Pike的Blit終端機（1984年）。

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

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

該計畫藉由創立一個可以執行本地應用程式且能夠拜訪遠端資源的協定來解決這個問題。起初在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成为最早的较大规模的开源软件项目之一。

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年末解散。

開放團體 
1997年中，X Consortium将X的管理交给開放團體，而它是1996年由開放軟體基金會（OSF）和X/Open合并成立的厂商团体。

開放團體於1998年首次发布X11R6.4。为了確保X开发上的资金，所以X11R6.4偏离传统的自由许可条款，進而引起争议。新条款阻碍了许多项目（例如：XFree86）采纳它，甚至包括一些厂商。在XFree86以分离相威胁后，X11R6.4于1998年9月在传统许可条款下发布，而開放團體的最后一个发布是X11R6.4 patch 3，即第三度發佈的補強程式。

X.Org 
1999年5月開放團體组建了X.Org。X.Org指导了X11R6.5.1之前的版本发布。在此期间X的开发死气沉沉。2003年，随着Linux的流行X被大量安装。但是X.Org几乎无声无息，活跃的开发由XFree86承担。

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。

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）的外部应用程序提供。

未来方向 
有了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”的稱寫）並沒有被正式認可，不過這種誤會的稱寫法卻很普遍且經常出現（例如在一書中）。

版本历史

参见 
 視窗系統（Windowing system），針對一般的終端機。
 X Window系統的協議和架構
 X Window核心協議，功效機制等制訂、定義。
 X視窗管理器，軟體的建立原則。
 ，政策原則標準依據。
 ：相關的歷史零星事物。
 Xgl，針對較現代、先進的顯示卡而設計的X伺服器架構。
 ，簡稱GGI。一般性、共通性的圖形、圖像介面。
 AIGLX，全稱Accelerated Indirect GLX，X.Org基金会與Fedora Core Linux社群共同發起的開放原碼專案，被期望以間接方式加速GLX的繪圖著色功效。
 VirtualGL，用於遠端顯示的程式，可顯示立體（3D）呈現的應用程式，且能發揮運用顯示卡的硬體加速著色功效。
 Y Window System，也稱Y-Windows，是一套視窗系統，由一個視窗伺服器與一個用戶端函式庫所組成，同時也是一套可供應用程式撰寫者呼用的應用程式介面。

参考资料

参考书籍

外部链接

相關內容 
  X.Org ，X.Org基金會的官方網站。
  X視窗所造成的災禍 ，引自《UNIX-HATERS Handbook》一書。
  xwinman.org，X Window管理程式，或稱：X視窗管理員。
  《State of Linux Graphics》，收納於英文維基文库。
  RFC 1198 ，FYI on the X Window System 
  《Writing a Graphics Device Driver and DDX for the DIGITAL UNIX X Server》 ，線上手冊、書籍。
  《Technical X Window System and Motif WWW Sites》，線上手冊、書籍。

知名的實做 
  XOrg Foundation Open Source Public Implementation of X11 ，X11的正式实现體。
  XFree86，很多年來X系列最受歡迎的版本，特別是在開放原始碼的类UNIX平台。
  X11 for Mac OS X，與Mac OS X緊密整合的Apple X11。

X服务器
 
視窗系統
應用程式介面
使用MIT许可证的软件
Open Group標準