我正在用QT5 (用于X11)编写一个自定义应用程序,它将用于嵌入式安装程序。当系统启动时,我希望系统能够引导到我的应用程序中,我的应用程序的主窗口实际上是桌面背景,任何其他窗口都应该打开,并且应该有正常的窗口管理工具。
这个系统是基于Debian的,我如何将这些数据组合在一起来实现呢?
发布于 2019-11-02 15:31:21
这个难题有几个小问题,一个问候者(我使用了sddm),一个窗口管理器(我使用了openbox)和应用程序本身。
首先,应用程序本身,我们需要告诉窗口管理器,我们的窗口是桌面背景,这是最难找到的细节,但最终查看了pcmanfm的源代码,一些实验和谷歌在其中的常量之一导致我找到了一个关于堆栈溢出的问题。最后,我在主窗口的构造函数中使用了以下代码。我将这段代码放在命令行参数后面,所以仍然可以按常规方式运行应用程序。
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_X11NetWmWindowTypeDesktop);
setFixedSize(QApplication::desktop()->size());注意:我最初使用的是“调整大小”,而不是setFixedSize,直到我尝试使用布局管理器时,布局管理器才决定扩展我的“桌面窗口”,这样它就不适合屏幕了。
为了将欢迎器、窗口管理器和我的应用程序绑定在一起,需要定义一个自定义的“会话”,我完成了两个文件,第一个文件是/usr/bin/starthhs上的shell脚本。
#!/bin/bash
openbox --startup '/home/ubilinux/cvx86/gui asdesktop'第二个是/usr/share/xsessions/handheldhyperspec.desktop的“桌面文件”。
[Desktop Entry]
Type=Application
Exec=starthhs
TryExec=starthhs
Name=Handheld hyperspec 
Comment=Handheld hyperspec最后,我需要将欢迎器配置为自动登录到我新定义的会话中。为此,我创建了一个文件/etc/sddm.conf.d/autologin,内容如下。
[Autologin]
User=root
Session=handheldhyperspec.desktop
Relogin=https://unix.stackexchange.com/questions/550043
复制相似问题