我有一个想法。我可以使用终端作为程序运行程序吗?
我想用 FZF 列出所有程序,运行选择,然后在运行后关闭终端,而不是 dmenu / rofi。
我尝试过这个,但它不起作用。
termite -e run.sh
或者urxvt -e zsh -c run.sh
run.sh
由组成:
#!/bin/zsh
preexe() { kill -9 $PPID }
exec $(whence -pm '*' | fzf) &!
答案1
exec ... &!
在后台启动然后exec ...
退出。
您还需要决定命令的 stdin/stdout/stderr 应该放在哪里。您还想从终端分离该命令。
xterm -e zsh -c '
set -o pipefail -o errexit
print -rN -- $commands | fzf --read0 --print0 | IFS= read -rd "" cmd
setsid -- "$cmd" <> /dev/null >&0 2>&0'
在这里,我们正在一个新会话中运行$cmd
,其 I/O 重定向自/至/dev/null
。理想情况下,您希望告诉窗口/会话管理器启动该命令。