터미널이 열릴 때 기본값으로 tmux를 시작하는 방법 Dolphin에서 터미널을 제외합니다.

터미널이 열릴 때 기본값으로 tmux를 시작하는 방법 Dolphin에서 터미널을 제외합니다.

터미널(예: 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

하지만 Yakuake가 단축키 ++ ctrl로 열었을 때 아래와 같은 결과를 얻었습니다 . 마지막으로 활성화된 창(예: )의 잘못된 활성 창 이름을 가져온 것 같습니다 . Yakuake여야 합니다.altYxdotoolsublimetext

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

KDE 플라즈마나 명령줄로 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의 터미널에 있는 쉘이 /proc/$PPID/exe심볼릭 링크로 간주될 것이라고 생각합니다 /usr/bin/dolphin. 대신 결과에 대한 논리를 xdotool사용 하고 구축하십시오.realpath /proc/$PPID/exe

$PPID셸이 초기화될 때 설정되는 셸 부모의 프로세스 ID입니다.

관련 정보