如何在 urxvt 启动时执行命令

如何在 urxvt 启动时执行命令

Urxvt 不支持使用 I 栏作为光标。我发现解决这个问题的方法之一是发送命令echo -n -e "\033[6 q"

只要我每次打开 urxvt 时发送命令,它就会起作用,但我宁愿不这样做。

我尝试让 urxvt 在启动时执行此操作,成功程度各不相同。

我尝试将.bashrc和 一起使用exec echo -n -e "\033[6 q"。这没有任何效果。

我使用 i3,所以接下来我尝试设置 urxvt 的键符以使用命令启动以及使用参数-hold,但所发生的只是我无法使用终端,因为它被保留了。

我唯一能做并且取得一定成功的事情就是设置一个键符.Xresources

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

这确实有效,但意味着每次启动终端时我都必须按 Ctrl-Escape。

我想知道的是,是否有任何方法可以在我启动 urxvt 时以某种方式运行此命令,同时仍允许我实际使用终端?

答案1

如果你想把它放入你的.bashrc文件中,它会有所改进:

  • 你应该确保字符串指向终端
  • 此外,shell 应该是交互式的(以防某些脚本源.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

进一步阅读:

答案2

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

这两个相关的转义代码需要您将其放入 .bashrc 中才能进行更改。首先尝试您尝试过的其他所有内容。当然,在稳定或闪烁之间进行选择,然后注释掉另一个,以防您以后需要它。

编辑:为了提供更多信息,我不确定我是否可以链接任何东西,或者你从哪里得到这些代码,但我在我的 .bashrc 中的 urxvt 中测试了这些,这是我在 xterm 中已经使用过的,它们可以工作,我可以使用所有的光标形状,如果你需要其余的,请告诉我。

答案3

如果有人(像我一样)正在寻找问题的答案,而不是提问者的具体问题,那么答案是:
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
使用计算器(gentoo 上的一款精密计算器)启动 urxvt,并在我关闭计算器时关闭它。我将其与热键一起使用。
其他示例:
urxvt -fg white -bg black -tr -sh 40 -fade 40 -sl 500 -cr yellow -hold -e echo -e Hello you greatest hacker\n
在打开终端窗口并保持打开状态时会问候自恋的用户。我不使用后一个例子。

相关内容