Por que iniciar meu próprio script a partir de um ativador só funciona uma vez?

3

Eu criei um script de shell, digamos que é

echo hi
sleep 5
echo bye
exit

Em seguida, criei um .desktop -file para iniciar o script de shell. Clicar duas vezes funciona perfeitamente bem:

[Desktop Entry]
Version=1.0
Name=Test
Comment=Bash Cript
Exec=bash /example/test.sh
Terminal=true
Type=Application
Categories=Utility;Application;

Depois de arrastar e soltar o arquivo .desktop no Unity Launcher, posso clicar nele. UMA VEZ. Após o primeiro lançamento, o ícone permanece no lançador, mas clicar nele não faz nada.

O clique do meio do mouse inicia novamente o aplicativo

O que estou fazendo de errado?

    
por Alex 16.06.2016 / 19:22

1 resposta

5

faz funcionar

... até testou, mas o ícone do iniciador não responde por cerca de 7 segundos depois que você clicou. Se você clicar novamente após esses 7 segundos, ele funcionará novamente.

Essa "quebra" é causada pelo ícone, aguardando a exibição de uma janela. Este não será o caso, já que a gnome-terminal -window que aparece é "reivindicada" pelo ícone do lançador gnome-terminal , e o seu ícone "caseiro" não reconhece a janela como "his".

Solução?

Você poderia resolver o problema adicionando uma linha ao seu lançador (14.04)

StartupWMClass=gnome-terminal

ou (16.04):

StartupWMClass=gnome-terminal-server

no entanto , só faça isso por razões de teste, não use isso como uma solução permanente; ter arquivos .desktop mutiple, possivelmente reivindicando o mesmo WM_CLASS em seu comando principal, é uma má ideia, isso causará conflitos em como gnome-terminal aparece no iniciador Unity.

Melhor solução

Adicione o seu script como uma opção de clique com o botão direito do mouse ao gnome-terminal launcher existente:

  1. Copieo%globalgnome-terminallauncherde/usr/share/applicationspara

~/.local/share/applications:

cp/usr/share/applications/gnome-terminal.desktop~/.local/share/applications
  • Abra o arquivo com gedit :

    gedit ~/.local/share/applications/gnome-terminal.desktop
    
  • Altere a linha:

    Actions=New;
    

    para:

    Actions=New;My Script;
    

    e adicione a seção:

    [Desktop Action My Script]
    Name=My Script
    Exec=gnome-terminal -e "bash /absolute/path/to/your/script.sh"
    

    até o final do arquivo. Em seguida, efetue logout e login novamente e você terá seu script disponível como um atalho de lista rápida no gnome-terminal launcher.

  • por Jacob Vlijm 16.06.2016 / 21:05