我正在用 QT5(用于 X11)编写一个自定义应用程序,它将用于嵌入式设置。当系统启动时,我希望系统启动到我的应用程序,我的应用程序的主窗口实际上是桌面背景,任何其他窗口都应该在它上面打开并且应该有正常的窗口管理工具可用。
该系统基于 Debian buster,我该如何组合来实现这一点?
我正在用 QT5(用于 X11)编写一个自定义应用程序,它将用于嵌入式设置。当系统启动时,我希望系统启动到我的应用程序,我的应用程序的主窗口实际上是桌面背景,任何其他窗口都应该在它上面打开并且应该有正常的窗口管理工具可用。
该系统基于 Debian buster,我该如何组合来实现这一点?
这个难题有几个部分,一个欢迎程序(我使用 sddm),一个窗口管理器(我使用 openbox)和应用程序本身。
首先是应用程序本身,我们需要告诉窗口管理器我们的窗口是桌面背景,这是最难找到细节的地方,但最终查看了 pcmanfm-qt 的源代码,一些实验和谷歌搜索其中的一个常量这让我想到了一个关于堆栈溢出的问题。我最终在主窗口的构造函数中使用了以下代码。我将此代码放在命令行参数后面,因此仍然可以以传统方式运行应用程序。
注意:我最初使用的是“resize”而不是 setFixedSize,直到我尝试使用布局管理器,此时布局管理器决定扩展我的“桌面窗口”,使其不适合屏幕。
要将欢迎程序、窗口管理器和我的应用程序绑定在一起,需要定义一个自定义“会话”,我这样做是两个文件,第一个是 /usr/bin/starthhs 中的 shell 脚本
第二个是位于 /usr/share/xsessions/handheldhyperspec.desktop 的“桌面文件”
最后,我需要将欢迎程序配置为自动登录到我新定义的会话。为此,我创建了一个包含以下内容的文件 /etc/sddm.conf.d/autologin。