图源:
X Window System
但这并非计算机世界的本来面貌,在苹果推出Apple I以前,计算机都是以字符交互的系统存在于世的,使用者不得不用一些抽象的命令和字符与系统交互,当然,相比于更早期的纸带来说这已经是相当了不起的进步了。但是对于普通人来说,这依然是一个很高的门槛,阻止了计算机的进一步推广,直到Apple I出现。
其实苹果的图形交互也并非原创,当乔帮主在办公室里质问盖茨抄袭Mac OS的时候,盖茨回怼回去——“这就像我们的邻居有一个电视,你和我都想偷回家,只不过你先动手罢了”。感兴趣的可以阅读。
之后的故事已经广为人知,盖茨的Windows横空出世,将PC的使用门槛拉低,虽然很多人不了解GUI(Graphical User Interface)这个词,但这个词已经深入电子产品的方方面面。
虽然Linux的易用性一直不及Windows,使用门槛相对来说高很多,但也并非完全没有为个人用户考虑,它也具有自己的图形界面——X Window System。
发展简史
X Window System最早由MIT在1984年研发,其目的是为UNIX(当时Linux尚未问世)提供一个可以独立运行的图形界面。
1987年,X Window发展到X11版本,取得了长足的进步,后来的改进都是基于这个版本,所以现在X Window又称为X11。
1992年,XFree86计划(X+Free Software+x86)展开,旨在将X Window与X86硬件和类Unix系统完美结合。
1994年发布X11R6,此后X Window都使用这版本的架构。
2004年发布X11R6.8。
2005年发布X11R7.x,目前CentOS 7使用的正是Xorg提供的X11R7.x。
关于X Window,你需要知道的是:
-
X Window是UNIX-like系统上使用的GUI界面,也被称作X或X11。
-
X11是一个程序而非操作系统。
-
X11可以通过网络架构来独立于操作系统运行。
-
目前大部分Linux发行版均使用Xorg提供的X11。
-
X11使用MIT授权。
主要组件
X11在结构上与Windows的GUI最大的不同是它是与操作系统松耦合的,我们都知道,Windows的图形界面引发的一些问题会导致Windows崩溃,而X11并不会,如果X11发生问题,只要重启X11即可,操作系统本身是不会受到重大影响的。
X Window的结构可以用下图表示:
图源:
X Window主要分为两部分:X Server和X Client。
如果是一个网络分布的X11,则用户使用的终端电脑(通常叫做用户端)上会部署X Server,而远程Linux主机(通常称为服务端)上会部署X Client。
我一开始也有点迷糊,这是不是哪里搞错了,好像搞反了一样。其实不然,X Server和X Client是从图像渲染的职责来区分的,而非是网络访问的服务端和用户端的关系。
在我们使用X Window通过网络访问服务器上的应用时,用户端上的X Server会管理本地电脑的大部分硬件(最关键的当然是键鼠和屏幕),将接收用户输出并进行最终显示结果的渲染工作。而真正的数据处理工作将由服务器上的相应应用来执行。之所以可以做到这一点,就是因为X Server可以在收到用户输入后,通过网络将请求数据发送给服务器上的相应X Client,而X Client就可以调用具体的应用(X Application,X应用程序)来处理数据,产生结果后再将结果返回给客户端上的X Server,X Server收到数据后再进行结果渲染。
其实大部分看似是本地服务,其实依赖于网络的设计都和上面的这种架构类似,比如Java的Remote Object。
上面这种设计的好处是,不仅实现了Linux主机操作系统和X的松耦合,只要服务端的主机支持X接口可以部署X Client即可。而且在这种设计下,多个运行X Server的客户端可以同时通过X访问服务端,这也很好的契合了Linux多用户多任务的特点。
当然上面这种网络部署X11的情况并不多见,更多的是将X Server与X Client都部署在一台主机上。
Window Manager
虽然通过上边的X Server和X Client可以实现图形化的数据处理,但是缺少一个统一的应用来管理X Client。
在X中,一个X Client就代表一个运行在X中的图形应用,想象一下,你在Windows中打开了多个应用,但每个应用都仅有内容,没有标题栏,即无法拖动也无法最大最小化,那会是一副怎样的场景。
Window Manager(WM,窗口管理器)正是执行这样的工作,它本身也是一个X Client,但它可以管理其他的X Client,会记录它们在屏幕上的位置、大小等信息,此外还可以控制任务栏、桌面等,以及提供虚拟桌面的功能。
其实用户在桌面看到的大部分内容都是WM提供的,而X可用的WM也有很多种,比如KDE、GNOME、Xfce、twm等。每种WM的显示引擎都不同,侧重点也不同。
下面是主要的WM及其官网:
-
GNOME (GNU Network Object Model Environment):http://www.gnome.org/
-
KDE (K Desktop Enviroment):http://kde.org/
-
twm (Tab Window Manager):http://xwinman.org/vtwm.php
-
XFCE (XForms Common Environment):http://www.xfce.org/
Display Manager
Display Manager最大的用途是提供登录环境,以及加载用户选择的WM与语言设置等。
CentOS中使用的是GNOME Display Manager(gdm)。
启动流程
要启动X,可以在开机后的命令行模式下输入startx
来启动,也可以通过图形界面下使用Display Manager登录来启动。
startx
因为Linux是多用户多任务系统,所以其实X可以根据登录用户的不同有不同的配置。startx
是一个shell
脚本,会根据启动的用户来初始化或加载相应的配置。
startx
命令的使用方式为:
[root@study ~]# startx [X client 參數] -- [X server 參數]
# 範例:以色彩深度為 16 bit 啟動 X
[root@study ~]# startx -- -depth 16
参数部分使用--
分隔为两部分,前边是X Client的设置,后边是X Server的设置。
X加载的配置遵循以下原则:
-
X Server的配置:
-
优先使用
startx
的参数 -
若没有参数,从
~/.xserverrc
加载 -
若没有参数也没有
~/.xserverrc
,则从/etc/X11/xinit/xserverrc
加载 -
前边的配置项都没有,直接执行
/usr/bin/X
-
-
X Client的配置:
-
优先使用
startx
的参数 -
如果没有参数,从
~/.xinitrc
加载 -
如果没有参数也没有
~/.xinitrc
,从/etc/X11/xinit/xinitrc
加载 -
前边的配置项都没有,直接执行
xterm
-
xinit
当startx
加载到配置项后,就会调用xinit
来启动X,其使用方式为:
[root@study ~]# xinit [client option] -- [server or display option]
参数同样被--
分隔为两部分,其实际调用命令大概是这样的:
xinit xterm -geometry +1+1 -n login -display :0 -- X :0
-display :0 -- X :0
表示的意思是将xterm
显示在第0个X Server的第0个X Client。
默认情况下
x :0
指的是tty2终端,x :1
指的是tty3终端。
xserverrc
事实上在CentOS 7中,是不存在X Server
的配置脚本的:
[icexmoon@xyz ~]$ sudo find /etc /home /root -name '*xserver*'
/etc/security/console.apps/xserver
/etc/pam.d/xserver
/etc/selinux/targeted/active/modules/100/xserver
也就是说不存在/etc/X11/xinit/xserverrc
,所以xinit
会直接执行/usr/bin/X
来启动X Server
。
xinitrc
默认情况下是不存在~/.xinitrc
的,仅会存在/etc/x11/xinit/xinitrc
:
[icexmoon@xyz ~]$ sudo find /etc /home /root -name '*xinit*'
/etc/X11/xinit
/etc/X11/xinit/xinitrc
/etc/X11/xinit/xinitrc-common
/etc/X11/xinit/xinitrc.d
所以默认情况下都会通过/etc/x11/xinit/xinitrc
来加载X Client的配置:
[icexmoon@xyz ~]$ cat /etc/X11/xinit/xinitrc | grep -v '^#' | grep -v '^$'
. /etc/X11/xinit/xinitrc-common
if [ -f $HOME/.Xclients ]; then
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
elif [ -f /etc/X11/xinit/Xclients ]; then
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
else
# Failsafe settings. Although we should never get here
# (we provide fallbacks in Xclients as well) it can't hurt.
[ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
[ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
[ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
[ -x /usr/bin/twm ] && /usr/bin/twm
fi
事实上该脚本加载了/etc/X11/xinit/xinitrc-common
,并通过/etc/X11/xinit/xinitrc-common
加载了/etc/X11/xinit/xinitrc.d/*
下的其它脚本,最后启动了一些默认启动的X Application
。
如果因为某种需要,要自定义X Client
加载脚本,可以创建~/.xinitrc
,需要注意的是其中启动X Application
部分需要参考/etc/X11/xinit/xinitrc
中的做法,前边的X Application
需要使用&
在后台执行,最后的WM
需要在前台执行:
[ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
[ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
[ -x /usr/bin/twm ] && /usr/bin/twm
X启动的端口
虽然前面已经说过了,X11是可以通过网络部署的,此时自然需要通过启动相应的端口来实现网络通信,但是在CentOS中,X11都是部署在本地的,所以并不会实际启用端口,而是通过Socket文件的方式进行通信。
如果是通过网络部署,相关的端口情况如下:
X Window System | 显示接口 | 默认终端 | 网络监听端口 |
---|---|---|---|
第一個 X | hostname:0 | tty2 | port 6000 |
第二個 X | hostname:1 | tty3 | port 6001 |
总结
现在总结一下,在命令行下启动X时,会经过以下步骤:
-
通过
startx
来确定需要加载的配置项或配置脚本。 -
通过
xinit
启动X Window System
。 -
xinit
加载X Server
到默认的:0
这个显示接口。 -
xinit
加载X Client
到对应的X
显示接口。
X启动流程测试
在tty1
中执行:
[icexmoon@xyz ~]$ X :1 &
[1] 5717
如果是
tty1
是图形界面,就在终端软件中执行。
X :1 &
将会在tty2
中启动X
,此时是一片黑屏,啥都没有。可以使用Ctrl+Alt+F1
切换回tty1
。
在tty1
中使用命令启动在X
中启动一个xterm
:
[icexmoon@xyz ~]$ xterm -display :1 &
可能会显示不能加载某种字体的错误,不过不影响运行。
此时切换到tty2
就能看到:
这就是一个没有标题栏的终端程序。可以随便输入几个字符或者命令,再切换到tty1
中输入:
[icexmoon@xyz ~]$ xterm -display :1 &
就能在tty2
中看到一个全新的xterm
,并会遮挡住之前的。
下面再尝试启动几个其它的X Application
,启动前先安装相关的软件:
[root@xyz ~]# yum install xorg-x11-apps
在tty1
中执行:
[icexmoon@xyz ~]$ xclock -display :1 &
[icexmoon@xyz ~]$ xeyes -display :1 &
在tty2
中就能看到:
xclock
是一个时钟程序,xeyes
则显示一对眼睛,并会注释鼠标所在的方向。所有这些应用都会以原始大小堆叠在屏幕左上方,并且都没有标题栏,我们也没办法重新放置这些程序。
下面在X
上启动一个Window Manager来看看效果,这里使用的是最简单的WM:twm。
启动前先安装,因为CentOS 7已经不再支持twm
了,所以我们需要安装CentOS 6中使用的版本,这里从网上找了一个rpm
软件包,不过安装时候提示没有签名,需要谨慎安装,不过我们是虚拟机的学习环境,所以无所谓:
[root@xyz ~]# cd /tmp
[root@xyz tmp]# wget ftp://ftp.pbone.net/mirror/vault.centos.org/6.1/os/x86_64/Packages/xorg-x11-twm-1.0.3-5.1.el6.x86_64.rpm
...省略
2021-09-16 15:29:24 (56.2 KB/s) - “xorg-x11-twm-1.0.3-5.1.el6.x86_64.rpm” 已保存 [103264]
[root@xyz tmp]# rpm -ivh xorg-x11-twm-1.0.3-5.1.el6.x86_64.rpm
警告:xorg-x11-twm-1.0.3-5.1.el6.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID c105b9de: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:xorg-x11-twm-1:1.0.3-5.1.el6 ################################# [100%]
[root@xyz tmp]# rpm -qa | grep twm
xorg-x11-twm-1.0.3-5.1.el6.x86_64
因为资源是
ftp
协议,所以没法直接使用yum install
进行下载并安装,这里只能先通过wget
下载到本地,再进行安装。
此外还需要安装twm
配套的字体:
[root@xyz tmp]# yum install xorg-x11-fonts-{100dpi,75dpi,Type1}
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
...省略
和之前的操作一样,在tty1
中执行:
[icexmoon@xyz ~]$ twm -display :1 &
然后切换到tty2
中:
这些X Applications
都具有标题栏了,我们可以进行拖动摆放(虽然黑背景依然挺丑就是了)。
到这里就全部测试完毕了,最后回到tty1
中结束掉测试中开启的任务:
[icexmoon@xyz ~]$ jobs
[1] 运行中 X :1 &
[2] 运行中 xterm -display :1 &
[3] 运行中 xterm -display :1 &
[4] 运行中 xclock -display :1 &
[5]- 运行中 xeyes -display :1 &
[6]+ 运行中 twm -display :1 &
[icexmoon@xyz ~]$ kill -9 %1 %2 %3 %4 %5 %6
[1] 已杀死 X :1
[2] 已杀死 xterm -display :1
[3] 已杀死 xterm -display :1
[4] 已杀死 xclock -display :1
[5]- 已杀死 xeyes -display :1
[6]+ 已杀死 twm -display :1
[icexmoon@xyz ~]$ jobs
是否需要使用X
一般来说,作为网络服务器的Linux主机是不需要X的,因为无论是其上运行的程序还是我们进行的相关管理活动,都可以通过字符终端来完成,不依赖于GUI,如果安装并使用X,反而对主机性能是一种拖累和浪费。
但个人电脑就不一样了,不说影音娱乐方面的需要,单纯一个上网就没法通过纯字符终端解决,现在又不是20年前,哪个网站不是使用web2.0甚至3.0技术,各种交互和js脚本都不是字符终端所能承载的,而要使用chrome或firefox之类的现代浏览器,那肯定是需要一个GUI的。
就我不多的使用经验来看,除了纯作为网络服务器的用途以外,个人电脑,或者用于娱乐中枢,抑或是NAS之类的,都可以装一个X Window,至少我的树莓派4B(4G版)上跑Raspbian的桌面+命令行版本是一点问题都没有的,而跑Ubuntu桌面版就比较拉跨了,或许Ubuntu桌面版还是适合正式的笔记本,微型电脑跑起来很吃力。总之X搭配Linux还是挺自由的,性能强劲就跑个KDE之类的华丽的WM,性能捉急就跑个twm之类的简陋WM,这也算某种程度上的丰俭由人了吧。
X Server配置文件解析与设置
X Server的配置文件默认保存在/etc/X11
目录,相关的显示模块保存在/usr/lib64/xorg/modules
,主要包括:
-
字体:
/usr/share/X11/fonts/
-
显卡驱动:
/usr/lib64/xrog/modules/drivers/
-
主配置文件:
/etc/X11/xorg.conf
分析xorg.conf设置
要查看当前使用的X Server
的版本及相关信息:
[root@xyz tmp]# X -version X.Org X Server 1.20.4 X Protocol Version 11, Revision 0 Build Operating System: 3.10.0-957.1.3.el7.x86_64 Current Operating System: Linux xyz.icexmoon.centos 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=deadline Build Date: 01 April 2020 05:04:29AM Build ID: xorg-x11-server 1.20.4-10.el7 Current version of pixman: 0.34.0 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version.
可以看到,使用的是Xorg提供的1.20.4
版X Server
。
事实上,从CentOS 6开始(包括CentOS 7),X Server在每次启动后会自动检测系统使用的显卡、屏幕等相关硬件信息,并依据相关硬件来自动加载驱动。因此已经不再依赖主配置文件/etc/X11/xorg.conf
了,这个文件已经不存在于CentOS 7中。
但如果你不想让X Server自动检测硬件,可以手动创建该配置文件。如果只是想在自动检测的基础上修改部分设置,可以在/etc/X11/xorg.conf.d/
目录下创建.conf
命名的配置文件。
虽然现在已经不存在主配置文件了,但是我们依然可以使用相关命令生成一个主配置文件,用于学习:
[root@xyz tmp]# systemctl isolate multi-user.target
[root@xyz tmp]# Xorg -configure
X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
Build Operating System: 3.10.0-957.1.3.el7.x86_64
Current Operating System: Linux xyz.icexmoon.centos 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap ...省略
Your xorg.conf file is /root/xorg.conf.new
To test the server, run 'X -config /root/xorg.conf.new'
(EE) Server terminated with error (2). Closing log file.
Xorg -configure
会根据自动检测的结果来生成一个X Server
主配置文件:/root/xorg.conf.new
。当然这个文件现在只能用来分析和学习,要让其生效还要移动到主配置档应该保存的目录,并重命名。最后还提示我们可以使用x -config /root/xorg.conf.new
命令进行测试。
下面我们来查看该文件:
[root@xyz tmp]# cat /root/xorg.conf.new
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/lib64/xorg/modules"
FontPath "catalogue:/etc/X11/fontpath.d"
FontPath "built-ins"
EndSection
Section "Module"
Load "glx"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
### <percent>: "<f>%"
### [arg]: arg optional
#Option "HWcursor" # [<bool>]
#Option "Xinerama" # [<bool>]
#Option "StaticXinerama" # <str>
#Option "GuiLayout" # <str>
#Option "AddDefaultMode" # [<bool>]
#Option "RenderAccel" # [<bool>]
#Option "DRI" # [<bool>]
#Option "DirectPresents" # [<bool>]
#Option "HWPresents" # [<bool>]
#Option "RenderCheck" # [<bool>]
Identifier "Card0"
Driver "vmware"
BusID "PCI:0:15:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
可发现主要的配置项都是包裹在Section...EndSection
语句块中的,Section
语句之后跟着配置项名称(section name),主要有以下这些配置项:
-
Module:被加载到X Server中的模块。
-
InputDevice:输入设备,包括键盘、鼠标等。
-
Files:字体所在的目录。
-
Monitor:显示器设置,主要包括水平、垂直刷新率等。
-
Device:显卡相关设置。
-
Screen:屏幕相关设置,包括分辨率与色彩深度等。
-
ServerLayout:上述配置项可以有多个名称重复的配置,可以由
ServerLayout
具体决定使用哪个。
这其中的Monitor
和Screen
都是显示器相关的设置,区别是前者是硬件相关的设置,后者是软件相关的设置。
要让xorg.conf.new
生效,只要重命名为.conf
后缀的文件,并移动到/etc/X11/xorg.conf.d
目录即可:
[root@xyz tmp]# cp /root/xorg.conf.new /etc/X11/xorg.conf.d/icexmoon.conf
[root@xyz tmp]# systemctl isolate multi-user.target ;systemctl isolate graphical.target
也可以在
multi-user.target
下使用startx
来生效。
字体管理
Xorg
使用的字体主要保存在:
-
/usr/share/X11/fonts/
-
/usr/share/fonts/
如果要安装一种新的字体(比如楷体),可以这样:
[root@xyz tmp]# ll -d /usr/share/fonts/cjk*
drwxr-xr-x. 2 root root 36 7月 24 14:38 /usr/share/fonts/cjkuni-uming
[root@xyz tmp]# yum install cjkuni-ukai-fonts
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
...省略
已安装:
cjkuni-ukai-fonts.noarch 0:0.2.20080216.1-51.el7
完毕!
[root@xyz tmp]# ll -d /usr/share/fonts/cjk*
drwxr-xr-x. 2 root root 35 9月 16 16:34 /usr/share/fonts/cjkuni-ukai
drwxr-xr-x. 2 root root 36 7月 24 14:38 /usr/share/fonts/cjkuni-uming
[root@xyz tmp]# ll /etc/X11/fontpath.d/
总用量 0
lrwxrwxrwx. 1 root root 29 9月 16 16:34 cjkuni-ukai-fonts -> /usr/share/fonts/cjkuni-ukai/
lrwxrwxrwx. 1 root root 30 7月 24 14:38 cjkuni-uming-fonts -> /usr/share/fonts/cjkuni-uming/
lrwxrwxrwx. 1 root root 27 7月 24 14:33 liberation-fonts -> /usr/share/fonts/liberation
lrwxrwxrwx. 1 root root 27 9月 16 15:36 xorg-x11-fonts-100dpi:unscaled:pri=30 -> /usr/share/X11/fonts/100dpi
lrwxrwxrwx. 1 root root 26 9月 16 15:36 xorg-x11-fonts-75dpi:unscaled:pri=20 -> /usr/share/X11/fonts/75dpi
lrwxrwxrwx. 1 root root 26 7月 24 14:34 xorg-x11-fonts-Type1 -> /usr/share/X11/fonts/Type1
可以看到,安装字体后在/etc/X11/fontpath.d
目录下会自动创建链接。
安装好字体文件后需要建立字体缓存:
[root@xyz tmp]# fc-cache -v | grep ukai
/usr/share/fonts/cjkuni-ukai: 跳过,当前缓存有效:4 个字体,0 个目录
/usr/share/fonts/cjkuni-ukai: 跳过,探测到循环目录
[root@xyz tmp]# fc-list | grep ukai
/usr/share/fonts/cjkuni-ukai/ukai.ttc: AR PL UKai TW:style=Book
/usr/share/fonts/cjkuni-ukai/ukai.ttc: AR PL UKai HK:style=Book
/usr/share/fonts/cjkuni-ukai/ukai.ttc: AR PL UKai CN:style=Book
/usr/share/fonts/cjkuni-ukai/ukai.ttc: AR PL UKai TW MBE:style=Book
最后还需要重启X11
以加载新字体:
[root@xyz tmp]# !965
systemctl isolate multi-user.target ;systemctl isolate graphical.target
现在在应用程序》工具》fonts
中就可以找到新添加的字体ukai
了:
显示参数微调
在图形界面下输入xrandr
可以检查屏幕相关信息:
[icexmoon@xyz ~]$ xrandr
Screen 0: minimum 1 x 1, current 1718 x 852, maximum 8192 x 8192
Virtual1 connected primary 1718x852+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1718x852 60.00*+
2560x1600 59.99
1920x1440 60.00
1856x1392 60.00
1792x1344 60.00
1920x1200 59.88
1600x1200 60.00
1680x1050 59.95
1400x1050 59.98
1280x1024 60.02
1440x900 59.89
1280x960 60.00
1360x768 60.02
1280x800 59.81
1152x864 75.00
1280x768 59.87
1024x768 60.00
800x600 60.32
640x480 59.94
Virtual2 disconnected (normal left inverted right x axis y axis)
Virtual3 disconnected (normal left inverted right x axis y axis)
Virtual4 disconnected (normal left inverted right x axis y axis)
Virtual5 disconnected (normal left inverted right x axis y axis)
Virtual6 disconnected (normal left inverted right x axis y axis)
Virtual7 disconnected (normal left inverted right x axis y axis)
Virtual8 disconnected (normal left inverted right x axis y axis)
当前使用的分辨率是1718*852
,假设我们要修改分辨率,可以这样:
[icexmoon@xyz ~]$ xrandr -s 1280x800
要注意的是:
-
必须输入
1280x800
而不是1280*800
。 -
所输入的分辨率必须是上边的预设分辨率列表中的一种。
如果我们想使用预设分辨率中不存在的分辨率设置,可以:
[icexmoon@xyz ~]$ gtf 1700 850 60 -x
# 1696x850 @ 60.00 Hz (GTF) hsync: 52.80 kHz; pclk: 118.27 MHz
Modeline "1696x850_60.00" 118.27 1696 1792 1968 2240 850 851 854 880 -HSync +Vsync
将上边生成的配置信息写入之前创建的配置文件:
[root@xyz tmp]# cd /etc/X11/xorg.conf.d/
[root@xyz xorg.conf.d]# cp icexmoon.conf icexmoon.conf.bak
[root@xyz xorg.conf.d]# vim icexmoon.conf
[root@xyz xorg.conf.d]# diff icexmoon.conf icexmoon.conf.bak
35d34
< Modeline "1696x850_60.00" 118.27 1696 1792 1968 2240 850 851 854 880 -HSync +Vsync
[root@xyz xorg.conf.d]# systemctl isolate multi-user.target ;systemctl isolate graphical.target
再在虚拟机中的图形界面下查看屏幕显示信息:
[icexmoon@xyz ~]$ xrandr
Screen 0: minimum 1 x 1, current 1718 x 852, maximum 8192 x 8192
Virtual1 connected primary 1718x852+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
...省略
1696x850_60.00 60.00
1280x1024 60.02
1440x900 59.89
1280x960 60.00
1360x768 60.02
1280x800 59.81
...省略
现在有了一个1696x850_60.00
的配置项,我们可以使用xrandr -s 1696x850_60.00
的方式使用这个配置项。
显卡驱动程序安装范例
在这一小节《鸟哥的Linux私房菜》展示了NVIDIA、Intel、AMD相关的驱动安装示例,因为我这里并没有合适的相关硬件,所以不做测试和总结,相关的内容请移步鸟哥的站点。
文章评论