我想让我的应用程序的用户通过激活/取消激活应用程序中的复选框来控制是否应在每次用户登录时运行该应用程序。(例如,Dropbox就是这样做的。)
实现此目的的最佳方法是什么?我希望该实现在大多数Linux环境下都可以运行(即尽可能跨平台)。另外,如果用户不需要成为root用户即可更改此设置,那将是很好的选择。
遵循X-Desktop规范的发行版将从系统范围的目录XDG_CONFIG_DIRS/autostart
和用户家中的自动启动目录自动启动应用程序。没有root权限,只有后者可以访问。
我们首先需要知道自动启动目录所在的位置。根据X-Desktop规范,位置应为以下位置:
如果相同的文件名位于多个自动启动目录下,则仅应使用最重要目录下的文件。
- 示例:如果未设置$ XDG_CONFIG_HOME,则用户主目录中的自动启动目录为〜/ .config / autostart /
- 示例:如果未设置$ XDG_CONFIG_DIRS,则系统范围的自动启动目录为/ etc / xdg / autostart /
- 示例:如果未设置$ XDG_CONFIG_HOME和$ XDG_CONFIG_DIRS并且两个文件/etc/xdg/autostart/foo.desktop和〜/ .config / autostart / foo.desktop存在,则仅文件〜/ .config / autostart / foo。将使用台式机,因为〜/ .config / autostart /比/ etc / xdg / autostart /更重要
在标准的Ubuntu安装$XDG_CONFIG_HOME
中未定义。因此,自动启动目录位于中~/.config/autostart
。.desktop
该目录中的任何文件都将在登录时启动相应的应用程序。
在填充自动启动目录之前,我们需要检查其是否存在,并最终必须创建它。
.dektop
文件对于Unity和GNOME,最小.desktop
文件将具有以下内容,以启用自动启动应用程序:
[Desktop Entry]
Type=Application
Exec=</path/to/application>
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=<name of application>
我们可能会.desktop
随应用程序一起分发模板文件,以根据用户选项集将其复制到自动启动目录中或从自动启动目录中删除。
要为所有用户启用自动启动应用程序,我们需要/etc/xdg/autostart
用我们的.desktop
文件填充系统范围的自动启动目录(例如)。
为了能够通过用户选项执行此操作,我们需要临时允许root权限。例如,这可以通过pkexec
在我们的设置对话框中调用子进程来完成。
另请参阅以下相关问题:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句