{ datagubbe }

datagubbe.se » no blinking in linux tty:s

No blinking in Linux TTY:s

I'm not sure who invented cursor blinking, and I've made no effort to find out. Perhaps it once served some kind of apparent purpose, but I'm very skeptical about that. To me, it's a massive annoyance. The cursor sits there, mocking me, attracting my attention and slowing my train of thought. It's one of the first things I turn off after installing a new system.

In Windows, turning cursor blinking off is very easy: there's a system-wide setting. On Linux, it's much harder: the huge amount of GUI toolkits and various applications rolling their own UI:s means there's also a corresponding number of settings to find and tweak.

Juri Linkov has an excellent page about disabling cursor blinking, but the information on Linux TTY:s listed there isn't sufficient to disable the blinking in all console applications. If you start a text editor on a TTY for example, it's likely to bring the blinking back.

Searching the web gives a number of results, most of them similarly unsatisfactory. I therefore hope the following instructions can be of help.

Disable cursor blinking

As far as I know, you must use the Linux framebuffer for this to work. If you're not running on some pre-2000 hardware or have actively configured your system to not use the kernel framebuffer, this shouldn't be a problem.

Turn blinking off:
echo 0 | sudo tee /sys/class/graphics/fbcon/cursor_blink

What does this mean? It's a configuration directive to the Linux framebuffer console. Funny thing is, although I've looked pretty hard, I haven't found any official documentation for this.

Making it permanent

As far as I know, to make it permanent (survive a reboot) using the following method, you must be using systemd. If you haven't actively picked a systemd-free distribution (such as Slackware, Artix or Devuan), this shouldn't be a problem either.

Simply create the file /etc/tmpfiles.d/cursor_blink.conf. It should contain the following line:
w /sys/class/graphics/fbcon/cursor_blink - - - - 0

This can be done with the following command (entered on one line):
echo "w /sys/class/graphics/fbcon/cursor_blink - - - - 0" | sudo tee /etc/tmpfiles.d/cursor_blink.conf

This tells systemd-tmpfiles to (w)rite the value 0 to the specified files. The blank (-) fields are mode, uid, gid and age. More information is available in the man page for tmpfiles.d.