ฉันมีหน้าจอเทอร์มินัลพร้อมแท็บชื่อโหลที่เปิดอยู่
ฉันต้องการบันทึกการกำหนดค่าปัจจุบันและกู้คืนด้วยชื่อและไดเรกทอรี
มีวิธีทำเช่นนี้หรือไม่?
ฉันมีหน้าจอเทอร์มินัลพร้อมแท็บชื่อโหลที่เปิดอยู่
ฉันต้องการบันทึกการกำหนดค่าปัจจุบันและกู้คืนด้วยชื่อและไดเรกทอรี
มีวิธีทำเช่นนี้หรือไม่?
คำตอบ:
วิธีบันทึกการกำหนดค่าลงใน/tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
หากต้องการโหลดกลับ:
gnome-terminal --load-config=/tmp/cfg
UPDATE
หลังจากเล่นไปรอบ ๆ กับทุบตีฉันสร้างสคริปต์ต่อไปนี้ซึ่งเก็บชื่อแท็บลงในไฟล์/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;
ฉันได้รับจำนวนแท็บหลังจาก grepping ไฟล์การตั้งค่าที่ฉันบันทึกไว้ก่อนหน้า:
$(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 อีกครั้งเทอร์มินัลทั้งหมดจะถูกกู้คืน :)
ฉันลองตัวเลือกด้านล่างหลังจากกู้คืนการตั้งค่าที่บันทึกไว้และชื่อยังได้รับการกู้คืนอย่างถูกต้อง
ตัวเลือกนี้หลีกเลี่ยงการตั้งชื่อเริ่มต้นของคุณที่จะถูกเขียนทับ
หวังว่านี่จะช่วยและเป็นสคริปต์ที่ดีอย่างแน่นอน ประหยัดเวลาได้มากเมื่อคุณรีบูทและฉันสามารถรีบูทกล่องเสมือนบ่อยครั้งได้อย่างมีความสุข
ขอบคุณ !!
ฉันพยายามอีกหนึ่งทางเลือก
ฉันเปลี่ยนชื่อเริ่มต้นสำหรับ Terminal เพื่อใช้ค่า Intital ใน~/.bashrc
แทนที่จะเปลี่ยนการ~/.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 &'
Screen หรือ Byobu เป็นวิธีที่ฉันชอบในการจัดการเวิร์กโฟลว์ที่ซับซ้อนในเทอร์มินัลและทั้งคู่ก็สามารถบันทึกการกำหนดค่าของคุณได้
การปรับปรุงเล็กน้อยสำหรับสคริปต์ที่มีอยู่ซึ่งตรวจสอบ 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
ฉันยังค้นหาคุณลักษณะนั้นในเทอร์มินัล Gnome แต่หาไม่เจอ ตัวเลือกที่ดีที่สุดที่ฉันพบในตอนนี้คือใช้ konsole ช่วยให้คุณคั่นหน้าแท็บของคุณเพื่อให้คุณสามารถกลับไปที่พวกเขาได้โดยเลือกจากเมนูที่คั่นหน้า ฉันหวังว่านี่จะช่วยได้.
นี่คือเทอร์มินัล xfce ซึ่งมีความเป็นไปได้ที่จะบันทึก / กู้คืนเซสชันได้จากเมนู: https://github.com/repu1sion/xfce4-terminal
เช่นเดียวกับวิธีการของโยคะแก้ไข >> การตั้งค่าโปรไฟล์ >> ชื่อเรื่องและคำสั่ง >> ชื่อเรื่อง >> เมื่อคำสั่งเทอร์มินัลตั้งชื่อของตนเอง: >> "เตรียมชื่อเริ่มต้น "
จากนั้นดำเนินการ: gnome-terminal --save-config = terminals-cfg
ปิดหน้าต่างเทอร์มินัล
เปิดเทอร์มินัลใหม่และดำเนินการ: gnome-terminal --load-config = terminals-cfg
ใช้งานได้ดีสำหรับฉันทุกชื่อเก็บไว้
ไฮเปอร์ ( https://github.com/zeit/hyper ) เป็นทางเลือกข้ามแพลตฟอร์มที่ดีซึ่งเขียนด้วย JavaScript และรวมเข้ากับ Electron
มีการประชาสัมพันธ์ที่จะเพิ่มการสนับสนุนสำหรับการบันทึกเซสชัน / คืนค่าออกจากกล่อง: https://github.com/zeit/hyper/pull/945