BashによってDmenuプロセスが分岐しましたか?

BashによってDmenuプロセスが分岐しましたか?

私は出力を見ていて、私が使い始めたpstreeプロセスが 。dmenubash

その理由は何ですか?他のアプリケーションランチャーのdmenuように動作しgmrun、実行プロセスのみを機能させる方法はありますか?


編集する:マンページには、dmenuシェル実行の動作が のものとして示されていますdmenu_run。プログラムを起動した後もシェルを維持しない方法を探しています。

答え1

あなたが見ているものが何であるかを推測しますdmenu_run。アプリケーションのリストはシェルを使用して入力され、何を実行するかを決定するために戻されます。 dmenuは何も開始せず、単に選択項目を聞いている項目に戻し、それから機能します。シェルは重い作業を行うので、シェルが必要です。

答え2

dmenuプロセスを開始せずに選択した項目を標準出力に印刷します。選択したプログラムの実際の実行は、他のもの(おそらくウィンドウマネージャ)によって異なります。

dmenu他の人の追加サポートが必要な理由について、より多くの情報を提供する必要があります。

答え3

しばらくして、私はArchLinuxフォーラムにこの質問を投稿しました。

次のようにする必要があります/usr/bin/dmenu_run

#!/bin/sh
cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
if [ -d "$cachedir" ]; then
    cache=$cachedir/dmenu_run
else
    cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
fi
exec $(
    IFS=:
    if stest -dqr -n "$cache" $PATH; then
        stest -flx $PATH | sort -u | tee "$cache" | dmenu "$@"
    else
        dmenu "$@" < "$cache"
    fi
)

関連情報