我需要创建一个 USB Live Ubuntu 来运行应用程序。我想在启动后以全屏模式打开我的应用程序,而无需为最终用户提供任何其他选项。
我读到如果我想运行没有桌面环境或显示管理器的应用程序,我应该使用 Gtk+ 或 Qt5,所以我使用 Gtk+ 创建了我的应用程序。
为了能够在没有桌面环境的情况下打开应用程序,我在 .bashrc 中添加了以下内容:
export DISPLAY=:0
while true; do ./myapp; done
我把它放在里面一段时间,因为有时我会收到以下错误:
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
(myapp:4918): Gtk-WARNING **: cannot open display:
我想我试图在显示管理器运行之前运行该应用程序。
为默认用户启用自动登录会使 tty1 上的 .bashrc 执行,并且我的应用程序启动。
mkdir /etc/systemd/system/[email protected]
nano /etc/systemd/system/[email protected]/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin ubuntu %I $TERM
Type=idle
为了使其工作,我还需要进行编辑/usr/share/xsessions/ubuntu.desktop
,以便它不会启动桌面环境。
我正在使用 Ubuntu 16.04。
它正在运行,但是有一些点我不明白。
1 - 这个问题的大多数答案都说要编辑 ubuntu.desktop 并将 exec 更改为我的应用程序,但我无法让它工作。它确实没有运行 Ubuntu 桌面,但我无法让它运行我的应用程序。我没有找到如何调试它失败的原因。
2 - 我读到 Gtk+ 和 Qt5 可以使用 Wayland,所以我没有桌面环境也没有显示管理器,我该怎么做?
3 - 您推荐哪种替代方案来获得相同的结果?我在 .bashrc 中执行的方式听起来有点黑客。
谢谢