Como em muitos casos, o momento é a principal questão aqui.
- Seu script precisa ser executado no nível do usuário após o login , já que ele edita itens do ativador, que está no nível do usuário.
- Mesmo assim, olhando o que o script deve fazer (lendo sua explicação), o script precisa esperar um pouco para que a área de trabalho seja totalmente carregada; o Unity Launcher não é a primeira coisa a ficar "pronta" depois do login. Se o script for executado muito cedo, ele irá quebrar ou perder o alvo.
Em suma
Você precisa executar o script appr. 10-15 segundos após o login, o que pode ser feito adicionando:
/bin/bash -c "sleep 15 && python /path/to/script.py"
(se o script não for executável) ou
/bin/bash -c "sleep 15 && /path/to/script.py"
(se o script for executável) para os aplicativos de inicialização do usuário: Dash > Aplicativos de inicialização > Adicionar.
Executar para todos os usuários
Se você precisar que o script execute para todos os usuários (após o login), você poderá adicioná-lo aos aplicativos de inicialização para todos os usuários de uma só vez.
Para fazer isso, copie o código abaixo em um arquivo vazio, edite as linhas, começando com Name=
e defina o caminho correto para o script na linha:
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
salve o arquivo em /etc/xdg/autostart
as launch_script.desktop
(ou o que quiser, contanto que ele termine com .desktop
)
[Desktop Entry]
Name=Name
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
Type=Application