我想在打開終端機(例如 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時,我得到以下結果。似乎獲得了錯誤的活動視窗名稱,即最後一個啟動的視窗(在範例中是),它應該是 Yakuake。altYxdotool
sublimetext
94371843
~/.zshrc - Sublime Text
65011722
~ : sleep — Yakuake
當透過KDE等離子或命令列啟動Yakuake或Konsole時也有同樣的現象。
當終端機開啟時,如何將 tmux 作為預設啟動排除 Dolphin 中的終端?
更新: 謝謝卡米爾·馬喬羅夫斯基的回答,在我的~/.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 終端機中的 shell 會被視為/proc/$PPID/exe
符號連結/usr/bin/dolphin
。而不是xdotool
,使用結果realpath /proc/$PPID/exe
並在結果上建立您的邏輯。
$PPID
是 shell 父進程的進程 ID,在 shell 初始化時設定。