思路

在嵌入式Linux系统里,整机一般只运行一个应用,并且是开机自启动,所以用不上Display Manager,可以直接替换成应用。
替换后,就没有窗口系统了,应用也就不会带上窗口系统的标题栏、关闭按钮等,实现被动全屏

操作步骤

在Ubuntu 1604上验证通过,其他环境大同小异

禁用默认DM(Display Manger)

修改/etc/X11/default-display-manager配置文件,默认值应该是/usr/sbin/lightdm之类的,将其内容改成false

  • 注意不要将原来的内容用#注释再加false,这样不会生效,因为X只读第一行,并以为是DM的路径,造成混乱。

创建自己的startx脚本

以系统自带的startx为蓝本,在启动xinit命令那一行前面,加上client环境变量的赋值,就构成了my-startx脚本:

client="/root/sh/startApp.sh"   # startApp.sh是我们的应用(你也可以替换成firefox等,只要是GUI程序就行)
xinit "$client" $clientargs -- "$server" $display $serverargs # GUI程序直接跟X server打交道,避免DM这个中间商赚差价^_^

retval=$?

让自己的startx脚本开机启动

修改/etc/rc.local,在exit 0前加一行即可。

/path/to/my-startx &
exit 0 

注意在行尾加&符号,好让我们的应用不占用终端,免得rc.local脚本不退出,阻塞其他初始化流程。

重启

重启后设备应该就会直接进入应用界面,且是全屏的。

总结

该方法不仅简单,而且不需要改应用代码,对于源码找不到的应用比较合适
另外不启动DM,也能省不少系统资源,很适合嵌入式系统。

Logo

更多推荐