了解x window 架構及 過程
更新記錄
item | note |
---|---|
20160712 | 第一版 |
20170222 | 增加x-windows |
目錄
x-windows
X Windows由三個部分組成
- X Server:主控台
- X Client: 應用軟体
- Window Manager: 視窗管理軟体
GNOME及KDE為Desktop Manager
X Server
- 1個Linux中可以同時存在好幾個X Server
- 因此,要先給所執行的X Server 一個編號,像「X:2」
- X啟動時,預設的編號會從0開始計算(並以第7個console,也就是Ctrl+Alt+7)產生第一個X Server
X Client
- X Client就有非常多的軟體可以使用,最簡單的就是xterm
- xterm –display:0,就可以將該xterm軟體在編號為0的X Server上執行
x window 過程
由於X只是工具套件及架構規範,本身並無實際參與運作的實體,所以必須有人依據此標準進行開發撰寫
item | description |
---|---|
1984 | 麻省理工學院 (MIT) 與 DEC(Digital Equipment Corporation) 進行 Athena 計劃發展 X Window System (根據史丹佛大學的 W 視窗系統為基礎);同年間,第一個版本 X1 發行 |
1987 | X.Org所用的協定版本,X11,是在1987年9月所發佈 |
1995 | X協會公司接手了UNIX系统的Motif工具箱和CDE(Common Desktop Environment)共通桌面環境。而原有的X協會在发布了最后一个版本的X11R6.3后,于1996年末解散 |
2004 | 最常见的X变体是XFree86 (它源于X的386兼容的PC机的移植) |
2012 | X.Org基金会所領導 , 最新的參考實作(參考性、示範性的實作體)版本則是X11 Release 7.7(簡稱:X11R7.7) |
- X11R7.7 : 代表 X Window 的第十一版中,所開發的第七次發行第7次修正版本
- Microsoft的Windows本身不包含对X的支持, 其中有自由软件 X客户端: Cygwin/X、Xming, Xmanager
X的C/S模式
- X能為GUI環境提供基本的框架
- X採用C/S的架構模型,由一个X服务器与多個X客户端程序進行通讯
x window 架構
X Window System core protocol
X Window 源於1984年的麻省理工學院(目前所發佈的 X11 發表於1987年9月)
- 來源:X Window System core protocol
- The X Window System core protocol is the base protocol of the X Window System, which is a networked windowing system for bitmap displays used to build graphical user interfaces on Unix, Unix-like, and other operating systems.
X Window System
- client–server model
- a single server controls the input/output hardware, such as the screen, the keyboard, and the mouse
- all application programs act as clients
only four kinds of packets are sent, asynchronously, over the network: requests, replies, events, and errors
- X Windows建立標準的server及clinet溝通協定
- 大部分的客戶端程式藉由 Xlib 客戶端程式庫與伺服器交流
- Xaw、Motif、GTK+、Qt 之類使用到 Xlib 的程式庫,方便和伺服器互動
- 使用者的期間要如何開始,也是核心協議未能涵蓋到的問題,這部分通常由X顯示管理器自動完成
- 使用者也可以執行xinit或startx程式,以手動的方式開始一個X会话
X Windows System Stack
item | description |
---|---|
X server | X.Org Server , Cygwin/X , XFree86 |
client 可使用的library | Xlib , XCB |
X 顯示管理器 | 顯示管理器在本機電腦上執行一個或多個 X 伺服器,並接受來自遠端電腦上執行的 X 伺服器的新連線 |
1- GNOME显示管理器 (GNOME Display Manager,GDM) | |
2- KDE 顯示管理器 (KDM) | |
3- LightDM 顯示管理器 (LightDM) | |
4- XDM 是 X Window 系統所提供最基本的顯示管理器 | |
5- twm (Tab Window Manager) | |
使用者界面元件 | 1- Motif (CDE) |
2- GTK+ (用於GNOME) | |
3- QT (用於KDE) |
Xlib
- Xlib appeared around 1985
- The XCB library is an attempt to replace Xlib
- Xlib (also known as libX11) is an X Window System protocol client library written in the C programming language
Xlib functions to provide widget toolkits
- X Toolkit intrinsics (Xt)
- Athena widget set (Xaw)
- Motif
- FLTK
- GTK+
- QT(X11 version)
- SDL (Simple DirectMedia Layer)
Xlib does not provide support for buttons, menus, scrollbars, etc. Such widgets are provided by other libraries , which in turn use Xlib
- libraries built atop of the X Toolkit Intrinsics library (Xt), which provides support for widgets
- libraries that provide widget sets using Xlib directly, without the Xt library, such as the X versions of GTK+, Qt, FLTK and fpGUI.
XCB
- XCB (X protocol C-language Binding) is a library implementing the client-side of the X11 display server protocol
- The project was started in 2001 by Bart Massey and aims to replace Xlib
- The main goals of XCB are to
- Reduce library size and complexity
- Provide direct access to the X11 protocol
Open Source Dislplay Servers
item | description |
---|---|
display server | 1- libxserver |
2- libwayland-server: Wayland Compositor | |
system daemons: | 1- systemd |
2- D-Bus-Daemon | |
User Interface Toolkits | libwaylan-client: GTK+ , QT, SDL |