我想在打开终端(例如 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
我认为 Dolphin 终端中的 shell 会被视为
/proc/$PPID/exe
一个符号链接/usr/bin/dolphin
。而不是xdotool
,使用realpath /proc/$PPID/exe
结果并在结果上构建您的逻辑。$PPID
是 shell 父进程的进程 ID,在 shell 初始化时设置。