使用 urxvt 和 fzf 制作一个简单的应用程序启动器

使用 urxvt 和 fzf 制作一个简单的应用程序启动器

我一直在尝试将一个简单的程序启动器与终端和 fzf 拼凑在一起以绑定到热键,但我无法在程序启动后关闭终端窗口而不终止子进程。我是 shell 的初学者,所以我可能错过了关键的一步。

到目前为止我尝试过的:

urxvtc -name menu -e bash -c 'compgen -c | sort -u | fzf | sh

它被命名为 menu,因此它可以在特殊规则下生成,我必须执行 -e bash 因为我的 shell (zsh) 无法识别 compgen。

一位不和谐的人建议:

urxvt -name menu -e bash -c 'cmd=$(compgen -c | sort -u | fzf); setsid $cmd'

这确实将窗口与其启动的程序分离,但是当 fzf 计算并输出到标准输出时,我找不到使终端窗口自动关闭的方法。

答案1

我不确定这是否正是您正在寻找的,但将 fork 参数添加到setsid(-f)似乎对于非终端命令非常有用:

urxvt -name menu -e bash -c 'cmd=$(compgen -c | sort -u | fzf); setsid -f $cmd'

相关内容