Como iniciar um programa quando outro é iniciado

0

Estou usando o Debian com o Gnome3 e gostaria de saber se existe uma maneira elegante de iniciar um programa quando outro é iniciado.

Meu caso de uso é o seguinte: Eu uso o keepass como meu gerenciador de senhas e não quero iniciá-lo manualmente quando inicio meu navegador da Web favorito (Iceweasel). O Iceweasel também é iniciado automaticamente quando eu faço login.

Por enquanto eu uso arquivos do desktop para iniciar automaticamente o Iceweasel e o Keepass no log in. O problema é que o keepass começa antes do navegador, eu começo a digitar minha senha no Keepass, o Iceweasel começa e tem o foco então eu tenho que voltar no Keepass para terminar de digitar minha senha, o que não é muito conveniente.

Então meus principais interrogatórios são:

  • O Gnome3 como um recurso para iniciar automaticamente um programa GUI após o início de outro?
  • Se o Gnome3 não fornecer tal recurso, eu deveria criar um script de shell para fazer isso. E se sim, como posso fazer isso? (Eu estou familiarizado com o shell script básico, mas não tenho idéia de como fazer isso, na verdade)
  • Existe outra solução além do script e do recurso interno do Gnome3?

Algumas notas sobre a minha pergunta:

  • Encontrei uma pergunta semelhante usando o Windows, mas nenhum usando o Linux e mais precisamente o Gnome.
  • Seria ótimo se a solução funcionasse com a instância Iceweasel iniciada automaticamente no login, mas também com outras instâncias que eu teria iniciado depois de fechar a primeira instância.
  • EDITAR Devido a minha configuração Vimperator eu não tenho uma barra de navegação no meu Iceweasel. Isso implica que o uso de plug-ins como o KeeFox não é conveniente porque não tenho acesso direto ao ícone do plug-in.
por statox 30.11.2015 / 06:07

1 resposta

1

Primeira pergunta: Não, você não pode ter 100% de certeza de que seu programa será lançado em uma ordem específica (e isso não está relacionado ao GNOME). O processo é enfileirado e a cada quantum de tempo, um outro é escolhido para ser tocado pela CPU, e depende das configurações do kernel (ou seja, do seu sistema operacional). Então você pode usar um script de shell. Não é a melhor solução, descobriremos o porquê.

Para o shell script, uma abordagem primária seria invocar keepass e Iceweasel apenas escrevendo seus nomes em um script, mas isso não funcionará

(Isso não vai funcionar, não use)

#! /bin/bash
Keepass
Iceweasel

(Qualquer linha que comece com # será tratada como um comentário. Uma linha que começa com #! é chamada de shebang e tem o único propósito de indicar qual shell usar, mas não se preocupe com isso no momento. você é novo em scripts de shell)

Isso não funcionará porque o shell aguardará o término do primeiro programa antes de lidar com a segunda linha.

Então você tem que indicar ao shell que você não quer esperar pelo fim de um programa para o outro começar. Você pode fazer isso usando & após um comando Por exemplo:

Keepass &

Usar isso permite que você continue usando seu shell.

Então você acha que pode fazer

#! /bin/bash
Keepass &
Iceweasel

Funcionará, mas não resolverá seu problema. Como é muito improvável que qualquer um desses programas seja codificado de forma a fazê-los enviar um sinal quando estiverem totalmente carregados, temos que usar um truque sujo. Eu só o recomendo, pois isso é para sua conveniência pessoal, mas lembre-se de que usar isso para qualquer coisa em nível profissional ou em nível de sistema é muito ruim. Você dirá ao seu computador apenas para esperar alguns segundos antes de iniciar o outro programa. Isso é feito usando o comando sleep . Por exemplo: sleep 10 fará seu script esperar por dez segundos

Assim, seu script deve se parecer com

#! /bin/bash
Keepass &
sleep 10
Iceweasel

Ajuste 10 com o valor que lhe dará tempo suficiente para digitar sua senha, mas lembre-se de que usar suspensão para fins de sincronização é muito ruim .

Então você pode dizer ao seu sistema para iniciar este script no login (não se esqueça de ajustar as permissões se necessário)

Finalmente, eu aconselho você a usar um plugin Iceweasel, já que é mais adequado para este caso. No site do Keepass , você pode encontrar mais informações sobre o KeeForm e o KeeFox (e muitos outros mergulhos, mas esses parecem atender às suas necessidades ) (Eu não tenho direitos para colocar links suficientes)

    
por 30.11.2015 / 10:08