Fechar janela ativa do terminal

6

Você sabe como fazer isso? Eu sei como fazer isso do meu teclado (Alt + F4), eu sei como fazer isso com meu mouse (clique naquele X), e também sei que kill X deve matar o processo com o id X (e killall Y deve matar o processo chamado Y). Mas eu quero saber como matar a janela ativa do terminal.

Portanto, pelo que afirmei acima, uma resposta válida seria também obter o id da janela ativa.

No momento, estou implementando essa função em xte (simulando Alt + F4), mas eu gostaria de saber se há uma maneira que não implica instalar outro aplicativo. Obrigado a todos.

EDIT. Aqui está o roteiro completo. Primeiro você habilita 'show mouse quando Ctrl é pressionado', então você adiciona este script aos Commands no CompizConfig e liga ao canto superior direito. Quando você toca no canto superior direito, uma pequena notificação ao redor do mouse é mostrada. Se você não fizer nada, a janela ativa será fechada após 1 segundo. No entanto, se você tocar no canto novamente dentro do segundo, a janela ativa não será fechada.

xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1;  if [ -f ~/.fcont ]; then xkill -id 'xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2'; rm -f -r ~/.fcont; fi fi

Note que eu ainda uso o aplicativo xte chamado antes desde esta pergunta que eu fiz algum tempo atrás nunca foi respondido.

    
por Francisco Presencia 04.09.2012 / 00:39

3 respostas

5

E se você quiser ficar realmente peludo e evitar aplicativos que não são instalados por padrão:

xkill -id 'xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2'

Novamente, isso parece funcionar bastante bem.

NOTA: No caso de alguns aplicativos (veja os comentários), isso pode significar que todas as janelas de um aplicativo estão fechadas. gnome-terminal é um desses aplicativos, mas terminator e xterm não são afetados. Sugiro que isso seja mais um bug (talvez por design) com esses aplicativos, em vez de um com meu comando.

    
por Oli 04.09.2012 / 16:06
1

Eu usaria xdotool :

xdotool windowkill 'xdotool getactivewindow'

Parece que o trabalho é rápido e silencioso.

    
por Oli 04.09.2012 / 01:32
0

Uma operação de "fechamento" de alto nível usando wmctrl

O comando abaixo também fecha a janela atualmente ativa usando a especificação EWMH, embora seja necessário instalar outro programa, que você parecia preferir evitar.

Específicos

  • Esta é uma operação de "fechamento" de alto nível. Em outras palavras, ele envia para o aplicativo a mesma mensagem solicitando que feche a janela que seria enviada por meio do mouse, clicando no gadget "fechar" ou no atalho da tecla.
  • Ele não emula um atalho de tecla, por isso funciona independentemente dos atalhos de teclas ou mesmo se você não tiver um atalho configurado (ou provavelmente até não estiver configurado no teclado).

Como resultado, espera-se um comportamento:

  • Ele só fecha a própria janela que é segmentada e não o aplicativo inteiro (testado com xfce4-terminal, Chromium, Thunderbird).
  • Além disso, dá ao aplicativo a chance de reagir ao evento de fechamento, como pedir confirmação (confirmada com o Thunderbird com uma janela onde um e-mail está sendo escrito e o Firefox pedindo confirmação antes de fechar uma janela com várias guias abertas) ou possivelmente até ignorar o evento.

O comando

wmctrl -c :ACTIVE:

Referência

Da home page do projeto wmctrl - Uma ferramenta de linha de comando para interagir com um X Window Manager compatível com o EWMH / NetWM.

  

-c Fecha a janela normalmente.

e

  

A string especial ": ACTIVE:" (sem as aspas)   pode ser usado para instruir o wmctrl a usar o   janela ativa para a ação.

    
por Stéphane Gourichon 21.09.2017 / 11:36