Escape code 50 in xterm

6

Meu colega de trabalho tem o seguinte em ~/.bash_profile de muitos de nossos servidores:

echo -e "3]50;SetProfile=Production\a"

O texto não parece importar, já que isso também funciona:

echo -e "3]50;ANY_TEXT\a"

Mas nenhum texto não funciona; o \a também é necessário.

Isso faz com que seu terminal no OSX mude de perfil (cores diferentes, etc.); mas no meu xterm, ele muda a fonte para enorme; que não consigo reiniciar.

Eu tentei redefinir isso com:

  1. Definindo fontes VT com shift + clique direito
  2. Faça "reinicialização suave" e "reinicialização completa" com shift + clique do meio
  3. Envio de vários códigos de escape & comandos:

    $ echo -e "3c"    # Reset terminal, no effect
    $ echo -e "3[0;m" # Reset attributes, no effect
    $ tput sgr0          # No effect
    $ tput reset         # No effect
    

Minhas perguntas:

  1. Por que isso funciona no xterm & o que exatamente isto faz? Código 50 está listado como "Reservado"?
  2. Como faço para redefinir isso?

Screenshot:

    
por Martin Tournoij 27.08.2014 / 10:03

3 respostas

4

Olhando para a lista de códigos de escape xterm , revela que (esc)]50;name(bel) define a fonte do xterm como a fonte name , ou para uma entrada no menu de fontes, se o primeiro caractere de name for # .

A maneira mais simples de redefini-lo é usar o menu de fontes do xterm ( Ctrl + clicar com o botão direito do mouse) e selecionar uma entrada diferente de Default . Como alternativa, você pode descobrir qual fonte o xterm usa na inicialização e definir isso com a seqüência de escape.

No menu de fontes, você também encontrará uma opção Allow Font Ops ; se você desmarcar isso, não poderá mais alterar a fonte usando sequências de escape.

    
por 27.08.2014 / 10:35
2

Para responder à pergunta sobre como redefini-la:

O código de escape xterm OSC 50 ... BEL pode ser usado para definir a fonte (Veja a resposta de @celtschk).

Além de configurá-lo para um nome de fonte, ele também pode ser definido como um índice no menu de fontes que você obtém com Ctrl e botão direito do mouse.

Podemos usar isso para redefinir a fonte padrão usando o índice de menu 0:

echo -n "\e]50;#0\a

De Sequências de controle do XTerm - (2014/05/26) :

OSC P s ; P t BEL  Set Text Parameters.

      P s = 5 0 → Set Font to P t. These controls may be disabled using the
      allowFontOps resource. If P t begins with a "#", index in the font menu,
      relative (if the next character is a plus or minus sign) or absolute. A
      number is expected but not required after the sign (the default is the
      current entry for relative, zero for absolute indexing).
      The same rule (plus or minus sign, optional number) is used when querying
      the font. The remainder of P t is ignored.
      A font can be specified after a "#" index expression, by adding a space
      and then the font specifier.
      If the "TrueType Fonts" menu entry is set (the renderFont resource),
      then this control sets/queries the faceName resource.
    
por 27.08.2014 / 11:10
2

O comentário sobre "reservado" é intrigante porque OSC 50 foi documentado nas sequências de controle do xterm desde 1991 para alterar a fonte. Aqui está um link para a versão X11R5 .

A tipografia na página da Web pode ser melhorada. Aqui está um polimento rápido para ajudar você a ver o problema:

Ps = 5 0 -> Set Font to Pt.

These controls may be disabled using the allowFontOps resource. If Pt begins with a "#", index in the font menu, relative (if the next character is a plus or minus sign) or absolute. A number is expected but not required after the sign (the default is the current entry for relative, zero for absolute indexing). The same rule (plus or minus sign, optional number) is used when querying the font. The remainder of Pt is ignored.

A font can be specified after a "#" index expression, by adding a space and then the font specifier.

If the "TrueType Fonts" menu entry is set (the renderFont resource), then this control sets/queries the faceName resource.

É muito provável que o problema esteja no último parágrafo, ou seja, você estava usando fontes TrueType e (não apenas qualquer texto ) definiu o nome da fonte da fonte como um valor que não correspondia a uma fonte. Fontconfig tem ... nenhuma verificação de erro útil para falar de ... e simplesmente "recuperar" usando uma fonte padrão, sem se preocupar em dizer a um aplicativo que algo deu errado. Se você fez isso, você não pode redefinir através do menu o nome da fonte TrueType (as opções óbvias no menu de fontes mudam apenas tamanhos ). As sequências de controle ainda funcionam, no entanto.

O Terminal OSX complementa essa situação sem ter documentação útil. Mas algumas de suas características são copiadas de vários lugares (ou podem ser copiadas para outros lugares). O recurso de mudança de perfil apareceu no KDE Konsole em 2008 como parte das mudanças para o relatório de bugs # 155801 ( curiosamente citando uma cópia antiga do documento de sequências de controle do xterm que alguém transformou em uma página da Web). Na verdade, o 50 estava no código de 2007 (codificado). Mas a mudança em 2008 deu-lhe um nome e comentou que entra em conflito com o OSC 50 do xterm.

por 27.11.2016 / 21:19