【译】X Server-Client!! What the hell?
你是Linux粉絲嗎? 你討厭以簡單的方式做事嗎? 您是否喜歡將計算機的生命放在線上進行實驗和定制,以達到完美滿意的程度? 歡迎來到俱樂部的孩子。
關于Linux的最好的事情是,它不是像Windows或Mac那樣的大型黑盒子,而是它是由樂高積木制成的主要部分 ,我們將談論這個主要部分的非常重要的部分 - X服務器 - 客戶端。 UNIX系統的現代GUI框架的基礎 。
“那些不了解Linux的人注定要重新發明它,很糟糕。”為什么?
一致且設計良好的軟件始終經得起時間的考驗。 X Server-Client架構也不例外。 它是由麻省理工學院實驗室于1987年開發的,從那時起它就被部署在人類已知的每個UNIX系統上。 目前它處于第11次迭代中,因此它也被稱為“ X11”或簡稱為“ X” 。 如果有GUI,則有X服務器。 這為操作系統帶來了優勢; 獨立于GUI實現,這意味著操作系統可以保持非常輕的重量,如果機器需要,可以在沒有GUI的情況下提供完全功能。 例如,安裝在大型服務器場中的服務器刀片永遠不需要GUI,因此我們不會使用不必要的GUI來使它們膨脹,因此它的資源得到了充分利用。
這也為開發人員提供了優勢,因為X服務器 - 客戶端架構被設計為跨平臺,開發人員可以選擇一個框架來編寫UI代碼(例如QT框架)并且可以放心UI將被渲染無論硬件是什么,都可以通過X服務器正確使用。 反過來,它為用戶提供了非常流暢和一致的GUI體驗。 每個應用程序需要生成的GUI然后將外包給X,因此應用程序不必擔心硬件的類型,或者該人正在使用的Linux發行版的變體。
說實話,并不是每個人都喜歡使用全文TTY終端時獲得的黑客共鳴。 有正常的人喜歡看起來很棒的GUI。 因此,最好先了解一下幕后發生的事情。
要旨
請注意,類似Linux和UNIX的系統用于功能強大的服務器上,這些服務器具有很強的處理能力,但可能不是非常便攜。 而且,這些機器開始時非常昂貴。 因此,聰明人提出了一個解決方案,一個架構--X服務器客戶端。 盡管可以使用SSH遠程訪問計算機,但輸出只能顯示在終端上,而不能顯示在能夠顯示圖形內容的窗口上(位圖顯示)。 因此,X服務器與顯示圖形內容密切相關。 例如,您將無法像在Firefox上一樣瀏覽終端上的Web。
我們將詳細討論客戶端和服務器,最后我將告訴您這是如何為您提供定制的能力。 讓我們潛入......
X客戶端
讓我們先解決這個問題。 任何需要GUI并且與X Server交互兼容的應用程序稱為X客戶端。 Mozilla firefox,Xterm等都是一些例子。 你在Ubuntu中使用的終端也是一個X客戶端! 那么,它們是圖形終端嗎? 說實話,它們是終端仿真器,用于在圖形環境中模擬真實的TTY終端。
如果您在TTY,終端和shell之間感到困惑, 請檢查此鏈接 。
PS:終端部分可能會讓人難以理解,讓我們再看看。 回到過去的好時光,每張桌子上的電腦都不可能(太大,太貴)。 因此,他們有終端/控制臺,這些終端/控制臺只接受輸入并將其發送到主機并將輸出呈現在控制臺上。 這就是他們被稱為TTY(電傳打字機)的原因。 你也有Linux機器上的那些。 嘗試Ctrl + Alt + F1 。 要退出它,請按Ctrl + Alt + F7。 在這方面也有太多的理論,但我將在本文的后半部分詳細討論它。 請記住,您在桌面上使用的終端是模擬器,實際上也是X客戶端。
有關詳細信息,請查看此鏈接
下圖顯示了x客戶端在本地和網絡上使用x服務器的情況
X服務器
這是實打實的。 X服務器的工作是從鍵盤,鼠標或任何其他輸入設備獲取輸入,并根據當前運行的X客戶端,它將此數據發送到內核進行進一步處理(無論您的X客戶端應該做什么在這里完成)。 然后輸出再次提供給X服務器,現在X服務器在屏幕上呈現它。 挺整潔的吧?
對于單個機器,堆棧看起來像這樣
現在開始有趣 ......
在這個處理過的數據和最終輸出之間,有兩個重要的組成部分。 如圖所示; 一個是窗口管理器 ,另一個是顯示管理器/圖形界面 。 這個東西讓你可以自定義和選擇你認為最適合你的東西......
窗口管理器
如果您打開了一個窗口管理器未在后臺運行的應用程序,那么您將無法重新定位甚至調整窗口大小。 您甚至沒有關閉,最大化/恢復和最小化按鈕,因為您將不會提供標題欄。 這些東西是窗口管理器的一部分。 它還決定如何將窗戶放在一起(堆疊,瓷磚等)。 現在有大量的窗口管理器可用 - Compiz,I3,Awesome,Openbox等。它們也有不同類型 - 平鋪,堆疊等。所以它完全取決于你想要使用哪一個。 Ubuntu的默認值是Compiz。
PS:現在很多時候很多X客戶端都帶有客戶端裝飾,其中包括標題欄和客戶端本身,這意味著它們可以在沒有窗口管理器的情況下工作,但對于所有客戶端都不是這樣。 事實上,Ubuntu終端沒有客戶端裝飾。
再看一下圖表。i3窗口管理器
Compiz窗口管理器
很棒的窗口管理器
Openbox窗口管理器
顯示管理器
顯示管理器基本上是桌面環境 。 這是放置所有應用程序窗口的階段。 窗口管理器,文件瀏覽器,Dock等與桌面環境密切配合,為您提供統一的用戶體驗。 有許多不同的環境可供選擇 - KDE,Unity,GNOME等。您可以隨時在機器上安裝多個這樣的環境,并隨時在它們之間切換。
再看一下圖表。KDE桌面環境
GNOME桌面環境
Unity桌面環境
這里的主要思想是整個操作系統保持不變(內核,遠程,文件系統;所有東西),但您的GUI組件可以像樂高積木一樣交換進出。 那不是很棒嗎?
真正的力量
無論我到目前為止告訴你什么都可能對你機器的化妝品有益,但讓我們看看這讓我們揮舞著什么樣的力量。
請記住,圖中顯示的堆棧存在于每臺機器中。 這意味著,即使您只使用一臺計算機,但由于使用了“客戶端 - 服務器”,整個客戶端服務器架構可能會有點混亂,但事情是服務器的主要任務是為您提供一致的用戶界面,無論您使用什么應用程序。 實際上,在X服務器 - 客戶端體系結構中,當用戶直接與服務器交互時,客戶端服務器關系被反轉,但客戶端可以是本地的,也可以是遠程的,如下段所述。
當我們在計算機網絡中使用它時,這種架構真的很棒。 現在考慮一下; 您的計算機上沒有Web瀏覽器(Firefox),但您的朋友有一個。 好吧,你可以ssh,但問題是Firefox需要GUI,就像我之前說的那樣,GUI無法在終端上呈現。 所以你要做的就是使用X轉發功能。 這基本上做的是讓你通過網絡將你的輸入發送到朋友的X客戶端,并獲得輸出(如何呈現GUI的命令)到你的X服務器,從而轉發 。 因此,您朋友的機器生成的GUI將在您的顯示器上呈現。 通過網絡的GUI。 那不是很酷嗎?
PS:請注意,如果你的機器上有主題和所有的Firefox,而你朋友的Firefox都是原始的,那么從他的機器轉發的X將在你的機器上呈現原始版本的Firefox,表明提供Firefox的命令確實是來自你朋友的機器。
這是Joe Collins的精彩視頻,它將作為本文的實用指南
有用的術語和定義
一個有趣的事實
如果你看過我告訴你的Jeo Collins的視頻,那么你一定注意到他是如何從他的TTY終端部署窗口管理器的。 在系統啟動的實例中,它會打開8個非圖形TTY終端,您可以使用Ctrl + Alt +(F1 - F8)進行訪問 。 您的GUI部署在第7個終端上,這就是您在按Ctrl + Alt + F7時返回GUI的原因。 這意味著您可以作為不同的用戶從這些其他7個終端登錄,并在那里部署桌面環境。 默認情況下,終端數量為8,如果您愿意,可以隨時使用。
我離開之前幾句話......
成為Linux用戶是一種責任; 學習,改進和傳播的責任。 永遠不要害怕嘗試,永遠不要壓抑改變的沖動。 把事情視為理所當然是犯罪,總是在幕后看......
?
https://medium.com/mindorks/x-server-client-what-the-hell-305bd0dc857f
總結
以上是生活随笔為你收集整理的【译】X Server-Client!! What the hell?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux graphic subsyt
- 下一篇: Unity3d DLL脚本通用解密方法