我有一个包含一些 GTK 代码的 C++ 可执行文件。我希望这个应用程序在我的机器启动时启动(以 root 身份)。
我尝试了一个初始化脚本(当我从我的用户会话中使用它时它工作得很好),但是查看我的应用程序的日志文件,我发现最新记录的行是在调用之前,Gtk::Application::create()
所以它似乎太早了初始化 GTK。
如何在用户会话打开后启动我的应用程序,以便 GTK 初始化不会失败?
为您的应用程序创建一个 .desktop 文件,并将其/etc/xdg/autostart/
用于每个用户或$HOME/.config/autostart/
当前用户。
如果您想以 root 用户身份加载该应用程序以供普通用户使用,您可以选择使用 gksu 或其他工具来授权权限。
或者,您可以查看 network-manager 的设计方式。它在系统启动时以 init-script 的形式初始化 network-manager 模块,并在加载用户会话时加载 nm-applet,这是普通用户的 GUI。因此,network-manager 可以由桌面用户在所有桌面环境(如 Gnome、KDEE、xfce...)上进行管理。