你所知道的LInux(二)——為你打開(kāi)一扇X視窗

www.x.org

大家好,我是無(wú)用掛件,本期將為大家介紹一波有關(guān)Xwindow的基礎(chǔ)知識(shí)。

先祭出上期問(wèn)題解答:“你SSH到你的Linux服務(wù)器,嗯,然后順理成章地startx…等等,這時(shí)你的屏幕是X Client還是X Server?”

這個(gè)基本概念,初學(xué)者最容易犯錯(cuò)。估計(jì)會(huì)有童鞋會(huì)不假思索地認(rèn)定,“這不顯然是Client嘛,連到Xorg后端顯示GUI?!?/p>

說(shuō)得好!我給滿(mǎn)分(滿(mǎn)分為0分)

選X Client的童鞋應(yīng)該是對(duì)XWindow的基本原理不清晰,以致將Server和Client的概念混淆了。比如,在Internet上,你通過(guò)Remmina選擇SSH類(lèi)型連到你的RedHat服務(wù)器上,這時(shí)Remmina是Client,你的RedHat服務(wù)器是Server。

然而XWindow并不是一回事。X server并不是你登錄的那臺(tái)機(jī)器,而是指一個(gè)程序。它負(fù)責(zé)在某臺(tái)機(jī)器上接受客戶(hù)的要求,在屏幕上顯示客戶(hù)請(qǐng)求的圖形,并且把消息(鍵盤(pán),鼠標(biāo),窗口消息)通知客戶(hù)程序。

還是不懂?來(lái),我們具體分析一下。

上述執(zhí)行startx的Remmina就是一個(gè)X server,它負(fù)責(zé)控制那臺(tái)RedHat服務(wù)器上的display,而其它的什么GNOME、Xterm、LightDM之類(lèi)都是客戶(hù)程序。它們走TCP-6000(舉個(gè)例子而已)連接你的Remmina上已經(jīng)調(diào)用起來(lái)的GUI Display,而你手里Debian筆記本的TCP-6000是由Remmina進(jìn)行相關(guān)bind&Listen的。So,你覺(jué)得,這里調(diào)起startx的Remmina,是更像Server還是Client呢?

看到這一大堆之后的正確感覺(jué)應(yīng)該是:“這啥子玩意…好像有點(diǎn)意思”,對(duì),就應(yīng)該是這樣。

再來(lái)兩個(gè)栗子:

你調(diào)起了XTerm,就會(huì)在Remmina的屏幕上顯示一個(gè)窗口。實(shí)際發(fā)生的事情是:XTerm請(qǐng)求連接Debian筆記本的6000號(hào)端口(由Remmina控制),跟其對(duì)接,然后XTerm請(qǐng)求得到資源,并在屏幕上顯示一個(gè)窗口。

你在Terminal里按下”S”鍵時(shí),Remmina會(huì)把這個(gè)事件通知XTerm進(jìn)程,然后XTerm會(huì)發(fā)送數(shù)據(jù)報(bào),請(qǐng)求Remmina “在坐標(biāo)(X,Y)處顯示一個(gè)字母S;在后面顯示一個(gè)矩形作為光標(biāo)?!边@樣你的XTerm窗口里就會(huì)多顯示一個(gè)字母。

(這下如果還不懂的話那我也沒(méi)法了呀)

(憤鳥(niǎo)同學(xué)表示他基本上懂了)

(wtf…怎么字?jǐn)?shù)又過(guò)千了)

那我們?cè)僦v一點(diǎn)DE(Desktop Environment)的事情。

問(wèn)題:Gnome、KDE、Xfce或者DDE是什么?

某童鞋:窗口管理器啊,這還要說(shuō)什么?

我:What?那這么久真是給你白講了==

是沒(méi)錯(cuò),WM(Window Manager)可以翻譯成窗口管理器。但Gnome是WM么?當(dāng)然,這總比把WM說(shuō)成是XWindow的小傻瓜們要好一點(diǎn)

Gnome、DDE之流是一種很多程序和函數(shù)庫(kù)的集合,其設(shè)計(jì)目的是提供一致方便的操作方式來(lái)滿(mǎn)足普通用戶(hù)的需要,所以我們不妨稱(chēng)之為“桌面環(huán)境”。它們不但包含窗口管理器,還有很多實(shí)用程序。歷史上,Gnome使用過(guò)的窗口管理器包括Enlightenment, Metacity等等。KDE的窗口管理器,那就是KWin了。

(當(dāng)然,這個(gè)專(zhuān)欄后期會(huì)詳盡地為大家介紹相關(guān)DE&WM的事情。)

或許有人問(wèn):知道這么一回事又有什么用呢?我不是有GDM、LightDM、SDDM+Xfce、Gnome、KDE為我搞定一切嘛?

話說(shuō)回來(lái),Gnome、KDE那種傻瓜式操作要我教嗎?(這些極為用戶(hù)友好的桌面環(huán)境,隨手點(diǎn)點(diǎn)就該會(huì)啊~)

那學(xué)Linux的趣味在哪呢?云時(shí)代,你用什么系統(tǒng)并不重要,因?yàn)槟阏谧龅氖虑槠渌到y(tǒng)應(yīng)該也能做吧。

當(dāng)你在Terminal里面敲上一句命令的時(shí)候,懂得其機(jī)理不該是最美妙的事嗎?

好啦,今天關(guān)于XWindow的介紹就告一段落了。照例,留個(gè)問(wèn)題:

你了解Windows,macOS,Linux的應(yīng)用分發(fā)模式嗎?試分析其區(qū)別。

References:?https://www.x.org/wiki/



本文首發(fā)于淀粉月刊:https://dfkan.com

原作者:無(wú)用掛件

發(fā)布時(shí)間:2018年7月26日

點(diǎn)此查看原文

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容