当前位置:网站首页>X Window System介紹
X Window System介紹
2020-11-06 01:28:00 【itread01】
什麼是X Window System?
Unix Like系統下的GUI視窗系統。硬體之上的一個介面層,它是作業系統上的一個應用程式,並且包含了網路通訊協議。現在大部分的distribution使用的X都是由Xorg基金會提供的X11軟體。因此檢視常用的Linux系統可以看到X11和Xorg執行程式。
主要元件
X Window System是一套採用了網路架構的圖形使用者介面軟體,主要包含X Server和X Client兩個元件。X Server管理硬體,負責輸入輸出顯示等。X Client負責接受X Server的輸入和為X Server提供資料。需要注意的是不同於常見的客戶端伺服器結構,X Server是管理客戶端的硬體,包括鍵盤滑鼠等裝置的輸入並將圖形繪製到螢幕上,一般運行於客戶機上,X Client提供X Server需要顯示的資料,它一般執行在客戶機和遠端伺服器上。這點與一般web的CS架構不同。
1.X Server
它的主要任務就是管理客戶端主機上的硬體裝置,包括鍵盤、滑鼠、顯示器以及相應的驅動程式等。它將客戶端輸入裝置的動作告知X Client,X Client則負責處理這些動作。
2.X Client
它將Server傳來的輸入裝置行為產生資料並將資料回傳給Server,X Server根據回傳的資料將它顯示在自己的螢幕上。X Client也稱之為X Application。並且可以有多個X Client,他們相互之間是各自獨立的,因此在顯示時可能會產生重疊。X Client不需要知道X Server的硬體配置與作業系統,只要遵循網路協議即可。
3.X Window Manager
它是一種特殊的X Client,負責管理所有的X Client。上面提到的多個X Client在顯示時可能會產生重疊,因此需要一個管理它們的工具,也就是X Window Manager了。負責管理桌面,視窗大小,重疊,視窗移動等引數。Linux下常見的有:
GNOME(GNU Network Object Model Environment)
KDE(K Desktop Environment)
twm(Tab Window Manager)
XFCE(XForms Common Environment)
以CentOS的GNOME為例,需要在CentOS主機上有Xorg的X Server核心,負責螢幕繪製,然後為了方便視窗管理,就需要GNOME這個window manager,為了自己使用更方便,在GNOME上加裝更多視窗應用軟體,如Firefox、輸入法等,這樣就構建出了X WIndow System。這些元件往往同時存在於一個Linux主機上。
4.Display Manager
作業系統的圖形登入介面,它的任務就是提供登入環境,並且載入使用者選擇的Window Manager與語系等資料。在CentOS上GNOME提供了GNOME Display Manager(gdm)的圖形介面登陸。
X Window的啟動流程
在啟動X Window System時,必須先啟動管理硬體與繪圖的X Server,然後才載入X Client。基本上,目前都是使用WIndow Manager來管理視窗介面風格的。可以通過登入本機的文字介面後,輸入startx來啟動X視窗;也可以通過diplay manager提供的登入畫面輸入賬號密碼登入來啟動X視窗。下面介紹從命令列入口啟動X的流程。
startx
從命令列登入系統後,輸入startx(shell指令碼),它的任務就是找到使用者或系統預設的X Server與X Client的配置檔案,也可以在startx後接配置引數,格式如下
startx [X client引數] -- [X server引數] #如startx -- -depth 16
注意後面的引數以--隔開,前面是client的設定,後面是server的設定。
xinit
實際上startx會啟動xinit,startx在幫它找出設定引數。
語法格式
xinit [client option] -- [server or display option]
系統預設的startx,等於
xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc
若xserverrc不存在,則是
xinit /etc/X11/xinit/xinitrc -- /usr/bin/X
單純執行xinit,系統的預設X client和X server是這樣的
xinit xterm -geometry +1+1 -n login -display :0 -- X :0
X server引數
startx後面的引數
若無,則~/.xserverrc
若無,則/etc/X11/xinit/xserverrc
若無,則單純執行/usr/bin/X
X client引數
startx後面的引數
若無,則~/.xinitrc
若無,則/etc/X11/xinit/xinitrc
若無,則單純執行xterm
最終會載入KDE或者GNOME,X Client中的兩個指令搜尋,startkde和gnome-session,這是CentOS預設的兩個主要的WIndow Manager。
概括來說,在命令列模式下啟動X時,直接使用startx找到X Server與X Client的引數或配置檔案,然後開啟xinit啟動X視窗系統。xinit先載入X Server找到預設的 :0這個現實介面,然後再載入X Client到這個X現實介面上。而X Client通常就是GNOME或者KDE。另外使用ctrl+alt+Fn可以切換不同終端畫面。
X啟動流程測試
在tty1中,啟動第一個X在:1畫面
X :1 &
返回tty1中
xterm -display :1 &
再次在tty1中
xterm -display :1 &
xclock -display :1 &
xeyes -display :1 &
在tty1中,啟動Window Manager
twm -display :1 &
&n
版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
https://www.itread01.com/content/1604511183.html
边栏推荐
猜你喜欢
随机推荐
什么是无副作用的函数方法?如何取名? - Mario
写一个通用的幂等组件,我觉得很有必要
让人怪不好意思的,粉丝破万,用了1年!
Python 基于jwt实现认证机制流程解析
C语言中字符字符串以及内存操作函数
[译] 5个Vuex插件,给你的下个VueJS项目
面经手册 · 第15篇《码农会锁,synchronized 解毒,剖析源码深度分析!》
Using tensorflow to forecast the rental price of airbnb in New York City
Polkadot系列(二)——混合共识详解
Using lime to explain black box ML model
按指定基准对齐的分组运算
8.2.2 inject bean (interceptor and filter) into filter through delegatingfilterproxy
使用ES5实现ES6的Class
让前端攻城师独立于后端进行开发: Mock.js
如何选择分类模型的评价指标
一文带你了解 Jest 单元测试
直接保存文件至 Google Drive 并用十倍的速度下载回来
tensorflow之tf.tile\tf.slice等函数的基本用法解读
8.1.1 handling global exceptions through handlerexceptionresolver
我们编写 React 组件的最佳实践