it-swarm-es.tech

Cómo detener el parpadeo del cursor

¿Cómo hago que el cursor se detenga blinking cuando en un TTY ? (o en cualquier otro lugar).

Puntos BONUS para una configuración universal que detiene el parpadeo del cursor en casi todas partes.

22
Stefan

Esto le da un bloque amarillo sólido (sin parpadeo) como cursor:

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

Para obtener más información, consulte estas referencias: Linuxgazette y EmacsWiki , así como el archivo /usr/src/linux/Documentation/VGA-softcursor.txt (si está presente en su sistema)

17
tante

Hay una secuencia de control estándar para apagar el cursor que parpadea en los terminales.

_printf '\033[?12l'
_

Sin embargo, muchos terminales no implementan esta configuración, así que siga leyendo.

Existe una configuración de terminal estándar más ampliamente implementada para cambiar la visibilidad del cursor entre alta visibilidad, visibilidad normal e invisibilidad. Algunos terminales no hacen una diferencia entre normal y alto, y no hay garantía de que uno u otro parpadeen o no. En terminfo , emita la cadena cvvis, cnorm o civis (por ejemplo, _tput cvvis_). Las entradas correspondientes termcap son vs, ve y vi.

Esta configuración no sobrevivirá a un reinicio de terminal , por lo que es posible que no sobreviva al inicio de muchas aplicaciones de pantalla completa. Puede superar esta dificultad agregando la secuencia de cambio de configuración del cursor a la cadena de reinicio de su terminal.

  • En un sistema basado en terminfo que usa ncurses, guarde la configuración de terminfo de su terminal en un archivo con _infocmp >>~/etc/terminfo.txt_. Edite la descripción para cambiar la secuencia _rs1_ (restablecimiento básico), p. reemplace _rs1=\Ec_ por _rs1=\Ec\E[?12l_. Con algunos programas y configuraciones, es posible que también necesite cambiar _rs2_ (restablecimiento completo). Luego compile la descripción del terminfo con _tic ~/etc/terminfo.txt_ (esto escribe bajo el directorio _$TERMINFO_, o _~/.terminfo_ si no está configurado).
  • En un sistema basado en termcap, tome la configuración de termcap de su base de datos de termcap (generalmente _/etc/termcap_). Cambie las secuencias is (restablecimiento básico) y rs (restablecimiento completo) para agregar su configuración, p. _:is=\Ec\E[?12l:_. Establezca la variable de entorno TERMCAP en el valor editado (comenzando y terminando con _:_).

Algunos terminales y otras aplicaciones le ofrecen más opciones:

  • El cursor xterm parpadea si el recurso cursorBlink está configurado en true o el _-bc_ opción se pasa en la línea de comando. La tasa de parpadeo se puede personalizar a través de los recursos cursorOnTime y cursorOffTime.
  • Algunos otros emuladores de terminal GUI pueden parpadear el cursor; verifique su cuadro de diálogo de configuración.
  • La consola Linux PC (VGA) tiene varias configuraciones de cursor; su significado exacto y aplicabilidad depende de la implementación VGA subyacente (framebuffer de Linux o tarjeta de video). Si su cursor predeterminado parpadea, intente apagar el cursor de hardware y el cursor de software con algo como _printf '\033[17;127?c'_ (el primer parámetro 17 le proporciona el cursor de software sin un cursor de hardware, y el segundo parámetro configurado en 127 lo hace esencialmente video inverso). Ver arriba con respecto a los reinicios de terminal.
  • En Emacs , _M-x blink-cursor-mode_ alterna el parpadeo del cursor. Ponga _(blink-cursor-mode 0)_ en su _~/.emacs_ para apagarlo. Esta es una configuración global y no se aplica en un terminal de texto.

Consulte también Juri Linkov la página Sin parpadeo de (Jurta) para saber cómo desactivar el parpadeo en Lesstif, Tk, Gtk ( Gnome), Qt (KDE), Firefox y más.

Encontré que esto es más fácil si tienes permisos de root:

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

Lo puse en el script de inicio de la máquina como /etc/rc.local para Arch Linux.

14
duraid

En linux tty puedes usar la secuencia de escape "\e[?48;0;64" o lo que quieras pero esto no funciona en tmux/vim. Tmux/Vim emite un comando "cnorm" en el inicio que por defecto contiene un "\e[?0c". Puede ver que esto deshace los efectos de la configuración anterior. Debe cambiar cnorm a la secuencia anterior para que las aplicaciones TUI restablezcan el cursor a su preferencia. Más información sobre esto por Gilles, pero si está buscando una solución rápida, intente esto:

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

El último comando generará el nuevo terminfo en ~/.terminfo, que debe recogerse automáticamente si reinicia tmux server/vim.

5
ypsu

Poner

\ 033 [? 17; 0; 127c

a su variable PS1 y dejará de parpadear constantemente.

P.EJ:

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

3
mru

Pongo

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

en /etc/rc.local y creé un servicio systemd para él usando instrucciones en línea. Sin embargo, noté que a veces, después del arranque, el cursor todavía parpadea. Sería bueno saber la forma correcta de desactivar permanentemente el parpadeo del cursor a través de sysfs en un sistema systemd moderno, ¿alguien tiene algún consejo? Algunas distribuciones tienen /etc/sysfs.conf pero estoy ejecutando Arch y no encuentro este archivo en sysfsutils ni en ningún otro lugar.

Como solución temporal ejecuté el siguiente comando

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

Algunos experimentos demostraron que el '255c' al final funciona mejor que el '127c' mencionado anteriormente, produce un cursor blanco en lugar de gris.

0
Metamorphic

Esto oculta completamente el 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 la consola de Linux:

Alternativa 1

Añadir -I "\033[?17;0;255c" opción para getty líneas en su /etc/inittab expediente. Para hacerlo:

  1. Abre el /etc/inittab archivo con un editor de texto. Debe haber líneas que contengan getty o agetty o similar. Un ejemplo es:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Añadir -I "\033[?17;0;255c" a cada getty línea. Como ejemplo, después de agregar -I "\033[?17;0;255c", la línea getty anterior se vería de la siguiente manera:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Reinicie el sistema, o alternativamente, elimine todos los procesos getty.

Alternativa 2

Una mejor alternativa es poner ESC[?17;0;255c en /etc/issue, en lugar de ponerlo en getty líneas. Hacer esto usando vi es como sigue:

  1. Abierto /etc/issue usando vi.
  2. En cualquier lugar del /etc/issue archivo, ingrese al modo de inserción.
  3. Mientras está en modo de inserción, presione ^V (es decir, Ctrlv), entonces presione Esc. Ahora se debe insertar el carácter de escape.
  4. Ahora, inserte los caracteres restantes, que son [?17;0;255c.

Alternativa 3

Otra alternativa es mantener el cursor de hardware (en lugar de usar un cursor de software) y dejar de parpadear el cursor de hardware y convertirlo en un cursor de bloque. Para hacerlo:

  1. Agregue lo siguiente a /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Añadir ESC[?8c a /etc/issue. Consulte la "Alternativa 2" para obtener instrucciones sobre cómo hacerlo.

Sin embargo, con esta opción, el cursor no se vuelve blanco brillante. Supongo que esto solo es posible con el uso del cursor de software.

Después de seguir cualquiera de estas alternativas, obtendrá un cursor de bloque blanco que no parpadea.

Más información

0
Utku