Sekmeleri açık adlı bir düzine Terminal pencerem var.
Geçerli yapılandırmayı kaydetmek ve adlarla ve dizinlerle geri yüklemek istiyorum.
Bunu yapmanın bir yolu var mı?
Sekmeleri açık adlı bir düzine Terminal pencerem var.
Geçerli yapılandırmayı kaydetmek ve adlarla ve dizinlerle geri yüklemek istiyorum.
Bunu yapmanın bir yolu var mı?
Yanıtlar:
Yapılandırmayı içine kaydetmek için /tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
Geri yüklemek için:
gnome-terminal --load-config=/tmp/cfg
GÜNCELLEME
Bash ile oynadıktan sonra sekme adlarını da dosyaya koyan aşağıdaki betiği oluşturdum /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
İsimleri doğru bir şekilde atamak için, terminalinizin ilk sekmesinden çalıştırmanız gerekir. Daha önce olduğu gibi aynı yükleniyor:
gnome-terminal --load-config=/tmp/test
AÇIKLAMA:
Sekme adı almak için aşağıdakileri kullanabilirim:
xprop -id $WINDOWID WM_NAME
Bir sonraki sekmeye atlamak için aşağıdakileri kullanabilirim:
xdotool key ctrl+Page_Down;
Daha önce kaydettiğim yapılandırma dosyasını grepping yaptıktan sonra sekme sayısı alıyorum:
$(grep '\[Terminal' /tmp/test | wc -l)
Böylece bir döngü içindeki sekmeleri yineleyebilirim. Daha önce kaydedilen dosyadaki her sekme yapılandırma bölümü için "Title = titlename" girdisini eklemem gerekiyor. Bunu yapmak için, öncelikle satır ekleyeceğim satır sayıları dizisi oluşturuyorum.
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
Sekmelerin üzerinde yinelenen döngü içinde "Title = titlename" satırı ekliyorum:
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
Bir alternatif sadece Byobu'yu kullanmaktır . Yeni terminalleri açmak için F2'ye basın. Terminaller arasında sola ve sağa geçiş yapmak için F3 ve F4 tuşlarını kullanın.
İstediğiniz zaman GUI penceresini kapatın. Byobu'yu yeniden açtığınızda tüm terminalleriniz geri yüklenir :)
Kaydedilen ayarları geri yükledikten sonra aşağıdaki seçenekleri denedim ve Başlık da uygun şekilde geri yüklendi.
Bu seçenek başlangıç başlığınızın üzerine yazılmasını önler.
Umut Bu gerçekten yardımcı olur ve harika bir senaryo. Her yeniden başlattığınızda çok fazla zaman kazanın ve sanal kutumu sık sık yeniden başlatabilirim.
Teşekkürler!!
Bir seçenek daha denedim.
Terminal için varsayılan başlığımı ~/.bashrc
, ~/.profile
ayarları değiştirmek yerine Intital değerini kullanması için değiştirdim .
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
Bunu yaparsanız, Terminal Profilinizi değiştirmenize gerek yoktur. Tüm sekmeleri
yürüttüğünüzde gnome-terminal --load-config
isimler uygun şekilde geri yüklenir. Ayrıca istediğiniz gibi değiştirebilir ve sekmeleri tekrar kaydedebilirsiniz!
Bunu yapmanın daha hızlı olduğunu düşündüğüm bir yol buldum.
Tür:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
Bu komutla bir takma ad yaptım ve bu benim için gayet iyi çalıştı. Sadece yazıyorum workflow
ve 3 sekmeli bir Terminal ve sekmelerde yer alan profil tanımında seçtiğim başlıklar beliriyor.
Dosyama .bashrc
yerleştirdim:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
Sistemde yüklü olan xdotool'u kontrol eden ve değişen yol için değişken ekleyen varolan komut dosyasında küçük bir gelişme
#!/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'in cevabını yukarıda açıklayan bu komut dosyası, birden çok pencere ve sekme yapılandırması için çalışacak ve bunlara sahip olan tüm sekmeler için sekme başlıklarını doğru şekilde kaydedecektir.
Bu şu anda gnome-terminal 3.2'de test edilmiştir ancak benzer bir save-config işlevselliğine sahip herhangi bir terminal programı için yapılandırılabilir.
Bu, 'xprop', 'xdotool' ve 'wmctrl' araçlarını gerektirir.
Kod:
#!/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
İşte sadece menüden oturumu kaydetme / geri yükleme imkanı olan bir xfce terminal çatalı: https://github.com/repu1sion/xfce4-terminal
Yoga yöntemine benzer şekilde, Düzenle >> Profil Tercihleri >> Başlık ve Komut >> Başlık >> Terminal komutları kendi başlıklarını belirlediklerinde: >> " Prepend initial title "
Sonra yürütün: gnome-terminaller --save-config = terminals-cfg
terminal pencerelerini kapat
yeni bir terminal açın ve bunun içinde: gnome-terminals --load-config = terminals-cfg
Benim için iyi çalışıyor, tüm başlıkları tuttu.
Hyper ( https://github.com/zeit/hyper ), JavaScript ile yazılmış ve Electron ile birlikte verilen iyi bir çapraz platform alternatifidir.
Kutudan kaydetme / geri yükleme oturumu için destek ekleyecek bir PR var: https://github.com/zeit/hyper/pull/945