X11 是什麼?
百科看了總是不明不白
我也不太會解釋,先按我自己的理解來說吧,希望能夠拋磚引玉。
其實這方面我也不太懂,以下難免有錯誤,歡迎大家指正。首先,最原始的unix系統中是沒有圖形界面的,只有字元界面的。
在Macintosh和Windows有圖形界面之後,unix系統也想搞一套圖形界面系統,然後就有了X11。經過幾年的發展,X11逐漸成了unix和linux上的主流圖形界面系統。
不過X11和其它的圖形界面系統的主要區別在於,X11是客戶端/伺服器結構的。這是因為X11剛產生的年代,unix的主要使用方式是通過終端機登錄主機,並且要求支持多用戶。
這種結構的優點在於天生支持遠程桌面,缺點在於效率低下。
後來在個人電腦出現之後,多用戶的需求逐漸變弱,效率的問題就越來越明顯。所以出來了很多替代技術,使用本機的硬體加速來提高效率。X11也慢慢呈現被淘汰的趨勢。
替代X11的眾多技術中,Wayland算是比較有名的一個,但是目前(2015年2月)各大主要的Linux發行版對Wayland的支持還是處於初級階段。正好這兩天換了電腦,需要用ssh連接到遠程伺服器用python在伺服器端進行數據可視化然後在本地電腦顯示,這裡就涉及到X11的東東,查了下,在這裡寫下自己的理解。
首先是X和X11的區別,X是一個協議並不是具體的實現,類似HTTP,WSGI一樣都是協議,X11就是X協議的第11版,類似ES5,ES6等不同版本的ECMAScript標準。
X協議中X應用程序負責通過X協議告訴服務端需要在服務端顯示什麼圖形,然後服務端收到消息後就會通過服務端上的Xserver的實現來顯示客戶端程序想要的圖形。
這裡通常與我們理解http協議不同的是,X 服務端通常都在我們本地的電腦上,而不是在遠程伺服器上。例如我通過ssh -X來啟動X11 forwarding連接到遠程伺服器,遠程伺服器有python程序調用matplotlib繪製圖形,那這個時候伺服器端的程序就是X應用程序,他通過X協議告訴我們本地的Xserver如何在我們本地的電腦上顯示圖形(如果我們本地安裝有相應的X11實現的話)。
例如我使用的是mac,那麼我就需要在mac端安裝相應的X11協議的實現,也就是XQuartz(從蘋果官網上看到XQuartz就是一個X11的實現,就是適用於macos的x11服務端和客戶端的庫關於 Mac 版 X11),有了他,當我們的mac電腦接收到X應用程序通過X協議發過來的消息時候就可以通過XQuartz在我們本地進行圖形顯示。如果我使用的是windows電腦,我也需要在windows上運行的X11 server,通常我們會使用Xmanager、putty+Xming等等,這樣只要實現X協議無論我們是在什麼終端上,我們都能夠收到X應用程序傳過來的消息在本地通過本地的實現進行圖形顯示。類似只要web伺服器和web應用都遵守wsgi服務,無論我們用什麼web伺服器,什麼python的web應用都是可以組合在一起工作的。
當我們在mac通過x11server顯示圖形的時候自然會彈出下面這個小圖標,畢竟是他在工作的,這時候他就扮演著x11 server的角色。
x11又叫x window, 是個軟體,能運行很多不同版本的unix程序。 Mac os x就是一個類unix系統,然而unix有很多版本,裡面有些很好用的程序,mac不能全部兼容。如果你想用那些東西,這時候需要就x11。
Mac 不再隨附 X11,但 XQuartz 項目會提供 X11 伺服器和客戶端庫。
Apple 創建了 XQuartz 項目,共同致力於在 Mac 上進一步開發和支持 X11。XQuartz 項目最初基於 Mac OS X v10.5 中隨附的 X11 版本。目前有多個版本的 XQuartz,其中包含修復程序、針對新功能的支持以及 X11 體驗的更多改進功能。Apple 是 XQuartz 項目的貢獻者,並致力於確保 X11 與 macOS 和最新版本的 XQuartz 正常配合使用。
XQuartz 項目提供適用於 MacOS 的 X11 伺服器和客戶端庫,網址是 www.xquartz.org。下載可用的最新版本。
推薦閱讀:
※Macbook Pro 用外接顯示器時,如何關閉筆記本屏幕,同時開蓋使用?
※mac用iterm2實現ssh,怎麼像SecureCRT一樣保存IP和賬號密碼?
※Mac 系統上有什麼好用的 Android 模擬器?
※複製10G的單文件視頻,複製6.5G的過程中斷複製。Windows複製粘貼(剪切)機制是怎麼樣的?
※OS X 為什麼沒有自帶畫圖工具?