현재 내 터미널( 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