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 getactivewindow
siempre muestra la ventana activa incorrecta. Así que escribí este fragmento ~/.zshrc
para 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.altYxdotool
sublimetext
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/exe
como un enlace simbólico /usr/bin/dolphin
o algo así. En lugar de xdotool
, utilice realpath /proc/$PPID/exe
y desarrolle su lógica sobre el resultado.
$PPID
es el ID del proceso del padre del shell, establecido cuando se inicializa el shell.