就是 X Window System ,1984年由MIT研发,它的设计哲学之一是:提供机制,而非策略。
主要特点:1,Server/Client网络模型。2,通过扩展使它保持”与时俱进”。
Linux内核是没有GUI图形显示的,X Window的目标就是提供GUI的显示。
为啥要命名为X呢,因为英文字母X就在W(indow)后面,戏称为下一版的新视窗之意。XFree86 『 X + Free software + x86硬件 』
@在 Unix Like 上面的圖形使用者介面 (GUI) 被稱為 X 或 X11;
@X11 是一個『軟體』而不是一個作業系統;
@X11 是利用网络架构来进行图形界面的执行与绘制;
@較著名的 X 版本為 X11R6 這一版,目前大部分的 X 都是這一版演化出來的 (包括 X11R7);
@現在大部分的 distribution 使用的 X 都是由 Xorg 基金會所提供的 X11 軟體;
@X11 使用的是 MIT 授權,為類似 GPL 的開放原始碼授權方式。
”X Window System’,通常简称为X11或只是X。
X.org 项目旨在创建和维护一个自由、可再发行的并且开源的 X11。它是一个开放源码,基于X11桌面所需要的基本软件。
XWindow在推出之后快速演化,在1987年时候,其核心协议已经是第11版本了,简称:x11。这个版本已经将”提供机制,而非策略”这个哲学贯彻地非常彻底,以致于核心协议基本稳定,不需要特别大的改动。于是乎,你看到了,现在是2018年,整整31年了,X Window依然是X11。
尽管31年过去了,基于X Window的GNOME、KDE,还能保持与同期Windows、Mac OS X竞争甚至某些方面更好,你就不得不佩服这些前辈在最初设计时定下的设计哲学是多么正确了。
X11只定义了如何与内核通讯、如何与Client通讯,具体的策略,依然是交给开发者自己。
图
X Window System是基于网络架构的客户端,服务器模式,基本上是分成 X Server和 X Client 两个组件而已。
基于X11 协议的客户端;X Client 最重要的工作就是處理來自 X Server 的動作,將該動作處理成為繪圖資料, 再將這些繪圖資料傳回給 X Server 囉!
基于X11 协议的服务端。管理硬件设备(驱动),键盘鼠标显示器等。
X Client主要就是告知 X Server 要绘制什么。X Server 的主要功能 ( 不论是 Xorg 或是 XFree86 都是一个 X server 喔!) 就是在管理 X Server 所在主机上面关于显示的硬件配备啦~ 例如显示卡、屏幕分辨率、键盘形式、鼠标形式等等。
Xorg 基金会。Xorg也是一个X server。Xorg 项目提供了一个 X 窗口系统(图形化用户界面的基础)的开源实现。
x_ser_cli.gif
視窗管理員,特殊的 X Client ,負責管理所有的 X client 軟體
KDE, GNOME, XFCE等都是X Window Manager具体的实现。
(linux 两大桌面环境是 KDE 和 gnome
最常用的轻量级桌面环境是 Xfce
另外ubuntu 在gnome 的基础上自己做了桌面环境叫 Unity )
提供登入需求,登入够进入GUI界面(X Window Manager);
可以透過登入本機的文字介面後,輸入 startx 來啟動 X 視窗;也能夠透過 display manager (如果有啟動 graphical.target) 提供的登入畫面,輸入你的帳號密碼來登入與取得 X 視窗的!
start X window system. 可以接X Client和X Server的参数。
在預設的情況下 (使用者尚未有 ~/.xinitrc 等檔案時),你輸入 startx , 就等於進行 xinit /etc/X11/xinit/xinitrc – /etc/X11/xinit/xserverrc 這個指令一般!
那為什麼不要直接執行 xinit 而是使用 startx 來呼叫 xinit 呢?這是因為我們必須要取得一些參數嘛! startx 可以幫我們快速的找到這些參數而不必手動輸入的。
X 視窗最先需要啟動的就是 X server 啊,那 X server 啟動的腳本與參數是透過 /etc/X11/xinit/ 裡面的 xserverrc 。
xserverrc:
exec /usr/bin/X -nolistem tcp “$@”
啟動了 X server 後,接下來就是載入 X client 到這個 X server 上面啦!
C Language X Interface is a reference guide to the low-level C language interface to the X Window System protocol.
X 視窗底下的虛擬終端機。
X session(X会话)
Xsession是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于Xsession的内容。管理X session的程序称为DisplayManager,常听说的gdm或kdm就是gnome/kde所分别对应的Display Manager。
Display Manager(后简称DM)是管理Xsession的程序,常见的有gdm, kdm,xdm等。
如果没有设置DM在开机时运行的话,手动启动X使用startx命令。
man startx
可以知道,startx的作用可以看作是DisplayManager的一种隐性实现。它使用xinit命令,分别根据/etc/X11/xinit/xinitrc和/etc/X11/xinit/xserverrc中所指定的设置唤起X。
其中,xserverrc执行Xserver的运行任务;xinitrc则运行Xsession命令。从/etc/X11/Xsession脚本的内容可以看出,它也就是进入/etc/X11/Xsession.d/目录轮询地执行所有脚本。很明显,这些也就是前面所说的Xsession初始化工作。
综合起来说,Display Manager完成三个任务:1, X Server的启动; 2, Xsession的初始化; 3, X session的管理。
“显示服务器”(Display Server)传统X Window在渲染图形时需要不停的向Server请求、确认再绘制这个繁琐的过程
GTK+、Qt,现在都是基于X的,。
X Window 僅是 Linux 系統內的一個軟體
XWindowSystem本身是一个极其杂的图形化作业环境,我们大约能够将它分成三个局部来讲,离别是XServer、 XClient、XProtocol;XServer重要是处理输入输出的讯息提供X服务(),XClient是厉行大部份利用程式的计算功能(X应用终端),而 XProtocol则是发生XServer和XClient的沟通管道.
Xserver 和 Xclient 用 X protocol协议通讯,Xserver给Xclient发送的信息叫『Event』,Xclient向Xserver发送的信息叫『Request』。
xdm应该叫x『显示管理器』(x display manager)
Xwindow是工作站图形系统的工业标准,它有多种不同的实现,Ubuntu系统中使用的为Xorg。
本地X客户端 ┐ ┌ 键盘
远程X客户端 ┼ X协议 ─ X服务器 ─ 硬件规范 ┼ 鼠标
远程X客户端 ┘ └ 显示器
X server 不是指某台机器,而是指一个进程,它负责接受客户的要求,在屏幕上显示客户请求的图形,并且把消息(键盘,鼠标,窗口消息)通知客户程序。
(
X is an application that manages one or more graphics displays and one or more input devices (keyboard, mouse, etc.) connected to the computer.
It works as a server and can run on the local computer or on another computer on the network. Services can communicate with the X server to display graphical interfaces and receive input from the user.
It’s worth noting, a common component used with an X server is the Window Manager, an application that manages the resizing and moving of windows and decorative elements of windows such as title bars, minimize, and close buttons.
The X server can be started with the ‘startx’ command, or more commonly, from a display manager such as gdm.
~/.xinitrc is a shell script used by xinit, that starts the X server when not using a display manager, to define some application to start automatically in the X server.
/etc/X11/xorg.conf is a configuration file used to give the X server information about the hardware components used, but now the X server can avoid using it, because it is capable of autoconfiguring itself.)
什么是窗口管理器、GNOME、KDE、XDM、KDM、GDM
一、窗口管理器
1、窗口管理器:它是负责管理窗口的移动、最大化、最小化、改变大小以及关闭等工作
2、常见的窗口管理器
1)twm(X.org提供的简单的窗口管理器)
2)gnome-wm(gnome提供的窗口管理器)
3)kwin(KDE使用的窗口管理器)
4)FVWM(一款知名的窗口管理器)
二、GNOME、KDE
GNOME、KDE是桌面系统,是集成了窗口管理器及一些应用程序的套件
三、XDM、GDM和KDM
XDM、GDM、KDM是三种X Window的显示管理器,其功能相当于文本模式下的init、getty和login;当用户输入的正确的用户名和口令后将开启一个会话
(1)XDM(默认的X Window System Display Manager)
(2)GDM(gnome提供的Display Manager)
(3)KDM(KDE提供的Display Manager)
ubuntu: 根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow服务器 xorg;
//————————————————-
Base System => X Protocol => Windows Manager => Application
1.Base System :kernel, filesystem, glibc, bash等.zuixiaoxitong.
2.在Linux早期的时候,是通过XFree86来实现X协议,经过多年的发展,XFree86已经更替为今天的X.Org项目。
3. Windows Manager
有了X层的支持以后,广大开源软件开发者或开发组织,就可以基于这样的一个接口,来开发上层的图形化窗口管理器,即Windows Manager, 比如我们熟知的KDE,Gnome, Xfce, Openbox等,这些图形化的桌面环境也就是对上面提到的X Client的一个具体实现,来和 X Server进行交互通信。
4. Application
Application也就是指我们的上层图形化应用程序,比如 Liberoffice办公套件,Firefox,Thunderbird,Pidgin等。
Linux系统中的大多数图形化应用程序都是基于QT或GTK+这两个开发套件来开发的,当然也有像Java, Python等编写的应用程序。
//————————————————-
参考:
https://blog.csdn.net/chrisniu1984/article/details/6620625
http://linux.vbird.org/linux_basic/0590xwindow.php
http://www.xuebuyuan.com/509309.html
https://blog.csdn.net/datamining2005/article/details/54694766
https://www.cnblogs.com/toughlife/p/5633960.html Ubuntu Server安装图形界面全过程
https://blog.csdn.net/zhangna20151015/article/details/51283367