Como parar o cursor de piscar

21

Como faço o cursor parar blinking quando em um TTY ? (ou em qualquer outro lugar).

Pontos BONUS para uma configuração universal que impede o cursor de piscar em quase todos os lugares.

    
por Stefan 04.11.2010 / 07:47

8 respostas

17

Isso fornece um bloco amarelo sólido (sem piscar) como um cursor:

echo -n -e '\e[?17;14;224c'

Para mais informações, consulte estas referências: Linuxgazette e EmacsWiki , bem como o arquivo /usr/src/linux/Documentation/VGA-softcursor.txt (se presente no seu sistema)

    
por 04.11.2010 / 10:13
24

Há uma seqüência de controle padrão para desativar o cursor piscando nos terminais.

printf '3[?12l'

No entanto, muitos terminais não implementam essa configuração, portanto, continue lendo.

Existe uma configuração de terminal padrão mais amplamente implementada para alternar visibilidade do cursor entre alta visibilidade, visibilidade normal e invisibilidade. Alguns terminais não fazem diferença entre normal e alto, e não há garantia de que um deles ou o outro irá ou não piscar. Em terminfo , emita a string cvvis , cnorm ou civis (por exemplo,% código%). As entradas correspondentes termcap são tput cvvis , vs e ve .

Essa configuração não sobreviverá a um terminal reset , portanto você poderá descobrir que não sobrevive ao lançamento de muitos aplicativos de tela cheia. Você pode superar essa dificuldade adicionando a sequência de alteração da configuração do cursor à string de redefinição do seu terminal.

  • Em um sistema baseado em terminfo usando ncurses, salve as configurações do terminal do terminal em um arquivo com vi . Edite a descrição para alterar a sequência infocmp >>~/etc/terminfo.txt (reinicialização básica), por ex. substitua rs1 por rs1=\Ec . Com alguns programas e configurações, talvez seja necessário alterar também o rs1=\Ec\E[?12l (reinicialização completa). Em seguida, compile a descrição do terminfo com rs2 (isso grava no diretório tic ~/etc/terminfo.txt ou $TERMINFO se não estiver definido).
  • Em um sistema baseado em termcap, obtenha as configurações termcap do seu banco de dados termcap (geralmente ~/.terminfo ). Altere as sequências /etc/termcap (reposição básica) e is (reposição total) para anexar as suas configurações, por ex. %código%. Defina a variável de ambiente rs para o valor editado (início e fim com :is=\Ec\E[?12l: ).

Alguns terminais e outras aplicações oferecem mais opções:

  • O cursor xterm pisca se o recurso TERMCAP estiver definido para : ou a opção cursorBlink é passada na linha de comando. A taxa de intermitência é personalizável pelos recursos true e -bc .
  • Alguns outros emuladores de terminal GUI podem piscar o cursor; verifique sua caixa de diálogo de configuração.
  • O console do Linux PC (VGA) tem várias configurações de cursor; seu significado e aplicabilidade exatos dependem da implementação VGA subjacente (framebuffer ou placa de vídeo do Linux). Se o seu cursor padrão piscar, tente desligar o cursor do hardware eo cursor do software com algo como cursorOnTime (o primeiro parâmetro 17 fornece o cursor do software sem um cursor de hardware e o segundo parâmetro definido como 127 faz com que seja essencialmente vídeo inverso ). Veja acima as resets do terminal.
  • No Emacs , cursorOffTime ativa o cursor piscando. Coloque printf '3[17;127?c' no seu M-x blink-cursor-mode para desativá-lo. Esta é uma configuração global e não se aplica a um terminal de texto.

Veja também Página sem piscar de Juri Linkov (Jurta) de como para desligar a piscar em Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox e muito mais.

    
por 04.11.2010 / 21:04
14

Achei isso mais fácil se você tem permissões de root:

~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink

Eu coloquei no script de inicialização da máquina como /etc/rc.local para arch linux.

    
por 20.12.2011 / 15:13
6

No linux tty você pode usar a seqüência de escape "\e[?48;0;64" ou o que quiser, mas isso não funciona no tmux / vim. O Tmux / Vim emite um comando "cnorm" na inicialização, que por padrão contém um "\e[?0c" . Você pode ver que isso desfaz os efeitos da configuração acima. Você precisa alterar o cnorm para a seqüência acima para que os aplicativos da TUI redefinam o cursor de acordo com sua preferência. Mais informações sobre isso por Gilles, mas se você está procurando uma solução rápida tente isto:

infocmp linux > /tmp/linux-terminfo
# Replace the last escape sequence here with your colors and settings
sed -i 's/cnorm=\E\[?25h\E\[?0c/cnorm=\E[?25h\E?48;0;64c/' /tmp/linux-terminfo
tic /tmp/linux-terminfo

O último comando gerará o novo terminfo em ~/.terminfo , que deve ser selecionado automaticamente se você reiniciar o servidor tmux / vim.

    
por 10.11.2013 / 12:38
4

Coloque

3[?17;0;127c

para sua variável PS1 e você vai parar de piscar constantemente.

E.G:

export PS1='3[?17;0;127c\u:\w\$ '

    
por 04.11.2010 / 13:32
1

eu coloquei

echo 0 > /sys/class/graphics/fbcon/cursor_blink

em /etc/rc.local e criou um serviço systemd para ele usando instruções on-line. No entanto, notei que, às vezes, após a inicialização, o cursor ainda está piscando. Seria bom saber a maneira correta de desligar permanentemente o cursor piscando via sysfs em um sistema systemd moderno, alguém tem alguma dica? Algumas distribuições têm o /etc/sysfs.conf, mas estou executando o Arch e não encontro este arquivo em sysfsutils ou em outro lugar.

Como uma correção temporária, executei o seguinte comando

sudo zsh -c 'echo -n "3[?17;0;255c" >> /etc/issue'

Alguma experimentação mostrou que o '255c' no final funciona melhor que '127c' listado acima, produz um cursor branco em vez de cinza.

    
por 09.06.2015 / 16:54
0
sudo cp /etc/issue /etc/issue.tmp
setterm -cursor off | sudo tee /etc/issue
cat /etc/issue.tmp | sudo tee --append /etc/issue
sudo rm /etc/issue.tmp
sudo reboot
    
por 28.10.2014 / 08:11
0

Para o console do Linux:

Alternativa 1

Adicione a opção -I "3[?17;0;255c" a getty linhas no seu arquivo /etc/inittab . Para fazer isso:

  1. Abra o arquivo /etc/inittab com um editor de texto. Deve haver linhas que contenham getty ou agetty ou similar. Um exemplo é:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Adicione -I "3[?17;0;255c" a cada linha getty . Por exemplo, depois de adicionar -I "3[?17;0;255c" , a linha getty acima teria a seguinte aparência:

    tty1::respawn:/sbin/getty -I "3[?17;0;255c" 38400 tty1
    
  3. Reinicialize o sistema ou, como alternativa, mate todos os getty processos.

Alternativa 2

Uma alternativa melhor é colocar ESC[?17;0;255c em /etc/issue , em vez de colocá-lo em getty linhas. Fazer isso usando vi é o seguinte:

  1. Abra /etc/issue usando vi .
  2. Em qualquer lugar do arquivo /etc/issue , insira o modo de inserção.
  3. Enquanto estiver no modo de inserção, pressione ^V (ou seja, Ctrl v ) e, em seguida, pressione Esc . O caractere de escape deve agora ser inserido.
  4. Agora, insira os caracteres restantes, que são [?17;0;255c .

Alternativa 3

Outra alternativa é manter o cursor do hardware (em vez de usar um cursor de software) e parar de piscar o cursor do hardware e torná-lo um cursor de bloco. Para fazer isso:

  1. Adicione o seguinte a /etc/inittab :

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Adicione ESC[?8c a /etc/issue . Consulte "Alternativa 2" para obter instruções sobre como fazer isso.

No entanto, com esta opção, o cursor não fica branco brilhante. Eu acho que isso só é possível com o uso do cursor de software.

Depois de seguir qualquer uma dessas alternativas, você obterá um cursor de bloco branco, sem piscar.

Mais informações

    
por 01.02.2017 / 15:21

Tags