• X Window System介绍


    什么是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 &
  • 相关阅读:
    Serverless 架构到底要不要服务器?
    Serverless 在 SaaS 领域的最佳实践
    20 行代码:Serverless 架构下用 Python 轻松搞定图像分类和预测
    创业公司用 Serverless,到底香不香?
    如何通过 Serverless 轻松识别验证码?
    Serverless 是一种思想状态
    都 2021 年了,Serverless 能取代微服务吗?
    从零入门 Serverless | 架构的演进
    Serverless 的价值
    实验楼前后端代码
  • 原文地址:https://www.cnblogs.com/nuoforever/p/13928856.html
Copyright © 2020-2023  润新知