Como parar o cursor de piscar


22

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

BÔNUS Aponta para uma configuração universal que impede o cursor de piscar em quase todos os lugares.

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, verifique estas referências: Linuxgazette e EmacsWiki , bem como o arquivo /usr/src/linux/Documentation/VGA-softcursor.txt(se presente no seu sistema)


Isso funciona para mim até que eu uso vim, então quando eu sair do cursor está de volta a piscar :(
mulllhausen

E isso dá-lhe um bloco branco não piscar sólidaecho -e '\033[?16;0;224c'
Utku

thx, eu poderia mudar o último número (224) para 244 para obter um branco sólido bloco :)

Não tenho efeito disso no meu sistema executando o bash 5.0.11 no Arch Linux
S.Goswami

26

Há 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.

Há 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 string cvvis, cnormou civis(por exemplo tput cvvis). As entradas correspondentes do termcap são vs, vee vi.

Essas configurações não sobreviverão a uma redefiniçã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 seu 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 a rs1sequência (redefinição básica), por exemplo, substitua rs1=\Ecpor rs1=\Ec\E[?12l. Em alguns programas e configurações, pode ser necessário alterar também a rs2(redefinição total). Em seguida, compile a descrição terminfo com tic ~/etc/terminfo.txt(isto grava no diretório $TERMINFO, ou ~/.terminfose não estiver definido).
  • Em um sistema baseado em termcap, pegue as configurações do termcap no banco de dados do 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 TERMCAPvariável de ambiente para o valor editado (começando e terminando com :).

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

  • o cursor xterm pisca se ocursorBlinkrecurso estiver definido comotrueou se a-bcopção for passada na linha de comando. A taxa de piscada é personalizável através dosrecursoscursorOnTimeecursorOffTime.
  • Alguns outros emuladores de terminal da GUI podem piscar o cursor; verifique sua caixa de diálogo de configuração.
  • o console do 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 desligar o cursor do hardware e o cursor do software com algo comoprintf '\033[17;127?c'(o primeiro parâmetro 17 fornece o cursor do software sem o cursor do hardware, e o segundo parâmetro definido como 127 torna o vídeo essencialmente inverso). Veja acima sobre redefinições de terminal.
  • No Emacs ,M-x blink-cursor-mode alterna o piscar do cursor. Coloque (blink-cursor-mode 0)no seu ~/.emacspara desligá-lo. Essa é uma configuração global e não se aplica a um terminal de texto.

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


14

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

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

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


5

No linux tty, você pode usar a sequê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 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 sob o ~/.terminfoqual deve ser escolhido automaticamente se você reiniciar o tmux server / vim.


3

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 \ $'


1
Isso (pelo menos para mim) estraga as quebras de linha do terminal (estouro de linha). Use colchetes, escapou: Por exemplo BLUEBOXNOBLINK="\033[?17;0;60c", entãoPS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
Emanuel Berg

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

É uma solução maravilhosa e provavelmente recebeu muitos
votos positivos

1
-cursor offnão é exatamente o que é solicitado, faz o cursor desaparecer ... setterm -blink offparece mais promissor, mas afeta o texto, não o cursor real.
mr.spuratic

setterm -cursor off; setterm -cursor onfaz o trabalho aqui, mas é uma solução inaceitável
Thor

0

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 o /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

Para console Linux:

Alternativa 1

Adicionar -I "\033[?17;0;255c"opção às gettylinhas do seu /etc/inittabarquivo. Para fazer isso:

  1. Abra o /etc/inittabarquivo com um editor de texto. Deve haver linhas que contenham gettyou agettyou similares. Um exemplo é:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Adicione -I "\033[?17;0;255c"a cada gettylinha. Como exemplo, depois de adicionar -I "\033[?17;0;255c", a gettylinha acima ficaria da seguinte maneira:

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

Alternativa 2

Uma alternativa melhor é inserir , ESC[?17;0;255cem /etc/issuevez de colocá-lo em gettylinhas. Fazer isso usando vié o seguinte:

  1. Abra /etc/issueusandovi .
  2. Em qualquer lugar do /etc/issue arquivo, entre no modo de inserção.
  3. Enquanto estiver no modo de inserção, pressione ^V(ou seja Ctrlv) e, em seguida, pressione 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 um 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[?8ca /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.

Outras informações


0

Isso oculta completamente o cursor.

tput civis

Para recuperar:

tput cnorm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.