Dolphin でターミナルを除外してターミナルを開いたときに tmux をデフォルトで起動する方法

Dolphin でターミナルを除外してターミナルを開いたときに tmux をデフォルトで起動する方法

ターミナル (Yakuake、Konsole など) を開くときに tmux をデフォルトとして設定し、Dolphin ファイル マネージャーではターミナルを除外したい。

私は次のスニペットを~/.zshrc

if [[ -x "$(command -v tmux)" ]] && [[ -n "${DISPLAY}" ]] && [[ -z "${TMUX}" ]]; then
    windowname=$(xdotool getactivewindow getwindowname)
    if [[ ${windowname} =~ ".*Yakuake$" ]] || [[ "${windowname}" =~ ".*Konsole$" ]]; then
        exec tmux
    fi
fi

しかし、コマンドはxdotool getactivewindow常に間違ったアクティブ ウィンドウを取得するようです。そこで、~/.zshrcテスト用にこのスニペットを記述しました。

xdotool getactivewindow && xdotool getactivewindow getwindowname
sleep 3
xdotool getactivewindow && xdotool getactivewindow getwindowname

ctrlしかし、Yakuake をショートカット+ alt+で開くと、以下のような結果になりますYxdotoolアクティブになった最後のウィンドウ (例ではsublimetext) という間違ったアクティブ ウィンドウ名を取得しているようで、Yakuake である必要があります。

94371843
~/.zshrc - Sublime Text
65011722
~ : sleep — Yakuake

KDE プラズマまたはコマンドラインで起動した Yakuake または Konsole でも同じ現象が発生します。

Dolphin でターミナルを除外してターミナルを開いたときに、tmux をデフォルトで起動するにはどうすればよいですか?


アップデート: 感謝カミル・マチオロウスキーの回答、このスニペットを追加した後はすべて完璧に動作します~/.zshrc

if [[ -x "$(command -v tmux)" ]] && [[ -n "${DISPLAY}" ]] && [[ -z "${TMUX}" ]]; then
    if [[ ! "$(readlink -f /proc/${PPID}/exe)" =~ "dolphin" ]]; then
        exec tmux
    fi
fi

答え1

Dolphin のターミナルのシェルはまたは/proc/$PPID/exeへのシンボリックリンクとして認識すると思います/usr/bin/dolphin。 の代わりにxdotoolを使用してrealpath /proc/$PPID/exe、結果に基づいてロジックを構築します。

$PPIDシェルの初期化時に設定される、シェルの親のプロセス ID です。

関連情報