Tôi có một cửa sổ Terminal với một tá các tab được đặt tên mở.
Tôi muốn lưu cấu hình hiện tại và khôi phục nó với tên và thư mục.
Có cách nào để làm việc này không?
Tôi có một cửa sổ Terminal với một tá các tab được đặt tên mở.
Tôi muốn lưu cấu hình hiện tại và khôi phục nó với tên và thư mục.
Có cách nào để làm việc này không?
Câu trả lời:
Để lưu cấu hình vào /tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
Để tải lại:
gnome-terminal --load-config=/tmp/cfg
CẬP NHẬT
Sau khi chơi xung quanh với bash, tôi cũng đã tạo tập lệnh sau để lưu tên tab vào tệp /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
Để gán tên chính xác, bạn phải chạy nó từ tab đầu tiên của thiết bị đầu cuối của bạn. Đang tải như trước:
gnome-terminal --load-config=/tmp/test
GIẢI TRÌNH:
Tôi có thể sử dụng sau đây để có được tên tab:
xprop -id $WINDOWID WM_NAME
Tôi có thể sử dụng sau đây để chuyển sang tab tiếp theo:
xdotool key ctrl+Page_Down;
Tôi đang nhận được số lượng tab sau khi grepping tệp cấu hình tôi đã lưu trước đó:
$(grep '\[Terminal' /tmp/test | wc -l)
Vì vậy, tôi có thể lặp lại các tab trong một vòng lặp. Tôi phải thêm mục "Tiêu đề = tiêu đề" cho từng phần cấu hình tab trong tệp được lưu trước đó. Để làm như vậy, trước tiên tôi sẽ tạo một mảng các số dòng trong đó tôi sẽ thêm các dòng.
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
Tôi đang thêm dòng "Title = Titlename" bên trong vòng lặp lặp trên các tab:
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
Một cách khác là chỉ sử dụng Byobu . Nhấn F2 để mở các thiết bị đầu cuối mới bên trong nó. Sử dụng F3 và F4 để chuyển đổi trái và phải giữa các thiết bị đầu cuối.
Đóng cửa sổ GUI bất cứ lúc nào bạn muốn. Khi bạn mở lại Byobu, tất cả các thiết bị đầu cuối của bạn được khôi phục :)
Tôi đã thử các tùy chọn bên dưới sau khi khôi phục cài đặt đã lưu và Tiêu đề cũng được khôi phục đúng cách.
Tùy chọn này tránh tiêu đề ban đầu của bạn được ghi đè.
Hy vọng điều này sẽ giúp và một kịch bản tuyệt vời thực sự. Tiết kiệm rất nhiều thời gian bất cứ khi nào bạn khởi động lại và tôi có thể vui vẻ khởi động lại hộp ảo của mình thường xuyên.
Cảm ơn!!
Tôi đã thử thêm một lựa chọn,
Tôi đã thay đổi tiêu đề mặc định của mình cho Terminal để sử dụng giá trị Intital ~/.bashrc
, thay vì thay đổi ~/.profile
cài đặt.
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
Nếu bạn làm điều này, không cần phải thay đổi Hồ sơ đầu cuối của bạn.
Khi bạn thực hiện gnome-terminal --load-config
tất cả các tên tab được khôi phục đúng. Và bạn cũng có thể thay đổi khi bạn thích và lưu lại các tab !!
Tôi tìm thấy một cách để làm điều đó mà tôi nghĩ là nhanh hơn.
Thể loại:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
Tôi đã tạo một bí danh với lệnh này và nó hoạt động khá tốt đối với tôi. Tôi chỉ cần gõ workflow
và một Terminal xuất hiện với 3 tab và tiêu đề mà tôi đã chọn trong định nghĩa hồ sơ được đặt vào các tab.
Trên .bashrc
tập tin của tôi, tôi đã đặt:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
Một cải tiến nhỏ cho tập lệnh tồn tại cũng kiểm tra xdotool được cài đặt trên hệ thống và thêm biến để thay đổi đường dẫn
#!/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
Mở rộng câu trả lời của Nyakin ở trên, tập lệnh này sẽ hoạt động cho nhiều cấu hình cửa sổ và tab và lưu chính xác tiêu đề tab cho tất cả các tab có chúng.
Điều này hiện đang được thử nghiệm trên gnome-terminal 3.2 nhưng có thể được cấu hình cho bất kỳ chương trình thiết bị đầu cuối nào có chức năng lưu cấu hình tương tự.
Điều này đòi hỏi các công cụ 'xprop', 'xdotool' và 'wmctrl'.
Mã số:
#!/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
Tôi cũng đã tìm kiếm tính năng đó trong thiết bị đầu cuối Gnome nhưng không thể tìm thấy nó. Tùy chọn tốt nhất tôi tìm thấy cho đến nay là sử dụng konsole. Nó cho phép bạn đánh dấu các tab của mình để bạn có thể quay lại với chúng bằng cách chọn chúng từ menu bookmark. Tôi hi vọng cái này giúp được.
Đây là một ngã ba thiết bị đầu cuối xfce, với khả năng lưu / khôi phục phiên chỉ từ menu: https://github.com/repu1sion/xfce4-terminal
Tương tự như phương pháp của Yoga, Chỉnh sửa >> Tùy chọn hồ sơ >> Tiêu đề và Lệnh >> Tiêu đề >> Khi các lệnh đầu cuối đặt tiêu đề của riêng chúng: >> " Chuẩn bị tiêu đề ban đầu "
Sau đó thực hiện: gnome-terminal --save-config = terminal-cfg
đóng cửa sổ thiết bị đầu cuối
mở một thiết bị đầu cuối mới và trong đó thực thi: gnome-terminal --load-config = terminal-cfg
Hoạt động tốt cho tôi, tất cả các tiêu đề giữ.
Hyper ( https://github.com/zeit/hyper ) là một giải pháp thay thế đa nền tảng tốt được viết bằng JavaScript và đi kèm với Electron.
Có một PR sẽ thêm hỗ trợ cho việc lưu / khôi phục phiên ra khỏi hộp: https://github.com/zeit/hyper/pull/945