web-dev-qa-db-ja.com

BashによってフォークされたDmenuプロセス?

pstreeの出力を見ていて、dmenuを使い始めたプロセスがbashから分岐しているように見えることに気づきました。

この背後にある理由は何ですか?そして、dmenugmrunや他のアプリケーションランチャーのように動作させ、プロセスのみを起動する方法はありますか?


EDIT:dmenuのマンページには、シェルの実行動作がdmenu_runに対して正しいと記載されています。プログラムの起動後にシェルを持続させない方法を見つけることは、私がまだ探していることです。

3
bitflips

しばらくして、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
)
1
bitflips

dmenu_runを見ていると思います。アプリケーションのリストはシェルを使用して入力され、何を実行するかを決定する際にシェルに戻されます。dmenuは何も起動せず、選択したものをリッスンしているものに戻すだけで、それに基づいて動作します。シェルは重い物を持ち上げているので、それが必要です。

2
Chris Down

dmenuはプロセスを開始せず、選択したアイテムをstdoutに出力するだけです。選択したプログラムを実際に実行するかどうかは、他の何か(おそらくウィンドウマネージャー)次第です。

さらに支援するために、dmenuを呼び出しているものに関する詳細情報を提供する必要があります。

2
David Baggerman