X視窗系統

X Window系統是一種以點陣圖方式顯示的軟體視窗系統。最初是1984年麻省理工學院的研究，之後變成UNIX、類UNIX、以及OpenVMS等作業系統所一致適用的標準化軟體工具套件及顯示架構的運作協定。X Window系統透過軟體工具及架構協定來建立作業系統所用的圖形使用者介面，此後則逐漸擴充套件適用到各形各色的其他作業系統上。現在幾乎所有的作業系統都能支援與使用X。更重要的是，今日知名的桌面環境——GNOME和KDE也都是以X Window系統為基礎建構成的。由於X只是工具套件及架構規範，本身並無實際參與運作的實體，所以必須有人依據此標準進行開發撰寫。如此才有真正可用、可執行的實體，始可稱為實現體。目前依據X的規範架構所開發撰寫成的實現體中，以X.Org最為普遍且最受歡迎。X.Org所用的協定版本，X11，是在1987年9月所釋出。而今最新的參考實作，而此專案由X.Org基金會所領導，且是以MIT授權和相似的授權許可的自由軟體。X的C/S模式和網路透明性.X能為GUI環境提供基本的框架：在螢幕上描繪、呈現影象與移動程式視窗，同時也受理、執行、及管理電腦與滑鼠、鍵盤的互動程式。不過，X並沒有管轄到使用者介面的部份，而是由其他以X為基礎的實現體來負責，也因為如此，以X為基礎環境所開發成的視覺樣式非常地多；不同的程式可能有截然不同的介面呈現。X採用C/S的架構模型，由一個"X伺服器"與多個"X客戶端"程式進行通訊，伺服器接受對於圖形輸出，伺服器可能是一個能顯示到其他顯示系統的應用程式，也可能是控制某個PC的影片輸出的系統程式，也可能是個特殊硬體。X的一大特點在於“網路透明性”：應用程式。X中所提及的“客戶端”和“伺服器”等字眼用詞也經常與人們一般想定的相反，“伺服器”反而是在使用者本地端的自有機器上執行，而非是在遠端的另一部機器上執行。伺服器和客戶端之間的通訊協議的運作對計算機網路是透明的：客戶端和伺服器可以在同一臺計算機上，也可以不是，或許其架構和作業系統也不同，但都能執行。客戶機和伺服器還能夠使用安全連線在網際網路上安全地通訊。為了使遠端客戶程式顯示到本地伺服器，使用者一般需要啟動一個終端視窗和到達遠端計算機的telnet或者ssh，令其顯示到使用者計算機，然後啟動客戶端。然後客戶端就會連線到本地計算機，並且遠端應用程式會顯示到本地螢幕並被本地輸入裝置所控制。與之對應，本地計算機上也可以執行一個連線到遠端計算機的小型代理程式，並在該端啟動與執行自有需求與指定的應用程式。實際的遠端客戶端的例子有：圖形化管理遠端計算機；在遠端UNIX計算機上執行計算密集的模擬程式並把結果顯示到本地的Windows桌面計算機；用一套顯示器、鍵盤和滑鼠控制同時執行在多臺計算機上的圖形化軟體。X的設計原則.X的設計原則，早在最初仍在麻省理工學院的階段就已經成形，由和兩人制訂出X最早的開發、強化、改進原則，原則大體如下：之後，上述原則中的第一項原則在設計X11時被加以修改，修訂成："「除非已有真正的應用程式，真的需要X為其修訂、增訂等支援，否則不會為X增加新功能。」"X基本上一直遵循這些原則，參考實現的擴充套件及改進也是以此原則的角度來著手，也因為奉行上述原則，使至今的最新版X仍能與最初釋出的協定標準近乎完全相容。使用者介面.X刻意不去規範應用程式在使用者介面上的具體細節設計，這些包括按鈕、選單和視窗的標題欄等等，這些都由視窗管理器等等的使用者軟體來提供，然而因為架構設計上保留了高度的彈性發揮空間，致使多年來X在“基礎、典型、一般性”的使用者介面上，也都有數目驚人的多樣性選擇。在X的系統架構中，視窗管理器用於控制視窗程式的位置和外觀，其介面類似Microsoft的Windows或者Macintosh。雖然不同的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機的移植，到了上個世紀90年代末期成為X的技術創新的主要X開發的事實標準。但是從2004年起，最流行的X伺服器是XFree86的分支—X.Org的參考實現。雖然X一般和UNIX聯絡在一起，X伺服器也能夠自然地存在於其他圖形環境。DEC／COMPAQ／HP的OpenVMS作業系統用X加上CDE做為其標準桌面環境，稱為DECwindows。蘋果公司的Mac OS X v10.3包括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寄生在其他視窗系統的X視窗的位置。但是也有些伺服器，例如Exceed，能夠在宿主系統上建立根視窗使得遠端客戶端能夠做為分離的視窗在其上顯示。X終端機.X終端機是做為僅執行X伺服器的瘦客戶機的專用硬體。該架構廣泛用於為了使多人同時使用同一個大型伺服器而構造終端。這也符合MIT的計劃的初衷。X終端搜尋網路，使用X顯示管理器產生允許其執行客戶機的主機列表。初始主機需要執行X顯示管理器。專用的X終端機業界在推行X終端機時也將其稱為「窮人的UNIX工作站」。X的侷限和批評.在《》一書中有個章節為："X視窗所造成的災禍"，該書用此整個章節的篇幅內容來討論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，而這也並非標準。而其他系統如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。歷史.前身.事實上，早在X出現前已有幾個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測試開始於5月。X11最終於1987年9月15日釋出。X11協議設計由Scheifler領導，並在nascent Internet的開放郵件列表上廣泛討論。於是X成為最早的較大規模的開源軟體專案之一。MIT X協會與X協會公司.1987年，隨著X11取得明顯成功，MIT希望免除X的管理責任。但是1987年6月與9個廠商舉行會晤，這些廠商表示他們相信為了避免X由於商業因素而分裂，需要中立方的參與。1988年1月，X協會。1993年，X協會公司共通桌面環境。而原有的X協會在釋出了最後一個版本的X11R6.3後，於1996年末解散。開放團體.1997年中，X Consortium將X的管理交給開放團體，而它是1996年由開放軟體基金會和X/Open合併成立的廠商團體。開放團體於1998年首次釋出X11R6.4。為了確保X開發上的資金，所以X11R6.4偏離傳統的自由許可條款，進而引起爭議。新條款阻礙了許多專案採納它，甚至包括一些廠商。在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分叉的時候了，許多Linux發行版，包括Fedora、Gentoo都紛紛在最新的版本中使用X.Org基金會的釋出代替XFree86。X.Org基金會.2004年年初X.Org基金會成立。這意味著X在管理上的根本轉變。1988年以來X的管理者都是廠商組織，而基金會由軟體開發者領導，採用依靠外部參與的集市模式的社群開發。其成員身份對個人開放，法人成員則成為贊助者。X.Org還開始同freedesktop.org密切合作。在XFree86 4.4RC2基礎上合併了X11R6.6的修改，基金會在2004年4月釋出了X11R6.7。Gettys和Packard使用了在舊許可證下發布的XFree86的最後的版本，但是強調了開放的開發模式並保持了與GPL的相容性，從而帶來了很多過去XFree86的開發者。2004年9月X11R6.8釋出。它加入重要的新特性，包括對半透明視窗的初步支援、很多複雜的視覺效果、螢幕放大和簡圖，以及與3D沉浸式顯示系統的外部應用程式提供。未來方向.有了X.Org基金會和freedesktop.org，X的開發再度加速。目前和未來的版本都將是可使用的最終產品，而不僅僅是在其上構築產品的骨架。隨著硬體操作被移入核心，幾乎對影片硬體的訪問將透過OpenGL和基層直接渲染模組進行。這由XFree86 version 4引入並出現在X11R6.7及其後續版本。參考實現的架構被模組化，每個獨立模組做為分離的專案維護。X11R6.9將是單體原始碼而X11R7.0將有具備相同特徵集的模組化原始碼。。寫法、稱呼上的誤混.“X Window系統”一般也簡稱成“X11”或“X”，而“X Windows”的稱寫方式。參考書籍.