You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置仅在Yakuake、Konsole等终端启动时默认打开tmux,排除Dolphin文件管理器中的终端

如何设置仅在Yakuake、Konsole等终端启动时默认打开tmux,排除Dolphin文件管理器中的终端

我来帮你解决这个问题!之前你用xdotool判断窗口名称的思路遇到了时机问题——当终端刚启动时,窗口还没完全成为活动窗口,xdotool会拿到上一个激活的窗口,这就是你测试时看到Sublime Text名称的原因,这个思路本身就有局限性。

其实我们可以换个更可靠的方向:通过判断终端的父进程来区分是不是Dolphin内置的终端。Dolphin里的终端,它的父进程就是Dolphin本身;而Yakuake、Konsole这类独立启动的终端,父进程是它们自己或者KDE Plasma相关进程,完全和Dolphin不沾边,用这个逻辑判断会准确很多。

你只需要把这段代码放到你的~/.zshrc里,就能实现需求:

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

简单解释下代码里的判断条件:

  • [[ -x "$(command -v tmux)" ]]:先确认系统里已经安装了可执行的tmux
  • [[ -n "${DISPLAY}" ]]:确保是在图形界面环境下(避免在无GUI的远程会话或tty里误触发)
  • [[ -z "${TMUX}" ]]:保证当前没有已经在tmux会话里(防止无限嵌套启动tmux)
  • [[ ! "$(readlink -f /proc/${PPID}/exe)" =~ "dolphin" ]]:核心判断——读取当前shell父进程的可执行文件路径,如果不是Dolphin,就启动tmux

这个方法完全避开了窗口激活时机的坑,判断逻辑更稳定准确,完美实现你要的效果:独立启动的Yakuake、Konsole默认打开tmux,Dolphin内置的终端则跳过tmux启动。

备注:内容来源于stack exchange,提问作者Pelican Cyber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:18:14