Разрешение пользователям моего приложения выбирать, должно ли приложение запускаться при входе в систему. Самый кроссплатформенный способ реализации?

Я хочу позволить пользователям моего приложения контролировать, должно ли приложение запускаться при каждом входе пользователя в систему, скажем, путем активации / деактивации флажка внутри приложения. (Dropbox делает это, например.)

Каков наилучший способ реализовать это? Я бы предпочел, чтобы реализация функционировала в большинстве сред Linux (т.е. была максимально кроссплатформенной). Также было бы неплохо, если бы пользователю не нужно было получать права root, чтобы изменить этот параметр.

2
задан 14 October 2013 в 01:17

1 ответ

Распределения, придерживающиеся спецификаций X-Desktop, будут автоматически запускать приложения из общесистемного каталога XDG_CONFIG_DIRS/autostart и из каталога автозапуска в доме пользователя. Только последние будут доступны без прав root.

Определить приложение автозапуска в HOME

1. Найти каталог автозапуска

Сначала нам нужно узнать, где находится каталог автозапуска. В соответствии с спецификациями 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.desktop, потому что ~ / .config / autostart / важнее, чем / etc / xdg / autostart /
[ 1125] В стандартной установке Ubuntu $XDG_CONFIG_HOME не определено. Поэтому каталог автозапуска находится в ~/.config/autostart. Любой файл .desktop, расположенный в этом каталоге, запустит соответствующее приложение при входе в систему.

2. Создайте каталог автозапуска, если его нет

Прежде чем мы сможем заполнить каталог автозапуска, нам нужно проверить его наличие и в конечном итоге создать его.

3. Определите файл .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 из нашего диалога настроек.


См. также этот связанный вопрос:

0
ответ дан 14 October 2013 в 01:17

Другие вопросы по тегам:

Похожие вопросы: