Saya memiliki jendela Terminal dengan selusin tab bernama terbuka.
Saya ingin menyimpan konfigurasi saat ini dan mengembalikannya dengan nama dan direktori.
Apakah ada cara untuk melakukan ini?
Saya memiliki jendela Terminal dengan selusin tab bernama terbuka.
Saya ingin menyimpan konfigurasi saat ini dan mengembalikannya dengan nama dan direktori.
Apakah ada cara untuk melakukan ini?
Jawaban:
Untuk menyimpan konfigurasi ke /tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
Untuk memuatnya kembali:
gnome-terminal --load-config=/tmp/cfg
MEMPERBARUI
Setelah bermain-main dengan bash, saya membuat skrip berikut yang menyimpan nama tab ke dalam file /tmp/test
juga:
#!/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
Untuk menetapkan nama dengan benar, Anda harus menjalankannya dari tab pertama terminal Anda. Memuat sama seperti sebelumnya:
gnome-terminal --load-config=/tmp/test
PENJELASAN:
Saya dapat menggunakan berikut ini untuk mendapatkan nama tab:
xprop -id $WINDOWID WM_NAME
Saya dapat menggunakan yang berikut untuk melompat ke tab berikutnya:
xdotool key ctrl+Page_Down;
Saya mendapatkan jumlah tab setelah mengambil file konfigurasi yang saya simpan sebelumnya:
$(grep '\[Terminal' /tmp/test | wc -l)
Jadi saya bisa mengulangi tab di dalam satu lingkaran. Saya harus menambahkan entri "Title = titlename" untuk setiap bagian konfigurasi tab dalam file yang disimpan sebelumnya. Untuk melakukannya, pertama saya membuat array nomor baris di mana saya akan menambahkan baris.
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
Saya menambahkan baris "Title = titlename" di dalam loop yang berulang di atas tab:
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
Alternatifnya adalah dengan hanya menggunakan Byobu . Tekan F2 untuk membuka terminal baru di dalamnya. Gunakan F3 dan F4 untuk beralih ke kiri dan kanan antara terminal.
Tutup jendela GUI kapan saja Anda mau. Ketika Anda membuka kembali Byobu, semua terminal Anda telah dipulihkan :)
Saya mencoba opsi di bawah ini setelah mengembalikan pengaturan yang disimpan dan Judul juga dikembalikan dengan benar.
Opsi ini menghindari judul awal Anda yang akan ditimpa.
Semoga ini bisa membantu dan naskah yang bagus. Hemat banyak waktu kapan pun Anda me-reboot dan saya bisa dengan senang hati me-reboot kotak virtual saya sering.
Terima kasih!!
Saya Mencoba satu opsi lagi,
Saya mengubah judul default saya untuk Terminal untuk menggunakan nilai Intital ~/.bashrc
, daripada mengubah ~/.profile
pengaturan.
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
Jika Anda melakukan ini, tidak perlu mengubah Profil Terminal Anda.
Ketika Anda menjalankan gnome-terminal --load-config
semua nama tab dikembalikan dengan benar. Dan Anda juga dapat mengubah sesuka Anda dan menyimpan tab lagi !!
Saya menemukan cara untuk melakukannya yang menurut saya lebih cepat.
Tipe:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
Saya membuat alias dengan perintah ini dan itu bekerja cukup baik untuk saya. Saya cukup mengetik workflow
dan Terminal muncul dengan 3 tab dan judul yang saya pilih dalam definisi profil yang ditempatkan di tab.
Pada .bashrc
file saya, saya menempatkan:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
Sedikit perbaikan pada skrip yang ada yang juga memeriksa xdotool yang diinstal pada sistem dan menambahkan variabel untuk mengubah path
#!/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
Memperluas jawaban Nyakin di atas, skrip ini akan berfungsi untuk beberapa konfigurasi jendela dan tab dan menyimpan judul tab dengan benar untuk semua tab yang memilikinya.
Ini saat ini sedang diuji pada gnome-terminal 3.2 tetapi dapat dikonfigurasikan untuk program terminal apa saja dengan fungsionalitas save-config yang serupa.
Ini membutuhkan alat 'xprop', 'xdotool', dan 'wmctrl'.
Kode:
#!/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
Saya juga mencari fitur itu di terminal Gnome tetapi tidak dapat menemukannya. Pilihan terbaik yang saya temukan sejauh ini adalah menggunakan konsole. Ini memungkinkan Anda untuk menandai tab Anda, sehingga Anda dapat kembali ke mereka dengan memilihnya dari menu bookmark. Saya harap ini membantu.
Ini adalah garpu terminal xfce, dengan kemungkinan untuk menyimpan / mengembalikan sesi hanya dari menu: https://github.com/repu1sion/xfce4-terminal
Mirip dengan metode Yoga, Edit >> Preferensi Profil >> Judul dan Perintah >> Judul >> Ketika perintah terminal menetapkan judul mereka sendiri: >> " Tentukan judul awal "
Kemudian jalankan: gnome-terminal --save-config = terminals-cfg
tutup terminal windows
buka terminal baru, dan di dalamnya jalankan: gnome-terminal --load-config = terminals-cfg
Bagus bagi saya, semua judul disimpan.
Hyper ( https://github.com/zeit/hyper ) adalah alternatif lintas platform yang baik yang ditulis dalam JavaScript dan dibundel dengan Electron.
Ada PR yang akan menambahkan dukungan untuk sesi save / restore di luar kotak: https://github.com/zeit/hyper/pull/945