노틸러스 스크립트를 사용하여 특정 위치에서 tmux 세션이 있는 (gnome-) 터미널을 열고(또는 시작) 해당 터미널에서 일부 명령(예: nvim $file)을 실행하고 싶습니다.
그러나 두 가지 문제가 발생했습니다. 1: 각 터미널이 tmux 세션에서 시작되도록 "tmux"에서 "쉘 대신 사용자 정의 명령을 실행"했습니다. 이는 특정 위치에서 터미널을 여는 기능을 무효화하는 것 같습니다. ~/.local/share/nautilus/scripts/
내용이 포함된 실행 가능한 test.sh 파일을 넣으려고 했습니다 .
#!/bin/bash
gnome-terminal --working-directory=$NAUTILUS_SCRIPT_CURRENT_URI
이는 빈 구성 파일에 적용됩니다. 그러나 시작 명령으로 "tmux"를 사용하면 ~에 빈 터미널이 나타납니다.
2: 나중에 명령을 사용하려고 하면 아무 일도 일어나지 않습니다.
nvim some_file_there
아무것도 하지 않습니다 echo "hi"
.exec echo 'hi'
누군가 나에게 이 행동을 설명해 줄 수 있나요?
또한 터미널에서 "사용자 정의 명령 실행" 설정을 비활성화했습니다. 그러나 여전히 작업 디렉터리만 변경할 수 있고(여기서 터미널 열기) 더 이상 명령을 실행할 수 없습니다.
내 최신 테스트 스크립트에는 다음만 포함됩니다.
#!/bin/bash
zenity --info --text="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
gnome-terminal -e "ls"
작업 디렉토리를 노틸러스 스크립트가 실행되는 디렉토리로 변경하는 방법이 있습니까? 또한 ls 명령의 결과도 표시되지만 터미널에는 파란색 드롭다운이 있는 대화 상자에 "하위 프로세스가 상태 0으로 정상적으로 종료되었습니다."라고 표시됩니다. 오른쪽에 재시작 버튼이 있습니다. - 이는 새 세션이나 터미널 등이 시작되었지만(자식 프로세스) 계속되지 않아 마침내 사용할 수 있다는 의미인 것 같습니다! ?
누군가 여기서 무슨 일이 일어나고 있는지 명확히 할 수 있습니까?
답변1
tmux에 크게 의존하는 솔루션을 찾았습니다. tmux는 셸과 독립적으로 작동하고 창을 닫은 후에도 활성 상태를 유지하므로 tmux 세션을 준비한 후 연결할 수 있습니다. 종료하지 않으면 첨부 명령이 반환되지 않기 때문에 해당 항목이 즉시 종료되지 않습니다.
이에 따라 세션 이름을 지정하고 검색할 수 있다는 사실로 인해 다음 노틸러스 스크립트가 생성됩니다.
#!/bin/bash
# nautilus script to start files in nvim under a tmux session
# place this script into ~/.local/share/nautilus/scripts/nvimOpen.sh
# presented without warranty by mike aka curvi
# nvim running in another session? -
# TODO tmux rename-session -t $whaever nvim
# Tmux session 'nvim' is running neovim always!
if tmux has-session -t nvim ; then
# test if it is open and split it
for selected_file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; do
tmux send-keys -t nvim Escape # change to normal mode
tmux send-keys -t nvim ";vsp $selected_file" Enter # open file in vsplit
done
else
# or start it up freshly!
tmux new-session -d -s nvim ;
tmux send-keys -t nvim "nvim -O $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" Enter
tmux send-keys -t nvim Escape # change to normal mode
fi
# after the tmux session is prepared - attach to it in gnome-terminal!
gnome-terminal -e "tmux attach-session -d -t nvim"
보너스: 명령을 직접 실행하는 대신 키를 보냈기 때문에 터미널 기록에 예상대로 나타납니다!
;
참고: 내 nvim/init.vim에는 VM의 재매핑이 포함되어 있습니다 :
. 즉, 실행하려면 전송된 키에서 "일반" vim/neovim 설정을 확인해야 합니다!