it-swarm-pt.tech

Como parar o cursor de piscar

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

Pontos BÔNUS para uma configuração universal que faz o cursor piscar em quase todos os lugares.

22
Stefan

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

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

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

17
tante

Existe uma sequência de controle padrão para desligar o cursor piscando nos terminais.

printf '\033[?12l'

No entanto, muitos terminais não implementam essa configuração, então continue a ler.

Existe uma configuração de terminal padrão mais amplamente implementada para alternar a 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 ou outro pisque ou não. Em terminfo , emita a sequência cvvis, cnorm ou civis (por exemplo, tput cvvis). As entradas termcap correspondentes são vs, ve e vi.

Essas configurações não sobreviverão a uma reinicialização do terminal ; portanto, você pode achar que ela 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 terminal.

  • Em um sistema baseado em terminfo usando ncurses, salve as configurações de terminfo do seu terminal em um arquivo com infocmp >>~/etc/terminfo.txt. Edite a descrição para alterar o rs1 (redefinição básica) sequência, p. substituir rs1=\Ec de rs1=\Ec\E[?12l. Em alguns programas e configurações, pode ser necessário alterar o rs2 (redefinição total) também. Em seguida, compile a descrição terminfo com tic ~/etc/terminfo.txt (isso é gravado no diretório $TERMINFO ou ~/.terminfo se não estiver definido).
  • Em um sistema baseado em termcap, pegue as configurações de termcap do banco de dados termcap (normalmente /etc/termcap). Altere as seqüências is (redefinição básica) e rs (redefinição completa) para anexar suas configurações, por exemplo :is=\Ec\E[?12l:. Defina a variável de ambiente TERMCAP para o valor editado (começando e terminando com :).

Alguns terminais e outros aplicativos oferecem mais opções:

  • O cursor xterm pisca se o recurso cursorBlink estiver definido como true ou o -bc opção é passada na linha de comando. A taxa de piscada é personalizável através dos recursos cursorOnTime e cursorOffTime.
  • Alguns outros emuladores de terminal da GUI podem piscar o cursor; verifique sua caixa de diálogo de configuração.
  • O console Linux PC (VGA) possui várias configurações de cursor; seu significado e aplicabilidade exatos dependem da implementação VGA subjacente (buffer de estrutura do Linux ou placa de vídeo). Se o cursor padrão piscar, tente desativar o cursor do hardware e o software com algo como printf '\033[17;127?c' (o primeiro parâmetro 17 fornece o cursor do software sem um cursor de hardware, e o segundo parâmetro definido como 127 torna o vídeo essencialmente inverso). Veja acima sobre redefinições de terminal.
  • Em Emacs , M-x blink-cursor-mode alterna o piscar do cursor. Colocar (blink-cursor-mode 0) na tua ~/.emacs para desligá-lo. Essa é uma configuração global e não se aplica a um terminal de texto.

Consulte também a página Sem piscar de Juri Linkov (Jurta) para saber como desativar o piscar em Lesstif, Tk, Gtk ( Gnome), Qt (KDE), Firefox e muito mais.

27

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

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

Coloquei no script de inicialização da máquina como /etc/rc.local para o Arch Linux.

14
duraid

No linux tty, você pode usar a sequência de escape "\e[?48;0;64" ou o que você 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 sequência acima para que os aplicativos TUI redefinam o cursor conforme sua preferência. Mais informações sobre isso por Gilles, mas se você estiver procurando uma solução rápida, tente o seguinte:

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 irá gerar o novo terminfo em ~/.terminfo, que deve ser escolhido automaticamente se você reiniciar o tmux server/vim.

5
ypsu

Colocar

\ 033 [? 17; 0; 127c

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

POR EXEMPLO:

exportar PS1 = '\ 033 [? 17; 0; 127c\u:\w\$'

3
mru

Eu coloco

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

em /etc/rc.local e criou um serviço systemd para ele usando instruções online. No entanto, notei que, algumas 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 /etc/sysfs.conf, mas estou executando o Arch e não encontro esse arquivo no sysfsutils ou em outro local.

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

Sudo zsh -c 'echo -n "\033[?17;0;255c" >> /etc/issue'

Algumas experiências mostraram que o '255c' no final funciona melhor que o '127c' listado acima, produz um cursor branco em vez de cinza.

0
Metamorphic

Isso oculta completamente o cursor.

tput civis

Restaurar:

tput cnorm
0
NVRM
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
0
David Svanberg

Para console do Linux:

Alternativa 1

Adicionar -I "\033[?17;0;255c" opção para getty linhas no seu /etc/inittab Arquivo. Para fazer isso:

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

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

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Reinicie o sistema ou, alternativamente, mate todos os processos getty.

Alternativa 2

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

  1. Abrir /etc/issue usando vi.
  2. Em qualquer lugar do /etc/issue, entre no modo de inserção.
  3. Enquanto estiver no modo de inserção, pressione ^V (isso é, Ctrlv), então aperte Esc. O caractere de escape agora deve 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 o cursor do 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. Adicionar ESC[?8c para /etc/issue. Consulte a "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 do software.

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

Mais informações

0
Utku