2

Urxvt не поддерживает использование панели I в качестве курсора. Один из способов обойти это - послать команду echo -n -e "\033[6 q" .

Это работает до тех пор, пока я отправляю команду каждый раз, когда открываю urxvt, что я бы предпочел не делать.

Я пытался заставить urxvt выполнить это при запуске с разной степенью успеха.

Я пытался использовать .bashrc , с exec echo -n -e "\033[6 q" . Это не имело никакого эффекта.

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

Единственное, что мне удалось сделать, это имело некоторый успех - это установить keyym в .Xresources:

URxvt.keysym.C-Escape: command: \033[6 q

Это сработало, но означает, что мне нужно нажимать Ctrl-Escape каждый раз, когда я запускаю терминал.

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

3 ответа3

1

Если вы хотите поместить это в ваш файл .bashrc , он будет немного улучшен:

  • Вы должны убедиться, что строка направлена на терминал
  • также оболочка должна быть интерактивной (в случае, если какой-то скрипт-источник .bashrc)
  • echo с опцией -e имеет проблемы с переносимостью. Используйте printf .

Собираем их вместе и пишем в стандартную ошибку (потому что она не буферизируется):

[ -n "PS1" ] && [ -t 2 ] && printf '\033[6 q' >&2

urxvt реализует управляющую последовательность DECSCUSR , задокументированную в управляющих последовательностях 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).

Обратите внимание, что коды 5 и 6 являются функциями xterm.

Эта последовательность управления не упоминается на странице руководства в Интернете urxvt(7), но отмечена в записи журнала изменений:

9.19 Sun Oct 27 17:16:07 CET 2013
...
        - add support for the set cursor style (DECSCUSR) control
          function.

также исходный код показывает это (см. set_cursor_style), а исходный код страницы руководства показывает эту функцию. Это было обновлено в 2014 году для кодов 5 и 6.

Дальнейшее чтение:

0

Если кто-то, как я, искал ответ на вопрос, а не конкретную проблему того парня, который спросил, ответ будет таким:
urxvt [your other options - e.g. fancy colors...] -hold -e <your command>
Если вы опустите -hold терминал закроется, когда команда будет выполнена.
пример:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -e calc
запускает urxvt с помощью калькулятора (хорошая точность в gentoo) и закрывает его, когда я закрываю калькулятор. Я использую это с горячей клавишей.
другой пример:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -hold -e echo -e Hello you greatest hacker\n
будет приветствовать нарциссического пользователя, пока он открывает окно терминала и остается открытым. Я не использую последний пример.

0
echo -en "\x1b[\x35 q" # changes to blinking vertical bar
echo -en "\x1b[\x36 q" # changes to steady vertical bar

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

РЕДАКТИРОВАТЬ: Чтобы быть более информативным, я не уверен, могу ли я связать что-нибудь, или где вы получили эти коды, но я протестировал их в urxvt в моем .bashrc, и это то, что я уже использовал в xterm, и они работают, я могу использовать все формы курсора, если вам нужно все остальное дай мне знать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .