É possível obter o nome atual da janela xterm?

7

Este LDP Howto demonstra como mudar o título de um xterm.

Eu sei que isso também é possível usando o comando xtitle .

Antes de invocar uma ação de longa duração, meu script usa essas técnicas para alterar o título de sua janela xterm.

Eu gostaria de extrair o nome da janela do xterm antes de alterá-lo para que, quando a ação de longa execução for concluída, eu possa restaurar o título para seu valor anterior.

Seria meio inverso ao xtitle ... Isso é possível?

    
por TheGeeko61 07.01.2012 / 04:09

4 respostas

4

Use o script xtitle .

Existem muitas variantes na internet, no entanto, costumo usar uma que depende de xprop

link

    
por 07.01.2012 / 13:55
7

Existe uma sequência de controle para consultar o título atual, mas geralmente é desativada por razões de segurança. Isso porque permite que um programa mal-intencionado ou até mesmo apenas um arquivo de texto inserido insira seqüências de caracteres arbitrárias como se digitado no teclado, primeiro definindo o título e, em seguida, solicitando que ele fosse informado novamente.

Por isso, a pilha de títulos foi introduzida. O comando a seguir salvará os títulos atuais de janelas e ícones na pilha:

echo -ne '\e[22t'

E este vai restaurá-los:

echo -ne '\e[23t'
    
por 07.01.2012 / 10:43
2

Para o caso trivial (e provavelmente mais comum), onde se pode querer consultar o prompt do xterm atual, simplesmente use xprop -id $WINDOWID WM_NAME . Se você quiser extrair o valor para manipulação em um shell script, você pode fazer algo um pouco mais caro, como:

   curtitle='xprop -id $WINDOWID WM_NAME|awk '{print $3}'|xargs echo'

Usando o bash sozinho (para evitar a invocação do awk e xargs):

   curtitle='xprop -id $WINDOWID WM_NAME'
   curtitle='eval echo ${x##*=}'

Os xargs echo no primeiro exemplo e o eval no segundo exemplo está simplesmente lá para remover as aspas que xprop coloca em torno do valor.

Substitua WM_NAME por WM_ICON se você deseja obter o nome do ícone em vez da string na barra de título.

    
por 29.06.2015 / 18:55
0

Se eu entendi bem a sua pergunta, você deve conseguir o título atual do xterm inspecionando a variável $PROMPT_COMMAND , por exemplo:

$ echo $PROMPT_COMMAND 
printf "3]0;%s@%s:%s
PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "3]\
0;%s@%s%s
$ echo $PROMPT_COMMAND 
printf "3]0;%s@%s:%s
PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "3]\
0;%s@%s%s%pre%7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

e você pode defini-lo como (linebreak para legibilidade):

%pre%     
por 07.01.2012 / 11:41

Tags