Lança um programa mantendo o foco no terminal

6

Estou fazendo um script que combina a entrada de dados da linha de comando com o lançamento de outros programas. Então o script vai assim:

...
launch program
Read input from the terminal
...

O problema é que, quando eu lanço o programa (mesmo se eu o lançar em segundo plano), o terminal perde o foco e o programa iniciado se torna ativo.

Como faço para iniciar um programa mantendo o foco no terminal com um comando padrão do Ubuntu?

Obrigado

    
por Vndtta 08.01.2013 / 00:09

1 resposta

2

Se você sabe o título do terminal, você pode voltar a ele depois de abrir o programa usando o wmctrl comando (nem parece que o novo programa estava em primeiro plano se a janela abrir instantaneamente e você não precisa do comando sleep ):

wmctrl -a <WIN-TITLE>

<WIN-TITLE> não precisa ser o título completo, por exemplo, se o título for TESTING , TEST funcionaria.

Dependendo de quanto tempo leva para abrir o programa, talvez seja necessário usar o comando sleep para atrasar a troca de volta para o terminal. Você pode usá-lo assim: sleep <SECONDS>s .

Para definir o título do terminal a partir de um script, use:

NAME="NEW_TITLE"; echo -en "3]0;$NAME\a"

Veja esta resposta para mais informações.

Por exemplo, aqui está um pequeno script para abrir um programa em segundo plano:

NAME="Opening program..."; echo -en "3]0;$NAME\a"
&
sleep 0.75s
wmctrl -a "Opening program"
    
por iBelieve 08.01.2013 / 00:36