Cómo iniciar tmux como predeterminado cuando los terminales abiertos excluyen el terminal en Dolphin

Cómo iniciar tmux como predeterminado cuando los terminales abiertos excluyen el terminal en Dolphin

Quiero configurar tmux como predeterminado cuando abro terminales (por ejemplo, Yakuake, Konsole), pero excluyo el terminal en el administrador de archivos Dolphin.

Puse el siguiente fragmento en el~/.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

Pero parece que el comando xdotool getactivewindowsiempre muestra la ventana activa incorrecta. Así que escribí este fragmento ~/.zshrcpara probarlo.

xdotool getactivewindow && xdotool getactivewindow getwindowname
sleep 3
xdotool getactivewindow && xdotool getactivewindow getwindowname

Pero obtengo el resultado que se muestra a continuación cuando Yakuake abre mediante atajos ctrl++ . Parece que obtuvo el nombre incorrecto de la ventana activa que fue la última ventana que se activó (en el ejemplo es ), y debería ser Yakuake.altYxdotoolsublimetext

94371843
~/.zshrc - Sublime Text
65011722
~ : sleep — Yakuake

Cuando Yakuake o Konsole se activan mediante plasma de KDE o línea de comando tienen el mismo fenómeno.

¿Cómo puedo iniciar tmux como predeterminado cuando los terminales abiertos excluyen el terminal en Dolphin?


Actualizar: Gracias aLa respuesta de Kamil Maciorowski, todo funciona perfectamente después de agregar este fragmento en mi archivo ~/.zshrc.

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

Respuesta1

Creo que un shell en una terminal en Dolphin se verá /proc/$PPID/execomo un enlace simbólico /usr/bin/dolphino algo así. En lugar de xdotool, utilice realpath /proc/$PPID/exey desarrolle su lógica sobre el resultado.

$PPIDes el ID del proceso del padre del shell, establecido cuando se inicializa el shell.

información relacionada