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。
进一步阅读:
- 6.3.2 这个 Shell 是交互式的吗?(Bash 参考手册)
- 6.4 Bash 条件表达式(Bash 参考手册)
答案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
在打开终端窗口并保持打开状态时会问候自恋的用户。我不使用后一个例子。