터미널(예: 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여야 합니다.altYxdotool
sublimetext
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입니다.