我想将打开终端(例如 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但是当我使用快捷键+ alt+打开 Yakuake 时,得到的结果如下Y。似乎xdotool
获取了错误的活动窗口名称,即最后激活的窗口(在示例中为sublimetext
),它应该是 Yakuake。
94371843
~/.zshrc - Sublime Text
65011722
~ : sleep — Yakuake
当通过 KDE plasma 或命令行启动 Yakuake 或 Konsole 时也会出现同样的现象。
当打开的终端排除 Dolphin 中的终端时,如何才能默认启动 tmux?
更新: 谢谢Kamil Maciorowski 的回答,在我的 中添加此代码片段后,一切都运行正常~/.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 初始化时设置。