Comment empêcher le curseur de clignoter


22

Comment puis-je arrêter le curseur blinkingdans un ATS ? (ou n'importe où ailleurs).

BONUS Points pour un paramètre universel qui empêche le curseur de clignoter presque partout.

Réponses:


17

Cela vous donne un bloc jaune solide (non clignotant) comme curseur:

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

Pour plus d'informations, consultez ces références: Linuxgazette et EmacsWiki ainsi que le fichier /usr/src/linux/Documentation/VGA-softcursor.txt(si présent sur votre système)


cela fonctionne pour moi jusqu'à ce que j'utilise vim, puis quand je
quitte

Et cela vous donne un bloc blanc solide qui ne clignote pasecho -e '\033[?16;0;224c'
Utku

merci, je pourrais changer le dernier nombre (224) en 244 pour obtenir un bloc blanc

Je n'ai aucun effet sur mon système exécutant bash 5.0.11 sur Arch Linux
S.Goswami

26

Il existe une séquence de contrôle standard pour désactiver le clignotement du curseur sur les terminaux.

printf '\033[?12l'

Cependant, de nombreux terminaux n'implémentent pas ce paramètre, alors lisez la suite.

Il existe un paramètre de terminal standard plus largement mis en œuvre pour basculer la visibilité du curseur entre haute visibilité, visibilité normale et invisibilité. Certains terminaux ne font pas de différence entre normal et élevé, et rien ne garantit que l'un ou l'autre clignotera ou non. Dans terminfo , émettez la chaîne cvvis, cnormou civis(par exemple tput cvvis). Les entrées correspondantes de termcap sont vs, veet vi.

Ces paramètres ne survivront pas à une réinitialisation du terminal , vous pouvez donc constater qu'il ne survit pas au lancement de nombreuses applications en plein écran. Vous pouvez surmonter cette difficulté en ajoutant la séquence de changement de configuration du curseur à la chaîne de réinitialisation de votre terminal.

  • Sur un système basé sur terminfo utilisant ncurses, enregistrez les paramètres terminfo de votre terminal dans un fichier avec infocmp >>~/etc/terminfo.txt. Modifiez la description pour modifier la rs1séquence (réinitialisation de base), par exemple, remplacez rs1=\Ecpar rs1=\Ec\E[?12l. Avec certains programmes et paramètres, vous devrez peut-être également modifier la rs2(réinitialisation complète). Compilez ensuite la description de terminfo avec tic ~/etc/terminfo.txt(ceci écrit sous le répertoire $TERMINFO, ou ~/.terminfos'il n'est pas défini).
  • Sur un système basé sur termcap, récupérez les paramètres termcap de votre base de données termcap (généralement /etc/termcap). Modifiez les séquences is(réinitialisation de base) et rs(réinitialisation complète) pour ajouter vos paramètres, par exemple :is=\Ec\E[?12l:. Définissez la TERMCAPvariable d'environnement sur la valeur modifiée (commençant et finissant par :).

Certains terminaux et autres applications vous offrent plus d'options:

  • Le curseur xterm clignote si la cursorBlinkressource est définie sur trueou si l' -bcoption est passée sur la ligne de commande. Le taux de clignotement est personnalisable via les ressources cursorOnTimeet cursorOffTime.
  • Certains autres émulateurs de terminaux GUI peuvent faire clignoter le curseur; vérifier leur boîte de dialogue de configuration.
  • La console Linux PC (VGA) a un certain nombre de paramètres de curseur; leur signification exacte et leur applicabilité dépendent de l'implémentation VGA sous-jacente (Linux framebuffer ou carte vidéo). Si votre curseur par défaut clignote, essayez de désactiver le curseur matériel et le curseur logiciel avec quelque chose comme printf '\033[17;127?c'(le premier paramètre 17 vous donne le curseur logiciel sans curseur matériel, et le deuxième paramètre défini sur 127 le rend essentiellement vidéo inverse). Voir ci-dessus concernant les réinitialisations de terminal.
  • Dans Emacs , M-x blink-cursor-modebascule le clignotement du curseur. Mettez- (blink-cursor-mode 0)le ~/.emacspour l'éteindre. Il s'agit d'un paramètre global et ne s'applique pas dans un terminal texte.

Consultez également la page No Blinking de Juri Linkov (Jurta) pour savoir comment désactiver le clignotement dans Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox, etc.


14

J'ai trouvé cela plus facile si vous avez des autorisations root:

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

Je l'ai mis dans le script de démarrage de la machine comme /etc/rc.localpour arch linux.


5

Dans le linux tty, vous pouvez utiliser la séquence d'échappement "\e[?48;0;64"ou ce que vous voulez, mais cela ne fonctionne pas dans tmux / vim. Tmux / Vim émet une commande "cnorm" au démarrage qui contient par défaut a "\e[?0c". Vous pouvez voir que cela annule les effets du paramètre ci-dessus. Vous devez remplacer cnorm par la séquence ci-dessus pour que les applications TUI réinitialisent le curseur selon vos préférences. Plus d'informations à ce sujet par Gilles mais si vous cherchez une solution rapide, essayez ceci:

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

La dernière commande générera le nouveau terminfo sous ~/.terminfolequel devrait être récupéré automatiquement si vous redémarrez le serveur tmux / vim.


3

Mettre

\ 033 [? 17; 0; 127c

à votre variable PS1 et vous cesserez de clignoter constamment.

PAR EXEMPLE:

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


1
Cela va (au moins pour moi) visser les ruptures de ligne terminales (débordement de ligne). Utilisez des crochets, échappés: Par exemple BLUEBOXNOBLINK="\033[?17;0;60c", alorsPS1="\[$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

C'est une solution merveilleuse et a probablement obtenu beaucoup de votes positifs, si l'auteur n'a pas oublié de l'expliquer ... :-)
Peter dit: réintègre Monica

1
-cursor offn'est pas du tout ce qui est demandé, cela fait disparaître le curseur ... setterm -blink offsemble plus prometteur, mais cela affecte le texte, pas le curseur réel.
mr.spuratic

setterm -cursor off; setterm -cursor onfonctionne ici, mais c'est une solution de contournement inacceptable
Thor

0

je mets

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

dans /etc/rc.local et créé un service systemd pour cela en utilisant des instructions en ligne. Cependant, j'ai remarqué que parfois après le démarrage, le curseur clignote toujours. Il serait bon de savoir comment désactiver définitivement le clignotement du curseur via sysfs sur un système systemd moderne. Quelqu'un a-t-il des conseils? Certaines distributions ont /etc/sysfs.conf mais j'exécute Arch et ne trouve pas ce fichier dans sysfsutils ou ailleurs.

Comme correctif temporaire, j'ai exécuté la commande suivante

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

Certaines expériences ont montré que le '255c' à la fin fonctionne mieux que le '127c' indiqué ci-dessus, il produit un curseur blanc plutôt que gris.


0

Pour la console Linux:

Alternative 1

Ajoutez une -I "\033[?17;0;255c"option aux gettylignes de votre /etc/inittabfichier. Faire cela:

  1. Ouvrez le /etc/inittabfichier avec un éditeur de texte. Il doit y avoir des lignes contenant gettyou agettyou similaire. Un exemple est:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Ajoutez -I "\033[?17;0;255c"à chaque gettyligne. Par exemple, après l'ajout -I "\033[?17;0;255c", la gettyligne ci-dessus se présenterait comme suit:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Redémarrez le système, ou bien tuez tous les gettyprocessus.

Alternative 2

Une meilleure alternative est de la mettre ESC[?17;0;255cau /etc/issuelieu de la mettre en gettylignes. Faire ceci en utilisant viest comme suit:

  1. Ouvrez en /etc/issueutilisant vi.
  2. N'importe où dans le /etc/issuefichier, entrez en mode d'insertion.
  3. Lorsque vous êtes en mode insertion, appuyez sur ^V(c'est-à-dire Ctrlv), puis appuyez sur Esc. Le caractère d'échappement doit maintenant être inséré.
  4. Maintenant, insérez les caractères restants, qui sont [?17;0;255c.

Alternative 3

Une autre alternative est de conserver le curseur matériel (au lieu d'utiliser un curseur logiciel) et d'arrêter de clignoter du curseur matériel et d'en faire un curseur bloc. Faire cela:

  1. Ajoutez ce qui suit à /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Ajouter ESC[?8cà /etc/issue. Reportez-vous à «Alternative 2» pour obtenir des instructions sur cette opération.

Cependant, avec cette option, le curseur ne devient pas blanc brillant. Je suppose que cela n'est possible qu'avec l'utilisation du curseur logiciel.

Après avoir suivi l'une de ces alternatives, vous obtiendrez un curseur de bloc blanc non clignotant.

Plus d'informations


0

Cela masque complètement le curseur.

tput civis

Pour restaurer:

tput cnorm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.