如何在 suckless dwm 中用 fzf 替换 dmenu 作为应用程序启动器

如何在 suckless dwm 中用 fzf 替换 dmenu 作为应用程序启动器

我正在使用带有 dmenu 的 dwm,但正在尝试用 fzf 替换 dmenu 作为应用程序启动器。我看过例子在 fzf wiki 中没有找到有关特定问题的信息。

问题是我无法使用示例中的设置启动 PhpStorm。因此,由于缺乏 Linux 知识,我只能提出部分且不完整的解决方案。

这是我的菜单脚本:

#!/usr/bin/env bash

st -c phpstorm -n phpstorm -e sh -c "storm" & disown
sleep 5; kill $!;

这是我的辅助脚本,名为 storm:

#!/bin/bash

result=$(find ~/www -type d | fzf )

[ -z $result ] && exit
nohup phpstorm $result >/dev/null 2>&1

在 phpstorm 启动后,我必须终止 suckless 终端会话,否则 fzf 选择后的终端窗口将保持打开状态,我必须手动将其关闭。另一方面,PhpStorm 的操作方式与 vscode 或 sublime 不同,因为它以 jvm 启动。即使我这样做,phpstorm dir &它也会不断将 java 输出扔进日志中。我无法让它在后台正确启动,有人知道如何以更好的方式做到这一点吗?

答案1

我已经使用以下两个脚本取得了成果

fzfmenu脚本:

#!/usr/bin/env bash

st -c fzfmenu -n fzfmenu -g "100x12" -e sh -c "storm" & disown

storm脚本:

#!/bin/bash

result=$(find ~/www -type d | fzf)

[ -z $result ] && exit

(nohup phpstorm $result >/dev/null 2>&1 &)

pkill -f fzfmenu

相关内容