大家好至耻,我是無用掛件,本期將為大家介紹一波有關(guān)Xwindow的基礎(chǔ)知識尘颓。
先祭出上期問題解答:“你SSH到你的Linux服務(wù)器,嗯互广,然后順理成章地startx…等等卧土,這時你的屏幕是X Client還是X Server惫皱?”
這個基本概念夸溶,初學(xué)者最容易犯錯。估計(jì)會有童鞋會不假思索地認(rèn)定扫皱,“這不顯然是Client嘛捷绑,連到Xorg后端顯示GUI〈馕郏”
說得好!我給滿分(滿分為0分)
選X Client的童鞋應(yīng)該是對XWindow的基本原理不清晰进苍,以致將Server和Client的概念混淆了。比如觉啊,在Internet上杠人,你通過Remmina選擇SSH類型連到你的RedHat服務(wù)器上勋乾,這時Remmina是Client,你的RedHat服務(wù)器是Server辑莫。
然而XWindow并不是一回事罩引。X server并不是你登錄的那臺機(jī)器,而是指一個程序蜒程。它負(fù)責(zé)在某臺機(jī)器上接受客戶的要求昭躺,在屏幕上顯示客戶請求的圖形伪嫁,并且把消息(鍵盤,鼠標(biāo)执解,窗口消息)通知客戶程序款青。
還是不懂脚猾?來,我們具體分析一下砰奕。
上述執(zhí)行startx的Remmina就是一個X server提鸟,它負(fù)責(zé)控制那臺RedHat服務(wù)器上的display,而其它的什么GNOME胸哥、Xterm赡鲜、LightDM之類都是客戶程序庐船。它們走TCP-6000(舉個例子而已)連接你的Remmina上已經(jīng)調(diào)用起來的GUI Display嘲更,而你手里Debian筆記本的TCP-6000是由Remmina進(jìn)行相關(guān)bind&Listen的。So哮内,你覺得北发,這里調(diào)起startx的Remmina,是更像Server還是Client呢琳拨?
看到這一大堆之后的正確感覺應(yīng)該是:“這啥子玩意…好像有點(diǎn)意思”,對惊畏,就應(yīng)該是這樣密任。
再來兩個栗子:
你調(diào)起了XTerm,就會在Remmina的屏幕上顯示一個窗口缰盏。實(shí)際發(fā)生的事情是:XTerm請求連接Debian筆記本的6000號端口(由Remmina控制)淹遵,跟其對接,然后XTerm請求得到資源透揣,并在屏幕上顯示一個窗口。
你在Terminal里按下”S”鍵時须尚,Remmina會把這個事件通知XTerm進(jìn)程拆祈,然后XTerm會發(fā)送數(shù)據(jù)報(bào),請求Remmina “在坐標(biāo)(X咙咽,Y)處顯示一個字母S淤年;在后面顯示一個矩形作為光標(biāo)蜡豹「瓤粒”這樣你的XTerm窗口里就會多顯示一個字母。
(這下如果還不懂的話那我也沒法了呀)
(憤鳥同學(xué)表示她他基本上懂了)
(wtf…怎么字?jǐn)?shù)又過千了)
那我們再講一點(diǎn)DE(Desktop Environment)的事情娇唯。
問題:Gnome寂玲、KDE、Xfce或者DDE是什么拓哟?
某童鞋:窗口管理器啊断序,這還要說什么?
我:What违诗?那這么久真是給你白講了==
是沒錯,WM(Window Manager)可以翻譯成窗口管理器碉哑。但Gnome是WM么亮蒋?當(dāng)然妆毕,這總比把WM說成是XWindow的小傻瓜們要好一點(diǎn)
Gnome、DDE之流是一種很多程序和函數(shù)庫的集合趁怔,其設(shè)計(jì)目的是提供一致方便的操作方式來滿足普通用戶的需要薪前,所以我們不妨稱之為“桌面環(huán)境”。它們不但包含窗口管理器铺浇,還有很多實(shí)用程序垛膝。歷史上丁稀,Gnome使用過的窗口管理器包括Enlightenment, Metacity等等倚聚。KDE的窗口管理器,那就是KWin了授账。
(當(dāng)然惨驶,這個專欄后期會詳盡地為大家介紹相關(guān)DE&WM的事情。)
或許有人問:知道這么一回事又有什么用呢敞咧?我不是有GDM休建、LightDM、SDDM+Xfce测砂、Gnome、KDE為我搞定一切嘛呜投?
話說回來存璃,Gnome、KDE那種傻瓜式操作要我教嗎粘招?(這些極為用戶友好的桌面環(huán)境偎球,隨手點(diǎn)點(diǎn)就該會啊~)
那學(xué)Linux的趣味在哪呢?云時代衰絮,你用什么系統(tǒng)并不重要,因?yàn)槟阏谧龅氖虑槠渌到y(tǒng)應(yīng)該也能做吧胡诗。
當(dāng)你在Terminal里面敲上一句命令的時候,懂得其機(jī)理不該是最美妙的事嗎褂痰?
好啦症虑,今天關(guān)于XWindow的介紹就告一段落了。照例匪蝙,留個問題:
你了解Windows习贫,macOS,Linux的應(yīng)用分發(fā)模式嗎苫昌?試分析其區(qū)別。
References:?https://www.x.org/wiki/
本文首發(fā)于淀粉月刊:https://dfkan.com
原作者:無用掛件
發(fā)布時間:2018年7月26日