12 개의 이름이 지정된 탭이 열린 터미널 창이 있습니다.
현재 구성을 저장하고 이름과 디렉토리로 복원하고 싶습니다.
이것을 할 수있는 방법이 있습니까?
12 개의 이름이 지정된 탭이 열린 터미널 창이 있습니다.
현재 구성을 저장하고 이름과 디렉토리로 복원하고 싶습니다.
이것을 할 수있는 방법이 있습니까?
답변:
구성을 /tmp/cfg
다음으로 저장하려면
gnome-terminal --save-config=/tmp/cfg
다시로드하려면 :
gnome-terminal --load-config=/tmp/cfg
최신 정보
bash로 놀아 본 후 탭 이름을 파일 /tmp/test
로 저장하는 다음 스크립트를 만들었습니다 .
#!/usr/bin/env bash
gnome-terminal --save-config=/tmp/test
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' /tmp/test | wc -l); i++))
do
TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
done
이름을 올바르게 지정하려면 터미널의 첫 번째 탭에서 이름을 실행해야합니다. 이전과 동일하게로드 :
gnome-terminal --load-config=/tmp/test
설명:
다음을 사용하여 탭 이름을 얻을 수 있습니다.
xprop -id $WINDOWID WM_NAME
다음을 사용하여 다음 탭으로 이동할 수 있습니다.
xdotool key ctrl+Page_Down;
이전에 저장 한 구성 파일을 가져온 후 여러 개의 탭이 표시됩니다.
$(grep '\[Terminal' /tmp/test | wc -l)
루프 내부의 탭을 반복 할 수 있습니다. 이전에 저장된 파일의 각 탭 구성 섹션에 대해 "Title = titlename"항목을 추가해야합니다. 그렇게하려면 먼저 줄을 추가 할 줄 번호 배열을 만듭니다.
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
루프를 반복하는 탭 안에 "Title = titlename"줄을 추가하고 있습니다.
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
대안은 Byobu를 사용하는 것 입니다. 내부에 새 터미널을 열려면 F2를 누르십시오. F3 및 F4를 사용하여 터미널 간 좌우를 전환하십시오.
언제든지 GUI 창을 닫으십시오. Byobu를 다시 열면 모든 터미널이 복원됩니다. :)
나는 하나 더 옵션을 시도
설정을 ~/.bashrc
변경하지 않고 터미널의 기본 값을 Intital 값을 사용하도록 변경했습니다 ~/.profile
.
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
이렇게하면 터미널 프로필을 변경할 필요가 없습니다.
실행하면 gnome-terminal --load-config
모든 탭 이름이 올바르게 복원됩니다. 또한 원하는대로 변경하고 탭을 다시 저장할 수 있습니다 !!
더 빠르다고 생각하는 방법을 찾았습니다.
유형:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
이 명령으로 별칭을 만들었고 꽤 잘 작동했습니다. 입력 만하면 workflow
터미널에 3 개의 탭과 탭에 배치 된 프로필 정의에서 선택한 제목이 나타납니다.
내 .bashrc
파일에 다음을 배치했습니다.
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
시스템에 설치된 xdotool을 확인하고 경로 변경을위한 변수를 추가하는 기존 스크립트의 약간의 개선
#!/bin/bash
SAVEPATH=/tmp/termprofile
if [ ! -f /usr/bin/xdotool ]; then
echo "please install 'xdotool'"
exit 1
fi
gnome-terminal --save-config=$SAVEPATH
LINES=($(grep -n '\[Terminal' $SAVEPATH | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' $SAVEPATH | wc -l); i++))
do
TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" $SAVEPATH
done
위의 Nyakin의 답변을 확장하면이 스크립트는 여러 창 및 탭 구성에서 작동하며 탭 제목이있는 모든 탭의 탭 제목을 올바르게 저장합니다.
이것은 현재 gnome-terminal 3.2에서 테스트되었지만 유사한 저장 구성 기능을 가진 모든 터미널 프로그램에 대해 구성 될 수 있습니다.
이를 위해서는 'xprop', 'xdotool'및 'wmctrl'도구가 필요합니다.
암호:
#!/usr/bin/env bash
FILE="$1"
gnome-terminal --save-config=$FILE
WINDOWLINES=$(wmctrl -lx | grep gnome-terminal.Gnome-terminal)
WINDOWNUM=$(echo "$WINDOWLINES" | wc -l)
TABLISTS=$(grep "^Terminals" $FILE)
for ((i=1; i<=$WINDOWNUM; i++))
do
WINDOWLINE=$(echo "$WINDOWLINES" | sed -n "$i{p;q}")
WINDOW_ID=$(echo "$WINDOWLINE" | cut -d' ' -f1)
#Switch to window
wmctrl -i -a $WINDOW_ID
LINE=$(echo "$TABLISTS" | sed -n "$i{p;q}"); LINE=${LINE#Terminals=}
TERMINALNUM=$(echo "$LINE" | grep -o ';' | wc -l)
#go to first tab of the window if more than 1
[ $TERMINALNUM -gt 1 ] && xdotool key alt+1 && sleep .1
for tab in ${LINE//;/ }
do
#Get the current tab title
TITLE=$(xprop -id $WINDOW_ID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//')
#Insert it into the config file
[ "$TITLE" == "${TITLE//WM_NAME/}" ] && sed -ri "/\[${tab}\]/aTitle=${TITLE}" $FILE
#Move to the next tab in the window
xdotool key ctrl+Page_Down
done
done
다음은 메뉴에서 세션을 저장 / 복원 할 수있는 xfce 터미널 포크입니다. https://github.com/repu1sion/xfce4-terminal
하이퍼 ( https://github.com/zeit/hyper )는 JavaScript로 작성되고 Electron과 번들로 제공되는 훌륭한 교차 플랫폼 대안입니다.
https://github.com/zeit/hyper/pull/945 : 즉시 세션 저장 / 복원에 대한 지원을 추가 할 PR이 있습니다.