x-window

了解x window 架構及 過程

[X11]

更新記錄

item note
20160712 第一版
20170222 增加x-windows

目錄


x-windows

來源:Linux作業系統之奧義 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

[X11]
  • 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)
[X11]

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 : x.org, Xfree86, X-win32
2- libwayland-server: Wayland Compositor
system daemons: 1- systemd
2- D-Bus-Daemon
User Interface Toolkits libwaylan-client: GTK+ , QT, SDL
[X11]

User interface

GNOME graphical user interface

[GNOME]

KDE graphical user interface

[KDE]

Xfce graphical user interface

[Xfce]

參考來源