一、问题分析
systemctl 服务启动在桌面系统之前,启动界面加载到 100% 时桌面系统开始加载,会强制隐藏我们的界面并显示桌面,待桌面彻底加载完毕,才能显示我们的软件界面。这期间就是闪屏并显示桌面的原因。
不过正常情况桌面系统加载很快,几乎一闪而过,不是很影响观感。但由于启动项中我们的软件正在加载,可能影响到桌面系统加载效率,导致灰屏时间较长。
二、解决方案
通过桌面系统自带的 启动应用程序(autostart) 功能自启软件。就可以在桌面系统加载完毕再加载软件。这种情况下桌面系统加载很快,一闪而过,不影响观感。
修改打包发布环境如下:
- 在
~/.config/autostart
下新增xxx_start.sh.desktop
文件 - 将 systemctl 自启服务禁用
systemctl disable xxx.service
三、备注
- 依赖桌面系统环境。
但目前我们软件还不完善,很多测试和使用时还需要依赖桌面系统,所以暂时可以先使用这个方案。
后续根本解决问题的方式是去掉桌面系统,就不会再加载软件时闪屏桌面了。
- 没有了 systemctl 崩溃自动重启的便利
可以自己写一个监控服务处理此问题。