Lançar o terminal pelo atalho de teclado, executar o comando interativo e sair no Ubuntu 17.10

0

Estou tentando realizar o seguinte:

  1. abra um terminal gnome no atalho de teclado, diga Ctrl + Shift + E.
  2. Execute um comando no terminal. Para concrenetess, o comando é gio open $(fzf) . O comando é interativo e lança o programa externo (como o evince).
  3. Uma vez iniciado o programa externo, feche o terminal sem fechar o programa externo.

O comando em que estou interessado na etapa 2 acima é gio open $(fzf) : selecionei um arquivo usando o localizador difuso fzf e, em seguida, o comando gio open abre esse arquivo com o programa padrão do gnome.

Eu posso fazer as três etapas acima, uma por uma:

  1. Eu posso ligar um atalho de teclado nas configurações para gnome-terminal : ele abre um terminal como esperado.
  2. Então eu digito no terminal opend new meu comando gio open $(fzf) : Se eu selecionar um arquivo pdf de fzf , ele abre o evince com o arquivo selecionado.
  3. Eu posso digitar Ctrl + D para fechar o terminal. Fazendo isso, não fecha o evince. Este é o comportamento pretendido.

e essas três etapas funcionam manualmente.

Meu objetivo é automatizar os itens acima. Deve funcionar da seguinte maneira. Enquanto digito o atalho de teclado Ctrl + Shit + E (ou qualquer outro), um terminal gnome deve abrir, e o comando gio open $(fzf) deve ser executado. Assim que o comando interativo estiver pronto (o que abre um programa externo como o evince), o terminal deve fechar automaticamente sem fechar o evince.

O que tentei .

  • Adicionar um atalho de teclado com o comando gnome-terminal -- bash -c "gio open $(fzf)" não funciona. Pressionar a combinação de teclas não faz nada.
  • Se eu adicionar o comando gio open $(fzf)$ no final do meu .bashrc, um atalho de teclado com o comando gnome-terminal abre o terminal e o comando é executado. Assim que seleciono um arquivo pdf, o evince é aberto com o arquivo selecionado (yeah !!!). Mas então, se eu apertar Ctrl + D, o terminal fecha e o mesmo evidencia (talvez porque o evince seja um subprocesso?).
  • Se eu adicionar o comando gio open $(fzf)$ && exit no final do meu .bashrc, um atalho de teclado com o comando gnome-terminal abre o terminal e o comando é executado, mas assim que eu seleciono um arquivo, o terminal é fechado sem abertura evince (evince pode ter começado e foi fechado imediatamente, eu não posso dizer).

Note que jogar com .bashrc era principalmente para testes, eu gostaria de evitar poluir meu .bashrc.

    
por jlewk 26.10.2017 / 19:57

1 resposta

0

% bl0ck_qu0te%

Sim, claro, é subprocesso e você deve executar esse processo como "desanexado". Depois disso, você pode finalizar o processo principal (no seu caso - terminal).

Aqui está uma resposta detalhada sobre como executar processos desanexados.

link

Como outra forma, você pode usar o próximo atalho:

bash -c "some_command" > /dev/null &2>&1

Neste caso, a janela do terminal não será gerada e você não precisará adicionar nada ao seu arquivo .bashrc.

    
por Dexter Morganov 26.10.2017 / 21:15