Deixar os usuários do meu aplicativo selecionar se o aplicativo deve iniciar no login. A maioria das formas de plataforma cruzada para implementar?

2

Eu quero que os usuários do meu aplicativo controlem se o aplicativo deve ser executado no login de todos os usuários, digamos, ativando / desativando uma caixa de seleção no aplicativo. (O Dropbox faz isso, por exemplo).

Qual é a melhor maneira de implementar isso? Eu prefiro que a implementação funcione na maioria dos ambientes Linux (ou seja, seja o mais compatível possível com várias plataformas). Além disso, seria bom se o usuário não precisasse se tornar root para alterar essa configuração.

    
por Pouria 13.10.2013 / 06:03

1 resposta

2

As distribuições aderentes às especificações do X-Desktop iniciarão automaticamente os aplicativos de um diretório do sistema XDG_CONFIG_DIRS/autostart e de um diretório de início automático na página inicial do usuário. Apenas este último será acessível sem permissões de root.

Defina uma aplicação de arranque automático em HOME

1. Encontre o diretório de inicialização automática

Primeiro precisamos saber onde reside o diretório autostart. De acordo com as especificações do X-Desktop , a localização deve ser a seguinte:

  

Se o mesmo nome de arquivo estiver localizado em vários Diretórios de Inicialização Automática, somente o arquivo no diretório mais importante deverá ser usado.

     
  • Exemplo: Se $ XDG_CONFIG_HOME não estiver definido, o Diretório de Início Automático no diretório pessoal do usuário é ~ / .config / autostart /
  •   
  • Exemplo: Se $ XDG_CONFIG_DIRS não estiver definido, o Diretório de Início Automático do sistema é / etc / xdg / autostart /
  •   
  • Exemplo: Se $ XDG_CONFIG_HOME e $ XDG_CONFIG_DIRS não estiverem definidos e os dois arquivos /etc/xdg/autostart/foo.desktop e ~ / .config / autostart / foo.desktop existirem, somente o arquivo ~ / .config / autostart /foo.desktop será usado porque ~ / .config / autostart / é mais importante que / etc / xdg / autostart /
  •   

Em uma instalação padrão do Ubuntu, $XDG_CONFIG_HOME não está definido. O diretório autostart, portanto, reside em ~/.config/autostart . Qualquer arquivo .desktop localizado neste diretório iniciará o aplicativo correspondente no login.

2. Crie o diretório autostart se não estiver presente

Antes de podermos preencher o diretório de autostart, precisamos verificar sua presença e, eventualmente, criá-lo.

3. Definir .dektop file

Para o Unity e o GNOME, um arquivo .desktop mínimo terá o seguinte conteúdo para permitir a inicialização automática de um aplicativo:

[Desktop Entry]
Type=Application
Exec=</path/to/application>
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=<name of application>

Podemos distribuir um arquivo de modelo .desktop com nosso aplicativo para copiá-lo ou excluí-lo do diretório de inicialização automática dependendo do conjunto de opções do usuário.

Definir um aplicativo de inicialização automática em todo o sistema

Para ativar um aplicativo de inicialização automática para todos os usuários, precisamos preencher o diretório de inicialização automática do sistema (por exemplo, /etc/xdg/autostart ) com nosso arquivo .desktop .

Para poder fazer isso a partir das opções do usuário, precisamos permitir temporariamente permissões de root. Isto pode, e. ser feito chamando um subprocesso com pkexec da nossa caixa de diálogo de configurações.

Veja também esta questão relacionada:

por Takkat 13.10.2013 / 09:51