Keep learning, keep living...

0%

CentOS7配置Console界面运行openbox

之前的文章<<CentOS7配置Console GUI/TUI程序>>介绍了在CentOS7Console界面上配置GUI/TUI可视化程序的几种方法。尽管这些GUI程序可以简化系统的配置难度,但对于界面要求复杂的专用场景较不是很适用,比如需要支持鼠标操作等。但安装完整的一套桌面环境,对服务器的资源占用又较大,这种场景下,可以只安装X Windowopenbox来支撑运行完整图形界面程序。

X Window被设计为Client/Server架构。Server负责图形设备和外部设备的处理来显示画图和处理外设操作,而图形界面程序作为Client只是通知Server进行相应的操作,如画线,显示字符等等。ClientServer之间不要求位于同一台计算机,它们之间可以通过网络进行协议传输。ClientServer的角色和我们日常网络访问所说的ClientServer相比。一般我们日常通过SSH登录服务器,我们所看到界面和操作外设的一端做为客户端,我们所使用的应用位于服务端。而在X Window体系下。我们看到界面和操作外设的一端是X Server, 而图形界面程序运行的一端是X Client

对于任一X Client来说,它并不知晓其他X Client的存在,对于他们在同一X Server上如何排放,需要另一个组件来完成,这就是窗口管理器, 它也是一个X Client,只是它负责的是其他X Client的管理, 示意图如下:

因为各个X Client完全可以使用不同的图形库进行开发,图形风格可以完全不一样。为了使不同的图形程序风格一致,因而出现了GNOMEKDE等桌面环境,其上的图形程序共用相同的图形库等,因而呈现出一致的展示风格。

对于文章开头提到的需求,只是为了在console界面中使用有限个数图形应用程序,没有必要使用庞大的桌面环境,只需要安装X Server和一个窗口管理器。openbox就是一个非常轻量、可灵活配置的容器管理器。

下面我们在CentOS7上进行实践。

首先安装X Window相关组件和openbox:

1
2
3
yum install -y xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-xinit xorg-x11-drivers
yum install -y epel-release
yum install -y openbox

正常情况下,console界面下初始化运行的是getty程序,在CentOS7下为agetty。之前的文章中介绍了几种相应自动运行程序的方法:

  • 将GUI程序作为getty程序执行
  • 将GUI程序替换login程序执行,这种方式需要跳过getty程序读取用户名的步骤
  • 将GUI程序作为shell程序执行,这种方式需要完成自动登录,跳过密码校验之前的步骤

除了以上这些方法之外,我们还可以在bashrc中自动启动程序。

因为我们要启动X Server环境,需要使用startx脚本,因而采用这种方式。

修改文件/root/.bashrc, 添加如下内容:

1
2
3
4
5
6
TTY=${TTY:-$(tty)}

if [ x"$TTY" = x"/dev/tty1" ]; then
printf -v vt 'vt%02d' "${TTY#/dev/tty}"
exec startx `which openbox-session` -- $vt > /dev/null 2>&1
fi

跳过root自动登录的部分和之前文章中介绍的一致。修改完成后,重启我们的CentOS,可以看到灰黑色的openbox界面:

鼠标右击可以看到openbox的菜单:

openbox的配置相当灵活,可以配置文件进行修改和配置。可以参考文章:
https://linuxtoy.org/archives/openbox-getting-started-guide.html

openbox可以配置自动加载应用程序,这样就可以实现Console界面上自动运行我们所开发的图形界面程序了。

我们创建文件~/.config/openbox/autostart, 添加如下内容运行一个示意的XClock

1
/usr/bin/xclock &

重新启动CentOS7, 界面如下,自动运行了xclock程序:

参考: