ターミナル (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+で開くと、以下のような結果になりますY。xdotool
アクティブになった最後のウィンドウ (例では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 です。