Как остановить курсор от мигания

Как заставить курсор перестать blinking когда в TTY ? (или где-либо еще).

BONUS Точки для одной универсальной настройки, которая останавливает курсор, мигая почти везде.

  • Повторный заказ последовательных портов на многопортовой карте
  • Использовать / захватить единственную клавиатуру без локального входа в систему
  • Есть ли способ узнать, передается ли сценарий на eval?
  • Как изменить разрешение после загрузки установочного носителя Arch Linux?
  • Прослушивание данных между процессом и последовательным портом
  • Что происходит при нажатии Ctrl + Alt + F <Num>?
  • Лучший способ установить скорость последовательного порта при загрузке?
  • Преобразовать вывод терминала tty в обычный текст
  • 8 Solutions collect form web for “Как остановить курсор от мигания”

    Это дает вам желтый желтый блок (немигающий) в качестве курсора:

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

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

    Существует стандартная последовательность управления, чтобы выключить курсор, мигающий на терминалах.

     printf '\033[?12l' 

    Однако многие терминалы не реализуют эту настройку, поэтому читайте дальше.

    Существует более широко используемая стандартная настройка терминала для переключения видимости курсора между высокой видимостью, нормальной видимостью и невидимостью. Некоторые терминалы не имеют значения между нормальным и высоким, и нет гарантии, что тот или другой будет или не будет мигать. В terminfo cvvis строку cvvis , cnorm или civis (например, tput cvvis ). Соответствующими записями termcap являются vs , ve и vi .

    Эти настройки не смогут пережить терминальный сброс , поэтому вы можете обнаружить, что он не переживает запуск многих полноэкранных приложений. Вы можете преодолеть эту проблему, добавив последовательность изменения конфигурации курсора в строку сброса вашего терминала.

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

    Некоторые терминалы и другие приложения предоставляют вам больше возможностей:

    • Курсор xterm будет мигать, если для ресурса cursorBlink установлено значение true или опция -bc передается в командной строке. Скорость мигания настраивается через cursorOnTime и cursorOffTime .
    • Некоторые другие эмуляторы терминала GUI могут мигать курсором; проверьте их диалоговое окно конфигурации.
    • Консоль Linux PC (VGA) имеет несколько настроек курсора; их точное значение и применимость зависят от базовой реализации VGA (фреймбуфер Linux или видеокарты). Если мигает курсор по умолчанию, попробуйте отключить аппаратный курсор и программный курсор с чем-то вроде printf '\033[17;127?c' (первый параметр 17 дает вам программный курсор без аппаратного курсора, а второй параметр установленный на 127, делает его по существу обратным видео). См. Выше относительно сброса терминала.
    • В Emacs Mx blink-cursor-mode переключает курсор на мигание. Поместите (blink-cursor-mode 0) в ~/.emacs чтобы отключить его. Это глобальная настройка и не применяется в текстовом терминале.

    См. Также «Не мигающая страница» Юрия Линкова (Jurta) о том, как отключить мигание в Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox и т. Д.

    Я нашел это проще, если у вас есть права root:

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

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

    В linux tty вы можете использовать escape-последовательность "\e[?48;0;64" или что угодно, но это не работает в tmux / vim. Tmux / Vim выдает команду «cnorm» при запуске, которая по умолчанию содержит "\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 под ~/.terminfo который следует автоматически поднять, если вы перезапустите tmux server / vim.

    Положил

    \ 033 [17;? 0; 127c

    к вашей переменной PS1, и вы перестанете постоянно мигать.

    НАПРИМЕР:

    экспорт PS1 = '\ 033 [? 17; 0; 127c \ u: \ w \ $'

    я кладу

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

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

    В качестве временного исправления я выполнил следующую команду

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

    Некоторые эксперименты показали, что «255c» в конце работает лучше, чем «127c», перечисленных выше, он создает белый, а не серый курсор.

     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 

    Для консоли 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 альтернативой является ESC[?17;0;255c в /etc/issue вместо того, чтобы помещать его в строки getty . Выполнение этого с помощью vi выглядит следующим образом:

    1. Открыть /etc/issue с помощью vi .
    2. В любом месте файла /etc/issue введите режим вставки.
    3. Пока вы находитесь в режиме вставки, нажмите ^V (то есть Ctrl v ), затем нажмите 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».

    Однако с этой опцией курсор не становится ярко-белым. Я думаю, это возможно только с помощью курсора программного обеспечения.

    После выполнения любой из этих альтернатив вы получите белый, не мигающий, блок-курсор.

    Дальнейшая информация

    Linux и Unix - лучшая ОС в мире.