주어진 경로에 열린 창이 없는 경우에만 tmux에서 새 창을 열고, 그렇지 않으면 추가합니다.

주어진 경로에 열린 창이 없는 경우에만 tmux에서 새 창을 열고, 그렇지 않으면 추가합니다.

현재 내 터미널( alacritty)은 시작 시 실행되어 tmux new -A -s 0새 세션을 시작 0하거나 이미 존재하는 경우 세션에 연결됩니다. 한 가지 문제는 파일 관리자(Dolphin)를 사용하여 디렉토리를 열 때가 있다는 것입니다. 이 경우에는 원하는 디렉터리가 아닌 이전 세션에 다시 연결합니다.

내가 달성하고 싶은 것은 0해당 세션에 그러한 창이 없으면 원하는 경로를 작업 디렉터리로 사용하여 세션에서 새 창을 여는 것입니다. 아니면 기존 창으로 전환하고 싶습니다.

이것이 가능하지 않다면 매번 새 창을 만들어 드리겠습니다. 현재 활성 창에서 실행 중인 프로세스가 있는지 감지하고 그렇지 않은 경우 cd스위치 디렉토리를 사용합니까?

누구든지 이를 달성하는 방법에 대한 아이디어가 있다면 감사하겠습니다.

답변1

@KamilMaciorowski가 지적했듯이 그들은 매우 유사한 문제를 해결했습니다.여기. 내 필요에 맞게 스크립트를 일부 수정했습니다. 즉, "사용 중" 창을 무시하고 싶습니다. 즉, #{pane_current_command}알려진 쉘인지 확인하는 일부 프로그램을 실행하고 싶습니다. 또한 인수를 전달하지 않고 현재 디렉토리를 열려고 시도합니다. 왜냐하면 그것이 내가 얻는 것이기 때문입니다 alacritty.

그렇지 않으면 스크립트를 다시 작성한 것입니다. 내가 사용한 것은 다음과 같습니다.

#!/usr/bin/env bash

target_path="$(pwd -P)"

tmux list-panes -s -F '#{window_id} #{pane_id} #{pane_current_path} #{pane_current_command}' \
| while IFS=' ' read -r window pane path cmd; do
    [[ "$path" = "$target_path" && " fish bash zsh " =~ " $cmd " ]] \
        && tmux select-pane -t "$pane" && tmux select-window -t "$window" && exit 0
done || tmux new-window -c "$target_path"

tmux attach -d

관련 정보