Defina o título da janela do terminal para a hora atual do UTC

2

Eu estou querendo saber se existe uma maneira de definir a barra de título da janela do terminal para a hora atual do UTC, provavelmente sem segundos (muita luz piscando). Eu faço muito trabalho na nuvem e procuro minimizar o pensamento sobre a matemática da subtração:)

A maioria das coisas que eu encontrei é para o caminho atual, mas não tenho certeza de como atualizar a barra de título quando ela muda no terminal pelo tempo.

    
por John Ptacek 03.02.2017 / 01:23

2 respostas

2

Tanto quanto eu entendo, você esperaria que o título fosse sempre atualizado regularmente, não importando o que acontecesse dentro do terminal; ou seja, mesmo que não haja atividade (por exemplo, o prompt é exibido e você não está digitando nada) ou quando um longo processo está em execução. Estou certo?

O título pode ser atualizado emitindo uma certa seqüência de escape chamada OSC 0, por exemplo

echo -ne '\e]0;newtitle\a'

Se você não vir esse comando alterando o título, isso ocorre porque o prompt subseqüente o substitui novamente. Você precisa remover a configuração do título do prompt. Como prova de conceito, você pode tentar isso para ter certeza de que realmente define o título:

echo -ne '\e]0;newtitle\a'; sleep 5

Você pode escrever um script que emita e atualize regularmente o título de maneira semelhante e executar esse script em segundo plano.

Existe um problema inerente a essa abordagem, no entanto. Se você estiver executando outro aplicativo no terminal, esse aplicativo também poderá imprimir seqüências de escape. Especialmente com outras camadas intermediárias, como o ssh, há uma pequena chance de que o aplicativo em questão imprima uma sequência de escape em duas etapas consecutivas (por exemplo, a seqüência de escape que muda o primeiro plano para vermelho é "\ e [31m", que pode ser impressa como os caracteres "\ e [3" em um único passo, e logo em seguida "1m"). Há uma pequena chance de que seu script de fundo intervenha e imprima suas coisas no meio, potencialmente quebrando o tempo de exibição (sem trocadilhos).

Não há uma maneira simples de impedir que isso aconteça. Talvez o tmux ou uma camada similar possa ser configurada para atualizar o título para conter a hora. Não sei se digamos que o tmux suporte isso, mas ele tem o conhecimento necessário para garantir que essa pequena chance de corrupção de exibição seja eliminada. Bem, ele já mostra a hora por padrão (não no título, mas na tela real, no entanto).

Eu recomendo que você execute um único aplicativo ou aplicativo de relógio gráfico em algum lugar de sua área de trabalho, independentemente dos emuladores de terminal. Dessa forma, a mesma informação (a hora) não é exibida em vários locais, apenas em um só lugar. Além disso, você salva o título do terminal (o imóvel disponível) para algumas informações reais mais significativas específicas desse terminal em particular.

    
por egmont 03.02.2017 / 14:18
1

Eu não testei isso, mas o bash tem $ PROMPT_COMMAND que deve ser executado antes de mostrar o prompt.

Se você colocar

PROMPT_COMMAND="echo -ne '\e]0;$(date)\a'"

no seu .bashrc, a data será definida como título e atualizada sempre que o prompt for exibido.

    
por Soren A 03.02.2017 / 15:03