将 rxvt 中单击的链接传递给脚本

将 rxvt 中单击的链接传递给脚本

我启动浏览器不太可能选项卡式的像这样:

"`tabbed -d > /tmp/tabbed.xid`; vimprobable2 -e `cat /tmp/tabbed.xid`"[1]

然后,我可以将 vimprobable 的所有新实例发送到其他应用程序(例如 mutt)中的选项卡式(并且不打开新的主窗口),方法是:

vimprobable2 -e $(cat /tmp/tabbed.xid) %s

我想在 Urxvt 中实现同样的目标。

目前我的.Xdefaults包含匹配器参数:

URxvt.perl-ext-common: default,matcher
URxvt.urlLauncher: vimprobable2
URxvt.matcher.button: 1

我已更改启动器行以指向包装器脚本:

URxvt.urlLauncher: vimprobtab.sh

这只是:

vimprobable2 -e $(cat /tmp/tabbed.xid) %s &

但这只是在选项卡中打开一个浏览器实例,其中包含默认搜索引擎结果&(或者%s如果我删除&符号)。

我尝试过其他明显的变量,例如"$1"and "$@"- 它们也不起作用。

如何将 URL 传递给包装器脚本?

[1] 这也感觉像对猫的无用利用,因此欢迎提出其他建议

答案1

的帮助文本匹配器PERL 扩展为乌尔克斯VT 状态:

当使用资源中指定的鼠标按钮(默认为 2,或中间)单击时matcher.button ,资源中指定的程序 matcher.launcher(默认,urlLauncher资源, sensible-browser)将启动,并将匹配的文本作为第一个参数。

因此,您需要设置URxvt.matcher.launcher一个采用单个参数的脚本(在 sh 类型 shell 中,拼写为$1)并打开它。例如:

#! /bin/sh

exec vimprobable2 -e $(cat /tmp/tabbed.xid) "$1"

笔记:建议引用$1防止 shell 解释可能出现在 URL 中的元字符的参数(例如 或&;

相关内容