Como fecho uma nova janela do Firefox no Terminal?


10

Eu tenho várias instâncias do Firefox em execução no Ubuntu 14.04. Como posso fechar a janela / instância aberta mais recentemente do Terminal?

Tentei usar o alias cfct definido em uma resposta a uma pergunta relacionada , mas não funcionou.


@chaos Presumo meios OP janelas, não abas
Jacob Vlijm

@JacobVlijm essa resposta também fecha as janelas e me parece a única solução. Como o firefox executa apenas um processo, independentemente do número de janelas abertas, você precisa dessa solução na publicação. killall firefoxseria SIGTERMtodo o processo, não apenas uma janela.
caos

@chaos eu não concordo, muito bem possível, eu não estou em casa, ver se eu sou rápido o suficiente para produzir uma resposta em minha pausa :)
Jacob Vlijm

1
@chaos Duplicatas são para quando as perguntas são as mesmas, não as respostas. Alguma sobreposição é inevitável.
Seth

O que é cfct? As pesquisas retornam principalmente essa mesma pergunta.
TRiG

Respostas:


13

Para criar um comando que encontre a idúltima janela criada por Firefox(e para fechá-la), você precisará wmctrlestar instalado:

sudo apt-get install wmctrl

O comando

Em seguida, use o comando:

wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"


Explicação:

wmctrl -l

lista todas as janelas, mas uma propriedade importante do comando é que ele lista as janelas na ordem em que foram criadas .

Portanto:

wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'

vai:

  • listar todas as janelas:

    wmctrl -l
    
  • encontre aqueles (as linhas) com 'Mozilla Firefox' em seu nome:

    grep 'Mozilla Firefox'
    
  • encontre o último (que também é o último criado):

    tail -1
    
  • extraia a primeira string da linha (que é o id da janela):

    awk '{ print $1 }'
    

O comando:

wmctrl -ic

então matará a janela mais recente do Firefox por seu ID (graciosamente).

Ou ainda mais confiável:

Enquanto o comando acima funciona bem em praticamente todos os casos, não é uma pequena chance de conflitos de nome, se por exemplo, uma outra janela existe com "Mozilla Firefox" em seu nome, mas não uma janela de Firefox(improvável, mas ainda).

O que deve funcionar "à prova d'água" é, portanto, identificar as janelas na lista de janelas (usando wmctrl -lp) pelo pid de firefox, em vez da string no nome da janela:

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

Como você pode ver, neste comando,

wmctrl -l | grep 'Mozilla Firefox'

produzindo as linhas que contêm 'Mozilla Firefox', é substituído por:

wmctrl -lp | grep "$(pgrep firefox)"

produzindo as linhas que contêm o pid do firefox (como a saída de pgrep firefox)


2

Para fechar uma janela (também com muitas guias abertas), use esse comando:

wmctrl -a firefox; xdotool key Ctrl+Shift+w

Observe que wmctrle xdotooldeve ser instalado:

$ sudo apt-get install wmctrl xdotool

Veja também a resposta: Feche o guia atual do firefox usando o terminal .

Minha resposta é um pouco modificada, porque Ctrl+ Shift+ wfecha uma janela do Firefox.


Para todos os atalhos, consulte Atalhos do teclado do Firefox .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.