Как выполнить команду при запуске urxvt

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, и в то же время позволяю мне фактически использовать терминал?

Yitzy
источник
Почему вы использовали exec echo . . .в своем .bashrc? Не видя всего этого трудно сказать наверняка, но это не правильно
Эрик Ренуф
да уж. Я пытался все и вся. Я был почти уверен, что это ничего не даст, но я решил, что это стоит того.
Йитзи

Ответы:

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 .

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

Томас Дики
источник
Также вам следует проверить тип вашего терминала. Если вы используете только rxvt и его варианты, вам [ "${TERM:0:4}" = rxvt ] && ...нужно сделать то же самое, в противном случае вы, вероятно, захотите использовать case "$TERM" in; rxvt*) ...;; xterm*) ...;; esacаналогичные.
Курт Дж. Сэмпсон
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, и они работают, я могу использовать все формы курсора, если вам нужно все остальное дай мне знать.

дрейфовать
источник
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
приветствовал бы нарциссического пользователя, пока он открывает окно терминала и остается открытым. Я не использую последний пример.

Das_Sams
источник