Como executar o comando na inicialização do urxvt

2

O Urxvt não suporta o uso de uma barra I como cursor. Uma das maneiras que encontrei para contornar isso é enviar o comando echo -n -e "3[6 q" .

Isso funciona desde que eu envie o comando toda vez que eu abrir o urxvt, o que eu prefiro não ter que fazer.

Eu tentei fazer com que o urxvt executasse isso na inicialização, com vários graus de sucesso.

Eu tentei usar .bashrc , com exec echo -n -e "3[6 q" . Isso não teve nenhum efeito.

Eu uso o i3, então eu tentei definir o keysym para o urxvt começar com o comando, bem como usar o argumento -hold , mas tudo o que aconteceu foi que eu não consegui usar o terminal, como foi realizado.

A única coisa que eu consegui fazer que teve algum sucesso foi definir um keysym em .Xresources :

URxvt.keysym.C-Escape: command: 3[6 q

Isso funcionou, mas significa que eu tenho que pressionar Ctrl-Escape toda vez que eu iniciar o terminal.

O que eu gostaria de saber é se existe alguma maneira de executar este comando sempre que eu iniciar o urxvt, enquanto ainda permitir que eu realmente use o terminal?

    
por Yitzy 07.06.2016 / 13:58

3 respostas

1

Se você quiser colocar isso no seu arquivo .bashrc , ele será melhorado um pouco:

  • você deve garantir que a string seja direcionada para o terminal
  • também, o shell deve ser interativo (no caso de alguma fonte de script .bashrc )
  • echo com a opção -e tem problemas de portabilidade. Use printf .

Colocando os dois juntos e gravando no erro padrão (porque não está em buffer):

[ -n "PS1" ] && [ -t 2 ] && printf '3[6 q' >&2

O urxvt implementa a sequência de controle DECSCUSR documentada em Sequências de controle do XTerm :

CSI Ps SP q
          Set cursor style (DECSCUSR, VT520).
            Ps = 0  -> blinking block.
            Ps = 1  -> blinking block (default).
            Ps = 2  -> steady block.
            Ps = 3  -> blinking underline.
            Ps = 4  -> steady underline.
            Ps = 5  -> blinking bar (xterm).
            Ps = 6  -> steady bar (xterm).

Observe que os códigos 5 e 6 são recursos do xterm.

Esta seqüência de controle não é mencionada na página de manual on-line urxvt (7) , mas é mencionada no entrada do changelog :

9.19 Sun Oct 27 17:16:07 CET 2013
...
        - add support for the set cursor style (DECSCUSR) control
          function.

também o código-fonte mostra isso (consulte set_cursor_style ), e a fonte da página de manual mostra a característica. Isso foi atualizado em 2014 para os códigos 5 e 6 .

Leitura adicional:

por 07.08.2016 / 02:42
0
echo -en "\x1b[\x35 q" # changes to blinking vertical bar
echo -en "\x1b[\x36 q" # changes to steady vertical bar

Esses são os dois códigos de escape relevantes que você precisa colocar em seu .bashrc para alterá-lo. Pegue tudo o que você experimentou primeiro. E, claro, escolha entre estável ou piscando e comente o outro caso você queira mais tarde.

EDIT: Para ser mais informativo, eu não tenho certeza se eu posso ligar qualquer coisa, ou onde você conseguiu esses códigos, mas eu testei estes em urxvt no meu .bashrc e é o que eu já usei no xterm e eles funcionam, Eu posso usar todas as formas de cursor, se você precisar de todo o resto, deixe-me saber.

    
por 15.07.2016 / 02:37
0

Se alguém - como eu, estava procurando uma resposta para a pergunta, não o problema específico do cara que perguntou, a resposta é:
urxvt [your other options - e.g. fancy colors...] -hold -e <your command>
Se você omitir -hold , o terminal será fechado quando o comando estiver concluído.
exemplo:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -e calc
inicia um urxvt com uma calculadora (uma boa precisão no gentoo) e fecha quando fecho a calculadora. Eu uso isso com uma tecla de atalho.
outro exemplo:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -hold -e echo -e Hello you greatest hacker\n
saudaria um usuário narcisista enquanto abre a janela do terminal e fica aberto. Eu não uso o último exemplo.

    
por 17.08.2018 / 00:31