如何使用 FZF 终端作为程序运行器

如何使用 FZF 终端作为程序运行器

我有一个想法。我可以使用终端作为程序运行程序吗?

我想用 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。理想情况下,您希望告诉窗口/会话管理器启动该命令。

相关内容