pstree
の出力を見ていて、dmenu
を使い始めたプロセスがbash
から分岐しているように見えることに気づきました。
この背後にある理由は何ですか?そして、dmenu
をgmrun
や他のアプリケーションランチャーのように動作させ、プロセスのみを起動する方法はありますか?
EDIT:dmenu
のマンページには、シェルの実行動作がdmenu_run
に対して正しいと記載されています。プログラムの起動後にシェルを持続させない方法を見つけることは、私がまだ探していることです。
しばらくして、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
)
dmenu_run
を見ていると思います。アプリケーションのリストはシェルを使用して入力され、何を実行するかを決定する際にシェルに戻されます。dmenuは何も起動せず、選択したものをリッスンしているものに戻すだけで、それに基づいて動作します。シェルは重い物を持ち上げているので、それが必要です。
dmenu
はプロセスを開始せず、選択したアイテムをstdoutに出力するだけです。選択したプログラムを実際に実行するかどうかは、他の何か(おそらくウィンドウマネージャー)次第です。
さらに支援するために、dmenu
を呼び出しているものに関する詳細情報を提供する必要があります。