简介
- 在 Unix Like 上面的图形用户界面 (GUI) 被称为 X 或 X11;
- X11 是一个'软件'而不是一个操作系统;
- X11 是利用网络架构来进行图形界面的执行与绘制;
- 较著名的 X 版本为 X11R6 这一版,目前大部分的 X 都是这一版演化出来的 (包括 X11R7);
- 现在大部分的 distribution 使用的 X 都是由 Xorg 基金会所提供的 X11 软件;
- X11 使用的是 MIT 授权,为类似 GPL 的开放源代码授权方式。
-
主要组件
X Server
X Server 的重点就是在管理客户端的硬件,包括接受键盘/鼠标等设备的输入信息, 并且将图形绘制到屏幕上
X Client
X Server 主要是管理显示界面与在屏幕上绘图,同时将输入设备的行为告知 X Client, 此时 X Client 就会依据这个输入设备的行为来开始处理,最后 X Client 会得到' 嗯! 这个输入设备的行为会产生某个图标',然后将这个图标的显示数据回传给 X Server , X server 再根据 X Client 传来的绘图资料将他描图在自己的屏幕上,来得到显示的结果。
每个 X Client 并不知道其他 X Client 的存在,
X Client 不需要知道 X Server 的硬件配备与操作系统!
X Window Manager:
特殊的 X Client ,负责管理所有的 X client 软件
窗口管理员也是 X client ,只是他主要在负责全部 X client 的控管,还包括提供某些特殊的功能,例如:
- 提供许多的控制元素,包括工作栏、背景桌面的设定等等;
- 管理虚拟桌面 (virtual desktop);
- 提供窗口控制参数,这包括窗口的大小、窗口的重叠显示、窗口的移动、窗口的最小化等等。
常见的窗口管理器:GNOME KDE twm XFCE
Display Manager:提供登入需求
graphical.target 的环境下 ,就是默认tty1提供的登录界面
X启动的端口号
既然 X 是可以跨网络的,那 X 启动的端口口是几号?
X server 应该是要启动一个 port 6000 来与 X client 进行沟通的! 由于系统上面也可能有多个 X 存在,因此我们就会有 port 6001, port 6002... 等等。 这也就是说:(假设为 multi-user.target 模式, 且用户仅曾经切换到 tty1 而已)
启动流程
startx
是一个shell脚本,可以自动查找 xinit所需要的参数,然后调用xinit
startx 可以帮我们快速的找到这些参数而不必手动输入的
startx [X client 參數] -- [X server 參數]
server/client 参数参考方面
- X server 的参数方面:
- 使用 startx 后面接的参数;
- 若无参数,则找寻用户家目录的档案,亦即 ~/.xserverrc
- 若无上述两者,则以 /etc/X11/xinit/xserverrc(centos 7 没有)
- 如果无上述三者,则单纯执行 /usr/bin/X (此即 X server 执行文件,连接至 Xorg命令)
- X client 的参数方面:
- 使用 startx 后面接的参数;
- 若无参数,则找寻用户家目录的档案,亦即 ~/.xinitrc
- 若无上述两者,则以 /etc/X11/xinit/xinitrc
- 如果无上述三者,则单纯执行 xterm (此为 X 底下的终端软件)
调用xinit
最终会调用xinit命令
xinit [client option] -- [server or display option]
如:
xinit xterm -geometry +1+1 -n login -display :0 -- X :0
## 冒号:后面接的是在哪个终端ttyf显示
## -display:0 』表示这个虚拟终端机是启动在『第 :0 号的 X 显示接口'的意思
## :0 表示显示在第一个终端
启动 X Server
由于xserverrc: centos 7 没有
在启动 X Server 时(X/Xorg命令),Xorg 会去读取 /etc/X11/xorg.conf 这个配置文件(也没有)
X也可以直接执行
· 可以直接执行X,但只有一个光秃秃黑屏界面
1. 先來啟動第一個 X 在 :1 畫面中:
[dmtsai@study ~]$ X :1 &
然后加载client组件,和管理器如twm
2. 輸入數個可以在 X 當中執行的虛擬終端機
[dmtsai@study ~]$ xterm -display :1 &
[dmtsai@study ~]$ xterm -display :1 &
启动 X Client
假设你的家目录并没有 ~/.xinitrc ,则此时 X Client 会以 /etc/X11/xinit/xinitrc 来作为激活 X Client 的预设脚本
而你也可以透过修改 /etc/sysconfig/desktop 内的 DESKTOP=GNOME 或 DESKTOP=KDE 来决定默认使用哪个窗口管理器;
X Server 配置文件解析与设定
X server 的配置文件都是默认放置在 /etc/X11 目录下,而相关的显示模块或上面提到的总总模块,则主要放置在 /usr/lib64/xorg/modules 底下;
xorg.conf
从CentOS 6以后(当然包含CentOS 7),X server在每次启动的时候都会自行侦测系统上面的显示芯片、屏幕类型等等,然后自行搭配优化的驱动程序加载。 因此,这个 /etc/X11/xorg.conf 已经不再被需要了‘’----
Xorg -configure
##可以自动产生文件
如果你只想要加入或者是修改部份的设定,并不是每个组件都要自行设定的话,那么可以在 /etc/X11/xorg.conf.d/ 这个目录下建立文件名为 .conf 的档案, 将你需要的额外项目加进去即可
字体管理
我们 Xorg 所使用的字体大部分都是放置于下面的目录中:
- /usr/share/X11/fonts/
- /usr/share/fonts/
显示器调参数
先来测试一下你目前的萤幕搭配显卡所能够处理的解析度与更新频率 (须在 X 环境下)
[root@study ~]# xrandr
##查看
[root@study ~]# xrandr -s 1280x800
##调整
-使用gtf命令
[root@study ~]# gtf 水平像素 垂直像素 更新頻率 [-xv]
選項與參數:
水平像素:就是解析度的 X 軸
垂直像素:就是解析度的 Y 軸
更新頻率:與顯示器有關,一般可以選擇 60, 75, 80, 85 等頻率
-x :使用 Xorg 設定檔的模式輸出,這是預設值
-v :顯示偵測的過程
显卡驱动安装
由于硬件驱动程序与核心有关,因此你想要安装这个驱动程序之前,请务必先参考第二十一章与第二十二章的介绍,才能够顺利的编译出显示卡驱动程序喔! 建议可以直接使用 yum 去安装' Development Tools '这个软件群组以及 kernel-devel 这个软件即可
重启X
两个方法:
1 『 systemctl isolate multi-user.target; systemctl isolate graphical.target 』从文字模式与图形模式的执行等级去切换
2 如果原本就是 graphical.target 的话,那么在 X 的画面中按下『 [alt] + [ctrl] + [backspace] 』三个组合按键, 就能够重新启动 X 窗口