alterna para um emulador de terminal existente usando o comando (wmctrl) ou a tecla de atalho

1

É muito difícil fazê-lo. wmctrl precisa saber o título da janela, a fim de operá-lo, mas é muito duro saber o título de qualquer emulador de terminal, seja gnome-terminal, rxvt, xterm ...

Porque

  • Frequentemente .bashrc especifica PS1 para alterar o título da janela para o caminho atual.
  • editor como o VIM altera o título da janela para o arquivo atual.
  • ferramentas de linha de comando como mosh adoram alterar o título da janela.
  • ssh em outra máquina, geralmente o shell (bash) no host remoto altera o título. Portanto, se você remover a parte de mudança de título do PS1, você precisará fazer isso em todos os computadores aos quais você possa se conectar - uma longa lista para qualquer sistema experiente.
  • Mesmo se você executar o GNU Screen em um terminal, a sessão dentro da tela ainda poderá alterar o título do emulador do terminal de saída.

O fluxbox permite excepcionalmente referir-se a uma janela por outras propriedades da janela X (xwininfo) do que o título. mas mudar para o fluxbox é uma mudança muito grande para essa pequena necessidade.

Em suma, parece não haver maneira de saber o título da janela do emulador de terminal ... ou existe algum?

    
por Peer Gynt 16.12.2013 / 15:06

2 respostas

0

Muitos emuladores de terminal (pelo menos Xterm, Rxvt, Gnome-terminal e Konsole) definem a variável de ambiente WINDOWID para o ID da janela X11. Você pode passar este ID de janela para wmctrl :

wmctrl -i -a "$target_window_id"

Tenha em atenção que dentro de uma sessão Screen ou Tmux, irá obter o ID da janela onde iniciou inicialmente o multiplexador, não aquele em que está atualmente ligado.

    
por 17.12.2013 / 01:54
0

Use wmctrl -l antes e depois do início do emulador de terminal e armazene a saída nas duas vezes. A linha que difere entre as saídas lhe dará o ID da janela, usando o corte para recuperar automaticamente o primeiro valor (é o ID).

Este ID é independente do título da janela do emulador de terminal. Você pode usar isso para fazer wmctrl -a ID até que você feche o emulador de terminal e o ID não seja mais válido.

    
por 16.12.2013 / 15:49