Ubuntu виртуальный терминал сброс стиля курсора

Я запускаю Ubuntu 14.04 и использую один из виртуальных терминалов (TTY[1-6], доступный через Ctrl-Alt-F[1-6]); я хочу навсегда изменить внешний вид моего курсора с очевидного значения по умолчанию, мигающего подчеркивания, на мигающий ящик. Я могу изменить его временно, но он постоянно перезагружается при запуске определенных приложений.

первоначально стиль курсора в сеансах TTY был мигающим подчеркиванием. Я нашел что я смог изменить его к моргая коробке с команда:

printf 'e[?8c'

это изменяет курсор в терминале и отражается в таких программах, как emacs или elinks. Таким образом, я поместил выше команду в мой .bashrc.

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

например, рассмотрим, как следующие 3 приложения (tmux, emacs, elinks) влияют на стиль курсора:

  • tmux: стиль курсора немедленно устанавливается в мигающее подчеркивание, этот стиль поддерживается во всех приложениях, запущенных в tmux, и изменение сохраняется после выхода из tmux. Приведенная выше команда printf не действует в tmux.
  • emacs: стиль курсора, кто был активен, когда я побежал, а то стиль меняется на мигает подчеркивание при выходе из emacs.
  • elinks: стиль курсора, кто был активен, когда я запустил его, и стиль курсора не меняется при выходе элинкс.

Я должен отметить, что у меня есть настройки emacs для установки стиля курсора (в emacs) в поле, и что, хотя я искал настройку для установки стиля курсора в tmux, я не мог найти ничего, кроме записи на справочной странице tmux, которая говорится:

tmux understands some extensions to terminfo(5):

 [...]

 Cs, Csr
         Change the cursor style.  If set, a sequence such as this may be used to change the cursor to an underline:

               $ printf '3[4 q'

         If Csr is set, it will be used to reset the cursor style instead of Cs.

к сожалению, я не понимаю, как" установить Cs", и, как упоминалось выше, я попытался выполнить команду printf, чтобы установить стиль курсора внутри tmux безрезультатно.

другое интересно отметить, что вопрос с изменением стиля курсора не происходит при запуске эмулятор терминала, как терминал XFCE4. Кажется, это происходит только в TTYs.

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

1
задан llzrk
29.01.2023 11:10 Количество просмотров материала 3547
Распечатать страницу

1 ответ

терминальные характеристики не имеющиеся с всеми стержнями, и могут отличать с версиями tmux. Я вижу описание, приведенное в tmux 1.6 на Debian 7. Ubuntu 14.04 немного стара и имеет tmux 1.8 (то же описание).

пример, приведенный на странице руководства, выглядит как DECSCUSR, что подтверждается xterm начиная с патч #252 в 2009 году. Обратитесь к В Xterm Управляющие Последовательности:

CSI Ps SP q
          Set cursor style (DECSCUSR, VT520).
            Ps = 0  -> blinking block.
            Ps = 1  -> blinking block (default).
            Ps = 2  -> steady block.
            Ps = 3  -> blinking underline.
            Ps = 4  -> steady underline.
            Ps = 5  -> blinking bar (xterm).
            Ps = 6  -> steady bar (xterm).

использовать их, вы сделайте измененную запись terminfo с помощью tic ncurses, например,

infocmp -x >foo
vi foo
tic -x foo

добавление этой строки (с ведущей вкладкой, как и другие возможности):

Cs=\E[%p\sq, Csr=\E[0\sq,

однако, проверяя исходный код для tmux 2.1, он больше не читает эти функции terminfo, и был изменен, чтобы использовать Cs и Cr для установки цвета (сделано в старых версиях с помощью Cc и Cr). В новой версии встроена логика распознавания DECSCUSR без terminfo расширение.

vte-основанные стержни (как стержень XFCE) могут (в зависимости от версии) снабдить DECSCUSR, но консоль Linux вряд ли это сделает, так как она реализует только подмножество VT220, а DECSCUSR С VT520 терминал (надмножество VT220).

вы увидите различия с другими приложениями, такими как Emacs, потому что DECSCUSR перекрывает другие функции в стиле курсора, такие как функция мигающего курсора, установить или сбросить с cvvis и cnorm возможности terminfo для xterm:

CSI ? Pm h
          DEC Private Mode Set (DECSET).
            Ps = 1 2  -> Start Blinking Cursor (att610).

тем не менее, вы, кажется, хотите изменить внешний вид курсора в консоли Linux (также называемой виртуальной консолью). DECSCUSR нет эффекта.

сделать курсор мигающий блок all время, вам придется изменить возможности появления курсора в описании терминала(ов), которые вы используете. Это civis (сделать курсор невидимым), cnorm (курсор "нормальный" внешний вид) и cvvis (курсор очень видно):

  • сделать оба этих \e[?8c в записи "linux" сообщит программам, таким как emacs, использующим эту запись, использовать курсор мигающего окна.
  • tmux также читает запись терминала, глядя на cnorm и civis.
  • elinks с другой стороны жестко запрограммирован, игнорируя базу данных терминала. В быстром чтении его источника я не вижу никаких escape-последовательностей, которые сбрасывают терминал или изменить вид курсора.

если вы используете tmux, вы можете также изменить xterm (так что приложения, работающие внутри tmux использовать этот стиль курсора). Но тест без этого сначала: если вы должны, вы можете вероятно совместить \e[?8c С имеющейся cnorm строку с xterm игнорировать \e[?8c.

1
отвечен Thomas Dickey 2023-01-30 18:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх