Abra o programa já em execução via terminal

7

Como faço para mudar para o programa já em execução usando o terminal?

Por examaplo:

firefox abre uma nova janela do firefox.

Existe um comando que focará a janela do Firefox já aberta?

    
por Kunok 05.07.2016 / 13:09

2 respostas

11

Como um marcador

Supondo que você tenha wmctrl instalado (execute sudo apt-get install wmctrl se não):

O comando:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print  }')"

Aumentaria a última janela gedit aberta. Substitua por qualquer outra aplicação.

Explicação

pgrep gedit

obtém o pid de gedit

wmctrl -lp

lista todas as janelas e o pid que eles pertencem

awk '{ print  }'

divide o id da janela (a primeira string na linha)

$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print  }')

, portanto, encontra o ID da janela da última janela criada de gedit (a saída de wmctrl -lp lista as janelas em uma ordem cronológica de criação, se o aplicativo tiver várias janelas, tail -1 retornará a última) .

wmctrl -ia

subseqüentemente aumenta a janela por seu window-id

Em um pequeno script

... para ser executado com o aplicativo como argumento:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "")" | tail -1 | awk '{ print  }')"
  • Salve-o em um arquivo vazio como switchto.sh
  • Torne-o executável
  • Executar como (por exemplo)

    /path/to/switchto.sh firefox
    

Alternativas?

Teoricamente o comando:

xdotool search --class gedit windowactivate

deve fazer (meio que) o mesmo; ele deve levantar a janela primeiro encontrado de gedit neste caso.
Parece menos robusto no entanto. No meu sistema (Unity) não fez nada.

    
por Jacob Vlijm 05.07.2016 / 13:17
1

Se você executou o firefox usando firefox & , poderá usar jobs para ver seu número. Para trazê-lo para primeiro plano, escreva %n firefox , que n significa seu número. Exemplo:

sabrina@ubuntu:~$ jobs
[1]+ Stopped      firefox
sabrina@ubuntu:~$ fg %1

Além disso, você pode "matar" o programa:

sabrina@ubuntu:~$ kill %1
    
por Sabrina Spelman 05.07.2016 / 13:52