在Linux上启动GTK应用程序 我有一个C++可执行文件,其中包含一些GTK代码。我希望这个应用程序在我的机器启动时启动(以root用户身份)

在Linux上启动GTK应用程序 我有一个C++可执行文件,其中包含一些GTK代码。我希望这个应用程序在我的机器启动时启动(以root用户身份),c++,gtk,startup,C++,Gtk,Startup,我尝试使用init脚本(当我在用户会话中使用它时,它工作得非常好),但是查看应用程序的日志文件,我发现最新记录的行在调用Gtk::application::create()之前,因此初始化Gtk似乎太早了 如何在用户会话打开后启动应用程序,以便GTK初始化不会失败?为应用程序创建一个.desktop文件,并为每个用户将其放入/etc/xdg/autostart/,或为当前用户放入$HOME/.config/autostart/ 如果您想将该应用程序作为普通用户的根用户加载,您可以选择使用gksu

我尝试使用init脚本(当我在用户会话中使用它时,它工作得非常好),但是查看应用程序的日志文件,我发现最新记录的行在调用
Gtk::application::create()
之前,因此初始化Gtk似乎太早了


如何在用户会话打开后启动应用程序,以便GTK初始化不会失败?

为应用程序创建一个.desktop文件,并为每个用户将其放入
/etc/xdg/autostart/
,或为当前用户放入
$HOME/.config/autostart/

如果您想将该应用程序作为普通用户的根用户加载,您可以选择使用gksu或其他工具来授权priviledge


或者,您可以查看network manager是如何设计的。它在系统启动时以初始化脚本的形式初始化网络管理器模块,并在用户会话加载时加载nm小程序,这是普通用户的GUI。因此,网络管理器可以由桌面用户在所有桌面环境(如Gnome、KDEE、xfce…)上进行管理。

我认为图形化管理器只能在用户会话中加载,并且每个桌面的管理方式不同:KDE、Gnome、LXDE、,。。。在Ubuntu中,你可以使用
visudo
来允许某个用户以root用户身份运行某个命令。也许可以提供帮助。我已经知道.desktop文件,但由于我有一个init脚本,所以我排除了这个解决方案。但是您对network manager所做的描述很好。我也可以这么做。。。我认为你的回答可以接受!:)