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

10

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

Por exemplo:

firefox abre uma nova janela do firefox.

Existe um comando que focalizará a janela do firefox já aberta?

Kunok
fonte
1
Com base na resposta aceita, acho que você queria focar uma janela existente, não abrir uma nova janela. Enviei uma edição para esclarecer, mas a revisão está pendente.
jpaugh

Respostas:

14

Como uma linha

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

O comando:

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

Levantaria a últimagedit janela aberta . Substitua-o por qualquer outro aplicativo.

Explicação

pgrep gedit

recebe o pid do gedit

wmctrl -lp

lista todas as janelas e os detalhes a que pertencem

awk '{ print $1 }'

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

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

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

wmctrl -ia

posteriormente levanta a janela por sua window-id

Em um pequeno script

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

#!/bin/bash

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

    /path/to/switchto.sh firefox
    

Alternativas?

Teoricamente, o comando:

xdotool search --class gedit windowactivate

deve fazer (mais ou menos) o mesmo; deve elevar a primeira janela encontradagedit neste caso.
Parece menos robusta no entanto. No meu sistema (Unity), não fez nada.

Jacob Vlijm
fonte
1

Se você executou o firefox usando, firefox &pode usar jobspara ver seu número. Para trazê-lo para o primeiro plano, escreva o %n firefoxque nsignifica 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
Sabrina Spelman
fonte