Як зупинити миготливий курсор


22

Як зробити так, щоб курсор зупинився, blinkingколи знаходиться в TTY ? (або деінде).

BONUS Окуляри за одне універсальне налаштування, яке зупиняє миготливий курсор майже скрізь.

Відповіді:


17

Це дає вам твердий жовтий блок (не блимає) як курсор:

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

Для отримання додаткової інформації ознайомтеся з цими посиланнями: Linuxgazette та EmacsWiki , а також файл /usr/src/linux/Documentation/VGA-softcursor.txt(якщо він є у вашій системі)


це працює для мене, поки я не використовую vim, тоді, коли я
виходжу

І це дає вам непомітний твердий білий блокecho -e '\033[?16;0;224c'
Утку

thx, я міг змінити останнє число (224) на 244, щоб отримати суцільний білий блок :)

Я не впливаю на це на моїй системі, що працює bash 5.0.11 на Arch Linux
S.Goswami

26

Існує стандартна послідовність керування, щоб вимкнути миготливий курсор на клемах.

printf '\033[?12l'

Однак багато терміналів не реалізують цей параметр, тому читайте далі.

Існує більш широко реалізований стандартний термінальний параметр для комутації видимості курсору між високою видимістю, нормальною видимістю і невидимістю. Деякі термінали не мають різниці між нормальними та високими, і немає гарантії того, що той чи інший буде мигати чи не буде. У TERMINFO , випускають cvvis, cnormабо civisрядок (наприклад , tput cvvis). Відповідне Termcap запис є vs, veі vi.

Цей параметр не переживе скидання терміналу , тому ви можете виявити, що він не пережив запуск багатьох повноекранних програм. Ви можете подолати цю складність, додавши послідовність зміни конфігурації курсору в рядок скидання терміналу.

  • У системі на основі терміна, що використовує ncurses, збережіть настройки терміналу терміналу у файл із infocmp >>~/etc/terminfo.txt. Відредагуйте опис, щоб змінити rs1(основне скидання) послідовності, наприклад замінити rs1=\Ecна rs1=\Ec\E[?12l. У деяких програмах та налаштуваннях вам може знадобитися змінити rs2(повний скидання). Потім складіть опис terminfo з tic ~/etc/terminfo.txt(це пише під каталогом $TERMINFO, або ~/.terminfoякщо він не встановлений).
  • У системі, що базується на термінах, візьміть параметри термінальної капи з бази даних термінальної капи (як правило /etc/termcap). Змініть послідовності is(основне скидання) та rs(повне скидання), щоб додати свої настройки, наприклад :is=\Ec\E[?12l:. Встановіть TERMCAPзмінну середовища на відредаговане значення (починаючи з кінця і закінчуючи :).

Деякі термінали та інші додатки надають більше можливостей:

  • The Xterm курсор блимаєякщоcursorBlinkресурс встановленийtrueабо-bcпараметр передається в командному рядку. Швидкість моргання налаштовується черезресурсиcursorOnTimeтаcursorOffTimeресурси.
  • Деякі інші емулятори терміналу GUI можуть моргати курсором; перевірте їх діалогове вікно конфігурації.
  • The (VGA) консолі Linux PC має ряд параметрів курсора; їх точне значення та застосовність залежить від основної реалізації VGA (Linux framebuffer або відеокарта). Якщо ваш курсор за замовчуванням блимає, спробуйте вимкнути апаратний курсор і програмний курсор чимось на зразокprintf '\033[17;127?c'(перший параметр 17 дає вам курсор програмного забезпечення без апаратного курсору, а другий параметр, встановлений у 127, робить його по суті зворотним відео). Дивіться вище щодо скидання терміналів.
  • У Emacs ,M-x blink-cursor-mode перемикає курсор блимає. Покладіть (blink-cursor-mode 0)у свій, ~/.emacsщоб вимкнути його. Це глобальне налаштування і не застосовується в текстовому терміналі.

Дивіться також сторінку "Ніякої миготіння" Юрі Лінкова (Юрта) про те, як вимкнути миготіння в Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox тощо.


14

Я вважаю, що це легше, якщо у вас є кореневі дозволи:

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

Я помістив його в сценарій запуску машини, як /etc/rc.localдля arch linux.


5

У linux tty ви можете використовувати послідовність евакуації "\e[?48;0;64"або що завгодно, але це не працює в tmux / vim. Tmux / Vim видає команду "cnorm" при запуску, яка за замовчуванням містить a "\e[?0c". Ви можете бачити, що це скасовує ефекти наведених вище параметрів. Вам потрібно змінити cnorm у вищевказаній послідовності для того, щоб програми TUI скинули курсор за вашими перевагами. Більше інформації про це від Gilles, але якщо ви шукаєте швидкого виправлення, спробуйте це:

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

Остання команда генерує нове терміно, під ~/.terminfoяким слід автоматично підбиратись при перезапуску tmux-сервера / vim.


3

Покладіть

\ 033 [? 17; 0; 127c

до вашої змінної PS1, і ви перестанете блимати постійно.

EG:

експортувати PS1 = '\ 033 [? 17; 0; 127c \ u: \ w \ $'


1
Це (принаймні для мене) накрутить розриви кінцевих ліній (при переповненні лінії). Використовуйте квадратні дужки, втекли: Наприклад BLUEBOXNOBLINK="\033[?17;0;60c", тодіPS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
Емануель Берг

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

Це прекрасне рішення, і, мабуть, отримано багато відгуків, якщо автор не забув пояснити це ... :-)
peterh каже відновити Моніку

1
-cursor offне зовсім те, що просять взагалі, це змушує курсор зникнути ... setterm -blink offздається більш перспективним, але це впливає на текст, а не на власний курсор.
mr.spuratic

setterm -cursor off; setterm -cursor onпрацює тут, але це неприйнятне рішення
Тор

0

я кладу

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

в /etc/rc.local та створив для нього системний сервіс, використовуючи онлайн-інструкції. Однак я помітив, що іноді після завантаження курсор все ще блимає. Було б добре знати правильний спосіб назавжди вимкнути миготливий курсор через sysfs в сучасній системній системі, чи має хто-небудь поради? У деяких дистрибутивах є /etc/sysfs.conf, але я запускаю Arch і не знаходжу цей файл у sysfsutils або в інших місцях.

Як тимчасове виправлення я запустив таку команду

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

Деякі експерименти показали, що "255c" в кінці працює краще, ніж "127c", зазначений вище, він створює білий, а не сірий курсор.


0

Для консолі Linux:

Альтернатива 1

Додати -I "\033[?17;0;255c"варіант для gettyрядків у вашому/etc/inittab файлі. Робити так:

  1. Відкрийте /etc/inittabфайл за допомогою текстового редактора. Там повинні бути рядки , які містять gettyабо agettyабо аналогічний. Приклад:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. Додайте -I "\033[?17;0;255c"до кожного gettyрядка. Наприклад, після додавання -I "\033[?17;0;255c", gettyрядок вище буде виглядати наступним чином:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Перезавантажте систему або, в іншому випадку, вбийте всіх getty процеси.

Альтернатива 2

Кращою альтернативою є покласти ESC[?17;0;255cв /etc/issue, замість того щоб покласти його gettyліній. Робити це за допомогою viнаступного:

  1. Відкрити /etc/issueза допомогоюvi .
  2. На будь-якому місці /etc/issue файлу введіть режим вставки.
  3. Перебуваючи у режимі вставки, натисніть ^V(тобто Ctrlv), а потім натисніть Esc. Тепер слід вставити символ втечі.
  4. Тепер вставте решта символів, які є [?17;0;255c.

Альтернатива 3

Іншою альтернативою є збереження апаратного курсору (замість використання курсору програмного забезпечення) та припинення миготіння апаратного курсору та перетворення його на блок-курсор. Робити так:

  1. Додайте до /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Додати ESC[?8cв /etc/issue. Щоб дізнатися, як це зробити, зверніться до "Альтернативи 2".

Однак при такому варіанті курсор не стає яскраво-білим. Я думаю, що це можливо лише за допомогою програмного курсору.

Дотримуючись будь-якої з цих альтернатив, ви отримаєте білий, не блимаючий блоковий курсор.

Додаткова інформація


0

Це повністю приховує курсор.

tput civis

Щоб перезаписатись:

tput cnorm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.