www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 很多人在用 Xwindow,但是他們是在用一些包裝掩蓋下的 Xwindow,那些包裝有些很不穩(wěn)定,占用大量資源,以至于有人說 Xwindow 是垃圾。其實 Xwindow 是一個非常出色的圖形

 很多人在用 Xwindow,但是他們是在用一些包裝掩蓋下的 Xwindow,那些包裝有些很不穩(wěn)定,占用大量資源,以至于有人說 Xwindow 是垃圾。其實 Xwindow 是一個非常出色的圖形系統(tǒng),你應(yīng)該抱怨的是那些不穩(wěn)定的包裝,而不是 Xwindow 本身。

Xwindow 是非常巧妙的設(shè)計,很多時候它在概念上比其它窗口系統(tǒng)先進,以至于經(jīng)過很多年它仍然是工作站上的工業(yè)標(biāo)準(zhǔn)。許多其它窗口系統(tǒng)的概念都是從 Xwindow 學(xué)來的。

Xwindow 可以說的東西太多了。下面只分辨一些容易混淆的概念,提出一些正確使用它的建議。

分辨 X server 和 X client

這是我被別人問了好多次的問題,我實在不想再對人說一遍了,所以寫在這里偷個懶,嘿嘿。

很多熟悉 Internet 原理的人首次遇到 Xwindow 的這兩個概念都會搞錯。如果他從一臺 Windows 機器上使用 Exceed 通過 XDMCP 登錄到一臺 Sun 服務(wù)器,他就說 Exceed 是客戶端(client),而 Sun 機器是服務(wù)器 (server)。這就完全搞錯了。

理解了 Xwindow 的工作原理,這個區(qū)別就會很明顯。X server 不是指你登錄的那臺機器,而是指一個程序,它負責(zé)在某臺機器上接受客戶的要求,在屏幕上顯示客戶請求的圖形,并且把消息(鍵盤,鼠標(biāo),窗口消息)通知客戶程序。

比如上面例子里的 Exceed 就是一個 X server,它負責(zé)控制那臺 Windows 機器上的顯示(display),Sun 機器上的程序,xterm, xxgdb, dtwm(CDE的窗口管理器),……是客戶程序。它們通常會使用 TCP 6000 號端口連接 Windows 機器,而Windows機器的 6000 號端口是由 Exceed bind 和 listen 的,怎么樣,我們的 Internet 專家,Exceed 看起來是一個 server 吧 :)

比如,當(dāng)你通過 telnet 啟動 Sun 機器上的 xterm,就會在 Exceed 的屏幕上顯示一個窗口。實際發(fā)生的事情是: xterm 請求連接 Windows 機器的 6000 號端口,與Exceed 跟 Exceed 連接,然后xterm請求得到資源,然后 xterm 請求在屏幕上顯示一個窗口。

你在 xterm 的窗口里按下"A"鍵時,Exceed 會把這個事件通知 xterm 進程,然后 xterm 會發(fā)送數(shù)據(jù)報,請求 Exceed, “請在坐標(biāo)(100,30)處顯示一個字母A,然后在后面顯示一個矩形作為光標(biāo)。”,這樣你的 xterm 窗口里就會多顯示一個字母。

這下你理解了嗎?不?那還是自己多用用,體會體會吧。

Xwindow 的網(wǎng)絡(luò)透明性

剛才那個 Exceed 用戶,他的客戶程序不僅可以運行在那臺 Sun 機器上,而且可以運行在網(wǎng)絡(luò)里其它的機器上,或者在本機上。比如他有可能同時通過 telnet 登錄到幾臺 Sun 工作站,幾臺 Linux PC,他可以在那些機器上都起動 xterm,在這臺 Windows 機器上的 Exceed 上顯示。如果它安裝了 cygwin,他還可以啟動本機上的 cygwin里 的 xterm,用同樣的方式顯示。

如果他使用 xrdb 在本機的 Exceed 設(shè)置了 xterm 的樣式,比如背景 midnightblue, 前景 白色,字體 -*- adobe-courier-*,……,那么,Sun, Linux, cygwin 里的 xterm,雖然沒有經(jīng)過配置,但是它們知道:“這個 X server 要求我用這個背景色,這個前景色,這個字體……”,它們會在你的屏幕上顯示同樣風(fēng)格的窗口。

使用鼠標(biāo)選擇一段字符,然后就可以在另外的程序里按鼠標(biāo)中間,把字符粘貼過去。不論這個程序運行在哪里。

看看更大的一個圖景:你的屏幕上有三臺機器上的 xterm, 兩臺機器上的 gvim,兩臺機器上的 mozilla 在顯示,而它們都受本機的 FVWM 操縱,它們之間可以隨意進行拷貝粘貼…… 從這里你可以初步體會到 Xwindow 的網(wǎng)絡(luò)透明性,它使你方便的操作很多機器。

什么是窗口管理器?

很多人不知道窗口管理器是怎么回事。他們認為 Gnome 和 KDE 是窗口管理器,認為窗口管理器就是能夠提供一個工具條,能夠配置桌面背景,能夠設(shè)置很多菜單的東西。而其實,窗口管理器只是 Gnome 和 KDE 的一部分,它的主要功能是你平時根本沒有注意,但是卻非常重要的操作。窗口管理器的主要功能是:移動窗口,改變窗口大小,圖標(biāo)化(最小化)窗口,改變窗口層疊順序……

通常的X客戶程序不需要知道有人想移動它,它只知道乖乖聽窗口管理器的話。如果沒有窗口管理器運行,你的程序會一個堆一個,你沒有辦法操縱被蓋在下面的程序,你只能使用最上面一個程序,而且你不能移動它,你不能改變它的大小。這樣的系統(tǒng)根本不能用!

其實你的窗口上的標(biāo)題,按鈕,漂亮的邊框,全都是窗口管理器提供的,而不是程序自己的,這樣你用窗口管理器就能改變?nèi)魏未翱诘臉邮搅?。?dāng)你點擊關(guān)閉窗口的那個按鈕,你其實點擊的是窗口管理器放在你的程序窗口上面的一個小窗口,發(fā)現(xiàn)它受到點擊后,窗口管理器就會通知那個程序:“喂!有人想關(guān)掉你,你自己準(zhǔn)備準(zhǔn)備后事,然后退出吧。”

不同的機器在本機顯示的窗口,由窗口管理器統(tǒng)一裝飾和指揮。比如,窗口管理器決定: xterm 窗口上面都應(yīng)該有四個按鈕,一個在左邊,點擊它會顯示窗口操作菜單,另外三個在右邊,分別是最大化,最小化和關(guān)閉。窗口都使用 7pixel 厚的邊框,窗口首次出現(xiàn)的時候首先在桌面上找一個空位置,如果找不到,就找一個能夠最少的遮蓋其它窗口的位置……

這些都是窗口管理器的職責(zé)。

Gnome 和 KDE 是什么?

有人把 Gnome 和 KDE 叫做窗口管理器,甚至還有人把它們叫做 Xwindow。經(jīng)常看到有人問:“裝哪種 Xwindow 好啊?Gnome 還是 KDE?” 其實你不安裝 Gnome 和 KDE 也可以使用 Xwindow.

Gnome 和 KDE 是“桌面系統(tǒng)”,一種很多程序和函數(shù)庫的集合。它們的設(shè)計目的是提供一致的方便的操作方式來滿足普通用戶的需要。它們不但包含窗口管理器,還有很多實用程序和應(yīng)用程序,比如配置程序,工具條,編輯器,繪圖工具…… 其實 Gnome 可以和很多窗口管理器合作,在歷史上, Gnome 使用過的窗口管理器包括 englightenment, sawmill, sawfish, metacity。KDE 的窗口管理器叫做 kwin。

你也知道,設(shè)計整整一套應(yīng)用程序:編輯器,繪圖程序,瀏覽器,…… 是非常不容易的。所以它們肯定是不如專用的編輯器,繪圖程序,瀏覽器的。不過要求不太高的用戶也可以用它們。[!--empirenews.page--]

用 Xwindow 做一個有趣的試驗

現(xiàn)在我們來做一個試驗來引起你對 Xwindow 的興趣。

很多人離開了 xdm 就不知道怎樣啟動 "Xwindow" 了。其實 Xwindow 的啟動方式很簡單。

首先,啟動你的 X server。在 Linux 下,你可以直接輸入 "X&",讓一個 X server 在后臺運行。這樣,一個占據(jù)整個屏幕的布滿斜紋的窗口(根窗口)就出現(xiàn)了。如果是 Exceed 或者 X-win32,你需要把屏幕設(shè)置為 "single window" 才能看到這個窗口。

接著,Linux 用戶需要用 xauth 給你的 X server 設(shè)置一個密碼,這樣別人就不能非法連接你的 X server。你需要 Ctrl-Alt-F1切換到tty1才能輸入這個命令。Exceed 和 X-win32 的用戶不需要這步。以下的例子只用 Linux 作為實例,其它系統(tǒng)的用戶可以依葫蘆畫瓢。

xauth add :0 . `mcookie`

好了,現(xiàn)在你可以試試啟動一個 xterm 到這個 X server 上:

xterm -display :0

按 Alt-F7 切換到 X,你看到了一個不受窗口管理器管理的 xterm。試試移動它呢?再切換到 tty1 啟動另一個 xterm,兩個 xterm 重合了嗎?你怎樣在第一個 xterm 里輸入呢?這樣用起來很痛苦吧?那么你可以在 xterm 里啟動一個窗口管理器,比如 twm,直接運行 "twm&" 就行了。

你發(fā)現(xiàn)xterm的窗口都被加上了標(biāo)題欄,按鈕和邊框,你現(xiàn)在可以移動它們了。試試把 twm 殺死,看看那些標(biāo)題欄,按鈕,邊框是不是都消失了?你知道了窗口管理器的作用了吧。

現(xiàn)在告訴你怎樣不用 XDMCP broadcast,繞過 CDE 的登陸界面,而使用 Sun 機器上的 CDE。其實你只需要把剛才那個例子里的 "twm" 換成 CDE 的窗口管理器 dtwm 就行了,或者啟動 dtsession。它們一般在 /usr/dt/bin 下。Sun 還有另外一個窗口管理器叫做 OpenLook, 它在系統(tǒng)里的名字叫做 olwm,你自己找找吧。

現(xiàn)在如果你自己在 Sun 機器上裝一個 FVWM,你知道怎么繞過 CDE 登錄而啟動 FVWM 了吧?你不需要成為 root 就可以使用你喜歡的FVWM了。

.Xdefaults 文件的作用

弄明白 X 的工作原理后,你就可以使用 .Xdefaults 來配置你的程序了。有人不理解 .Xdefaults 是用來干什么的,喜歡用 shell alias 出一些帶有很多參數(shù)的命令,或者寫一些 shell script,里面只有一行帶有很多參數(shù)的程序調(diào)用,然后他說: “.Xdefaults 沒用。”

其實 .Xdefaults 比起這些辦法有很多好處。首先,幾乎所有的 X 客戶程序都可以從 .Xdefaults 文件得到配置信息,比如前景色,背景色,字體…… 這樣你可以在同一個文件里配置所有 X 程序的樣式,而不用寫那么多 shell script。

另外,如果你用 xrdb .Xdefaults 把這些配置信息寫入到根窗口的數(shù)據(jù)結(jié)構(gòu)里,不是本地機器上的 X 程序也會遵守同樣的樣式。比如如果你的 .Xdefaults 里面有這些內(nèi)容:

XTerm.background: midnightblue

XTerm.foreground: white

然后你用 xrdb ~/.Xdefaults,那么所有的 xterm 都會使用 midnightblue 作為背景色,使用白色顯示字符。這些配置,用X術(shù)語叫資源(resource)。

有時候你會開很多 xterm 窗口在機器上,它們來自不同的遠程機器,這時候如果它們都用同樣的樣色和字體,你就不容易分辨它們了。比如有一天,我在實驗室的PC機上打開了很多 xterm,它們來自本機,實驗室的 Sun 服務(wù)器,我宿舍的機器和數(shù)據(jù)庫實驗室一臺 HP 服務(wù)器。在我走之前,想關(guān)閉本地的機器,我輸入 “shutdown -h now” 在一個我自認是本地的 xterm 上,結(jié)果,等了一會兒,我回頭看到機器沒關(guān)掉,只是那個 xterm 停止了響應(yīng)。我一拍腦袋:糟了,我把宿舍的機器給關(guān)掉了!

為了避免這種情況,你可以在不同的機器上編輯不同的 .Xdefaults,而不使用 xrdb 在根窗口導(dǎo)入這些配置。這樣不同的機器上的 xterm 使用不同的顏色,你就不容易搞錯了。

怎樣更加深入的了解 Xwindow?

哎喲!我本來想寫很多東西,后來發(fā)現(xiàn)要需要寫的實在太多了。我沒那么多時間,沒辦法,給參考書目吧,你們自己去看。

學(xué)習(xí)使用 Xwindow 不是學(xué)習(xí)使用 Gnome,KDE,…… 很多書籍教用戶怎樣使用 Gnome, KDE 的菜單,配置程序…… 結(jié)果到了最后用戶還是沒能知道 Xwindow 是怎么回事。用那些菜單誰不會啊?真是浪費大家時間。

學(xué)習(xí) Xwindow,其實最好的一個辦法是看看 Xlib 編程的書籍,你可以在圖書館找到這樣的書,我推薦 O'reily 的那本 Xlib 程序設(shè)計書(我忘了名字了),雖然它很老,但是那上面講解的 Xwindow 的工作原理一直都沒有變過。

如果你不會編程序,你可以不看編程的部分而得到很多深入的概念上的認識,比如窗口屬性,字體,顏色,…… 這些東西在你使用 Xwindow 時會有很大幫助。如果你真的要編寫 Xlib 程序,這本書就過時了一點,你最好到 www.x.org去免費下載最新的 Xlib 手冊來看。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉