Linux como obter o título da janela com apenas script de shell?

0

Não consigo instalar nenhuma ferramenta como screen ou xproc na caixa. Eu não preciso modificar o título, eu só preciso encontrar o nome do título da janela.

echo -e "3]0;[title]"; modifica o título que eu conheço. Mas eu só quero saber o nome do título existente.

    
por Bootham Deyyam 12.11.2018 / 16:25

1 resposta

0

Tente o seguinte, mas observe que a compatibilidade é bastante limitada. Veja as notas abaixo.

get_title(){(
        set -e
        ss='stty -g'; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
        e='printf '3''; st='printf '4''; t=
        stty -echo -icanon min 0 time "${2:-2}"
        printf "${1:-3[21t}" > "'tty'"
        while c='dd bs=1 count=1 2>/dev/null' && [ "$c" ]; do
                t="$t$c"
                case "$t" in
                $e*$e\|$e*$st)
                        t=${t%$e\}; t=${t%$st}; printf '%s\n' "${t#$e\][lL]}";
                        exit 0;;
                $e*);;
                *) break;;
                esac
        done
        printf %s "$t"; exit 1
)}

Exemplo:

$ get_title
$ title='get_title'

Ou, se o stdin do seu script não for o terminal:

$ title='get_title </dev/tty'

O stty + dd kludge tenta garantir que o script não seja bloqueado apenas se o terminal não reportar nada em resposta à saída \e[21t . Esta (ou melhor) abordagem também pode ser usada com outras seqüências de controle (por exemplo, para obter a posição do cursor).

Notas:

Como o escape \e[21t é considerado "inseguro", é necessária uma configuração extra para que ele funcione:

Para xterm : echo '*.vt100.allowWindowOps: true' | xrdb -override

Para urxvt : echo 'Rxvt.insecure: true' | xrdb -override

Ele não funcionará em todos os terminais baseados em vte como gnome-terminal , mate-terminal , xfce4-terminal , etc, já que eles relatam um fake ("Terminal") ou vazty title em resposta.

mlterm não precisa de nada especial, mas irá falhar (!) se o título não tiver sido definido antes com \e]2;TITLE\a .

screen reportará seu próprio título da janela (aquele que foi definido com a opção -t ou o comando Ca A , não o título da janela em que está sendo executado.

Está bloqueado e não é suportado em tmux .

    
por 19.11.2018 / 19:18