O cursor é desenhado pelo terminal ou emulador de terminal, não pelos aplicativos em execução dentro deles. Alguns deles têm disposição para permitir que o usuário altere a forma ou os atributos do cursor usando sequências de escape.
Alterar a forma do cursor independentemente do tipo do terminal pode ser feito usando os recursos cnorm
(cursor normal), civis
(cursor invisível) ou cvvis
(cursor muito visível) terminfo (por exemplo, usando o comando tput
). No entanto, você não tem nenhuma garantia de que cnorm
ou cvvis
seja um cursor bloco .
Para afetar o piscar de olhos, a forma, a cor e o comportamento do cursor especificamente, isso terá que ser feito em uma base por terminal.
No Linux em PCs x86 VGA e consoles virtuais de buffer de quadro, ele pode ser controlado usando seqüências de escape como:
printf '\e[?x;y;zc'
Na forma mais simples:
printf '\e[?xc'
Você define a altura do cursor onde x
varia de 1
(cursor invisível) a 8 (bloco inteiro), 0
dando a você o padrão (atualmente, o mesmo que 2
).
Então:
printf '\e[?8c'
lhe dará um cursor de bloco completo.
Na verdade, é isso que tput cvvis
envia (enquanto tput cnorm
envia \e[0c
e civis
\e[1c
).
Ao usar o formulário de 3 parâmetros, o comportamento irá variar com o driver de vídeo subjacente. Por exemplo, para obter um tipo de cursor de bloco cinza não intermitente, como sugere a sua pergunta, você faria:
printf '\e[?81;128;240c'
Em um console PC VGA Linux. E:
printf '\e[?17;30;254c'
Em um console Linux de buffer de quadros.
Agora, isso era específico do Linux, outros terminais têm maneiras diferentes de alterar a forma do cursor. Por exemplo, xterm
e rxvt
e suas derivadas usam as mesmas seqüências do terminal VT520 para definir a forma do cursor:
printf '\e[x q'
Em que x
recebe um valor de 1 a 4 para bloco piscante, bloco fixo, sublinhado intermitente, sublinhado constante.
E a cor pode ser definida com:
printf '\e]12;%s\a' 'colour'
Assim, seu cursor de bloco fixo e cinza pode ser alcançado com:
printf '\e[2 q\e]12;grey\a'
Para a maioria dos emuladores de terminal X11, você também pode alterar os atributos do cursor via opções de linha de comando para o comando que inicia o emulador ou via arquivos de configuração ou recursos do X11, ou menus.
Por exemplo, para xterm
, você tem a opção -uc/+uc
para o cursor sublinhado , -ms
para sua cor e cursorBlink
, cursorColor
, cursorOffTime
, cursorOnTime
, cursorUnderLine
, alwaysHighlight
recursos para configurá-lo.
E o menu padrão na Ctrl + clique esquerdo tem uma opção para ativar ou desativar a intermitência.