So stoppen Sie das Blinken des Cursors

22

Wie bremse ich den Cursor blinkingin einem TTY ? (oder irgendwo anders).

BONUS Punkte für eine universelle Einstellung, bei der der Cursor fast überall blinkt.

Stefan
quelle

Antworten:

17

Dies gibt Ihnen einen durchgehend gelben Block (nicht blinkend) als Cursor:

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

Weitere Informationen finden Sie in den folgenden Quellen : Linuxgazette und EmacsWiki sowie in der Datei /usr/src/linux/Documentation/VGA-softcursor.txt(falls auf Ihrem System vorhanden).

tante
quelle
das funktioniert bei mir bis ich vim benutze, dann wenn ich den cursor
beende, blinkt
Und das gibt Ihnen einen nicht blinkenden weißen Blockecho -e '\033[?16;0;224c'
Utku
thx, ich könnte die letzte Zahl (224) in 244 ändern, um einen festen weißen Block zu erhalten :)
Ich habe keine Auswirkungen auf mein System, auf dem bash 5.0.11 unter Arch Linux
S.Goswami
26

Es gibt eine Standardsteuersequenz , um das Blinken des Cursors auf den Terminals auszuschalten.

printf '\033[?12l'

Viele Terminals implementieren diese Einstellung jedoch nicht, lesen Sie weiter.

Es gibt eine weiter verbreitete Standard-Terminaleinstellung zum Umschalten der Cursor-Sichtbarkeit zwischen hoher Sichtbarkeit, normaler Sichtbarkeit und Unsichtbarkeit. Einige Terminals unterscheiden nicht zwischen normal und hoch, und es gibt keine Garantie, dass das eine oder andere blinkt oder nicht. In term emittiert den cvvis, cnormoder civisZeichenfolge (z tput cvvis). Die entsprechenden Termcap- Einträge sind vs, veund vi.

Diese Einstellung übersteht ein Zurücksetzen des Terminals nicht , sodass Sie möglicherweise feststellen, dass sie das Starten vieler Vollbildanwendungen nicht übersteht. Sie können diese Schwierigkeit überwinden, indem Sie die Änderungssequenz der Cursorkonfiguration zur Rücksetzzeichenfolge Ihres Terminals hinzufügen.

  • Speichern Sie auf einem terminfo-basierten System mit ncurses die terminfo-Einstellungen Ihres Terminals in einer Datei mit infocmp >>~/etc/terminfo.txt. Bearbeiten Sie die Beschreibung, um die rs1Reihenfolge (Grundeinstellung) zu ändern , z . B. Ersetzen rs1=\Ecdurch rs1=\Ec\E[?12l. Bei einigen Programmen und Einstellungen müssen Sie möglicherweise auch das rs2(vollständige Zurücksetzen) ändern . Dann kompilieren Sie die terminfo-Beschreibung mit tic ~/etc/terminfo.txt(schreibt unter das Verzeichnis $TERMINFOoder ~/.terminfowenn nicht gesetzt).
  • Auf einem termcap-basierten System können Sie die termcap-Einstellungen (normalerweise /etc/termcap) aus Ihrer termcap-Datenbank abrufen . Ändern Sie die Sequenzen is(Basic Reset) und rs(Full Reset), um Ihre Einstellungen anzufügen, z :is=\Ec\E[?12l:. Setzen Sie die TERMCAPUmgebungsvariable auf den bearbeiteten Wert (beginnend und endend mit :).

Einige Terminals und andere Anwendungen bieten Ihnen weitere Optionen:

  • Der xterm- Cursor blinkt, wenn die cursorBlinkRessource auf festgelegt ist trueoder die -bcOption in der Befehlszeile übergeben wird. Die Blinkrate kann über die cursorOnTimeund -Ressourcen angepasst werden cursorOffTime.
  • Einige andere GUI-Terminalemulatoren können den Cursor blinken lassen. Überprüfen Sie das Konfigurationsdialogfeld.
  • Die Linux-PC-Konsole (VGA) verfügt über eine Reihe von Cursor-Einstellungen. Ihre genaue Bedeutung und Anwendbarkeit hängt von der zugrunde liegenden VGA-Implementierung ab (Linux-Framebuffer oder Grafikkarte). Wenn der Standardcursor blinkt, schalten Sie den Hardwarecursor aus und den Softwarecursor ein printf '\033[17;127?c'(mit dem ersten Parameter 17 erhalten Sie den Softwarecursor ohne Hardwarecursor, und mit dem zweiten Parameter 127 wird das Video im Wesentlichen invertiert). Informationen zum Zurücksetzen der Klemmen finden Sie oben.
  • In Emacs , M-x blink-cursor-modeschaltet die Cursor blinkt. Setzen (blink-cursor-mode 0)Sie es ein ~/.emacs, um es auszuschalten. Dies ist eine globale Einstellung und gilt nicht in einem Textterminal.

Siehe auch Juri Linkov (Jurta) 's kein Blinken Seite , wie in Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox und mehr auszuschalten blinken.

Gilles 'SO - hör auf böse zu sein'
quelle
14

Ich fand das einfacher, wenn Sie root-Rechte haben:

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

Ich habe es in das Maschinenstart-Skript wie /etc/rc.localfür Arch Linux eingefügt.

duraid
quelle
5

In Linux können Sie die Escape-Sequenz verwenden "\e[?48;0;64"oder was auch immer Sie möchten, aber dies funktioniert nicht in tmux / vim. Tmux / Vim gibt beim Start einen "cnorm" -Befehl aus, der standardmäßig a enthält "\e[?0c". Sie können sehen, dass dies die Auswirkungen der obigen Einstellung rückgängig macht. Sie müssen cnorm in die oben angegebene Reihenfolge ändern, damit die TUI-Anwendungen den Cursor auf Ihre Präferenz zurücksetzen können. Weitere Informationen hierzu von Gilles, aber wenn Sie nach einer schnellen Lösung suchen, versuchen Sie Folgendes:

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

Der letzte Befehl generiert das neue terminfo, unter ~/.terminfodem automatisch abgeholt werden soll, wenn Sie tmux server / vim neu starten.

ypsu
quelle
3

Stellen

17; 0; 127c

auf deine PS1-Variable und du hörst auf zu blinken.

Z.B:

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

mru
quelle
1
Dies wird (zumindest für mich) die Klemmenleitungsunterbrechungen zerstören (bei Leitungsüberlauf). Verwenden Sie eckige Klammern, die ausgeblendet werden: Zum Beispiel BLUEBOXNOBLINK="\033[?17;0;60c"dannPS1="\[$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
David Svanberg
quelle
Es ist eine wundervolle Lösung und hat wahrscheinlich eine Menge positive Stimmen erhalten, wenn der Autor nicht vergessen hat, es zu erklären ... :-)
Peter sagt, dass er Monica
1
-cursor offist nicht ganz das, wonach gefragt wird, es lässt den Cursor verschwinden ... setterm -blink offscheint vielversprechender, aber es betrifft Text, nicht den eigentlichen Cursor.
mr.spuratic
setterm -cursor off; setterm -cursor onfunktioniert hier, aber es ist eine inakzeptable Problemumgehung
Thor
0

ich setze

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

in /etc/rc.local und erstellte einen systemd-Dienst dafür unter Verwendung von Online-Anweisungen. Allerdings ist mir aufgefallen, dass der Cursor manchmal nach dem Booten noch blinkt. Es wäre gut zu wissen, wie man das Blinken des Cursors über sysfs auf einem modernen System dauerhaft ausschaltet. Hat jemand irgendwelche Tipps? Einige Distributionen haben /etc/sysfs.conf, aber ich verwende Arch und finde diese Datei nicht in sysfsutils oder anderswo.

Als vorübergehende Korrektur habe ich den folgenden Befehl ausgeführt

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

Einige Experimente haben gezeigt, dass der '255c' am Ende besser funktioniert als der oben aufgeführte '127c'. Er erzeugt eher einen weißen als einen grauen Cursor.

Metamorph
quelle
0

Für Linux Konsole:

Alternative 1

Fügen Sie -I "\033[?17;0;255c"den gettyZeilen in Ihrer /etc/inittabDatei eine Option hinzu . Um dies zu tun:

  1. Öffnen Sie die /etc/inittabDatei mit einem Texteditor. Es sollte Linien sein , die enthalten gettyoder agettyoder ähnliches. Ein Beispiel ist:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. -I "\033[?17;0;255c"Zu jeder gettyZeile hinzufügen . Als Beispiel würde -I "\033[?17;0;255c"die gettyobige Zeile nach dem Hinzufügen wie folgt aussehen:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Starten Sie das System neu oder beenden Sie alternativ alle gettyProzesse.

Alternative 2

Eine bessere Alternative ist zu setzen ESC[?17;0;255cin /etc/issue, anstatt sie zu setzen gettyLinien. Dies zu tun viist wie folgt:

  1. Öffnen Sie /etc/issuemit vi.
  2. Wechseln Sie an einer beliebigen Stelle der /etc/issueDatei in den Einfügemodus.
  3. Drücken Sie im Einfügemodus ^V(d. H.) Und Ctrlvdann Esc. Das Escape-Zeichen sollte jetzt eingefügt werden.
  4. Fügen Sie nun die verbleibenden Zeichen ein [?17;0;255c.

Alternative 3

Eine andere Alternative besteht darin, den Hardware-Cursor zu belassen (anstatt einen Software-Cursor zu verwenden) und das Blinken des Hardware-Cursors zu beenden und ihn zu einem Block-Cursor zu machen. Um dies zu tun:

  1. Fügen Sie Folgendes hinzu zu /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Hinzufügen ESC[?8czu /etc/issue. Anweisungen hierzu finden Sie unter "Alternative 2".

Mit dieser Option wird der Cursor jedoch nicht hellweiß. Ich denke, dies ist nur mit dem Software-Cursor möglich.

Wenn Sie einer dieser Alternativen gefolgt sind, wird ein weißer, nicht blinkender Blockcursor angezeigt.

Weitere Informationen

Utku
quelle
0

Dadurch wird der Cursor vollständig ausgeblendet.

tput civis

Wiederherstellen:

tput cnorm
NVRM
quelle