Terminalin sekmelerini kaydetmek ve geri yüklemek için bazı hızlı yol?

70

Bir düzine adlı sekme açık olan bir Terminal pencerem var.

Mevcut yapılandırmayı kaydetmek ve adları ve dizinleri ile geri yüklemek istiyorum.

Bunu yapmanın bir yolu var mı?

    
sordu false 20.06.2013 18:31

12 cevap

44

Yapılandırmayı /tmp/cfg 'ye kaydetmek için:

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ı /tmp/test dosyasına kaydeden şu komut dosyasını oluşturdum:

#!/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 şekilde atamak için, terminalinizin ilk sekmesinden çalıştırmanız gerekir. Daha önce olduğu gibi yükleniyor:

gnome-terminal --load-config=/tmp/test

AÇIKLAMA:

Sekme adını almak için aşağıdakileri kullanabilirim:

xprop -id $WINDOWID WM_NAME

Bir sonraki sekmeye geçmek için aşağıdakileri kullanabilirim:

xdotool key ctrl+Page_Down;

Daha önce kaydettiğim yapılandırma dosyası açıldıktan sonra sekme sayısını alıyorum:

$(grep '\[Terminal' /tmp/test | wc -l)

Böylece bir döngü içindeki sekmeler üzerinde yineleyebilirim. Önceden kaydedilmiş dosyadaki her sekme yapılandırma bölümü için "Title = titlename" girdisini eklemem gerekiyor. Bunu yapmak için önce satır ekleyeceğim satır numaraları dizisi oluşturuyorum.

LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))

Sekmelerin içinde yinelenen sekmelerin üzerinde "Başlık = titlename" satırını ekliyorum:

sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 
    
verilen cevap Nykakin 20.06.2013 21:04
12

Bir alternatif sadece Byobu kullanmaktır. İçinde yeni terminaller açmak için F2 tuşuna basın. Terminaller arasında sola ve sağa geçmek 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:)

    
verilen cevap Ashwin Nanjappa 05.07.2013 06:40
3

Kaydedilen ayarları geri yükledikten sonra aşağıdaki seçenekleri denedim ve Başlık da doğru şekilde geri yüklendi.

  1. Git Ayarlar - & gt; Profiller ve kullanmakta olduğunuz Mevcut Profil’i seçin
  2. Düzenle ve Git "Başlık ve komut" sekmesine tıklayın
  3. İlk Başlığı Boş Bırak
  4. Aşağı açılan kutuda "İlk Başlığı Sakla" Seçeneğini seçin.

Bu seçenek, ilk başlığınızın üzerine yazılmasını engeller.

Umarım bu gerçekten yardımcı olur ve harika bir senaryo. Yeniden başlattığımda çok fazla zaman kazanırım ve sanal kutumu sık sık yeniden başlatabilirim.

Teşekkür !!

    
verilen cevap Yoga 07.12.2013 05:57
3

Bir seçenek daha denedim

Terminalin varsayılan başlığını, ~/.bashrc ayarlarını değiştirmektense ~/.profile cinsinden Intital değerini kullanacak şekilde değiştirdim.

# If this is an xterm set the title to [email protected]:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="$PS1"
    ;;
*)
    ;;
esac

Bunu yaparsanız, Terminal Profilinizi değiştirmeniz gerekmez.
% Co_de% çalıştırdığınızda tüm sekme adları doğru şekilde geri yüklenir. Ayrıca istediğiniz gibi değiştirebilir ve sekmeleri tekrar kaydedebilirsiniz!

    
verilen cevap Yoga 11.12.2013 02:56
3

Daha hızlı olduğunu düşündüğüm bir yol buldum.

  1. Başlığı ve Yoga gibi istediğiniz adı içeren bir profil oluşturur.
  2. Tür:

    gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
    

Bu komutla bir takma isim yaptım ve benim için gayet iyi çalıştı. Sadece workflow yazdım ve 3 sekmeli bir Terminal ve sekmelerde yerleştirilmiş profil tanımında seçtiğim başlıklar var.

.bashrc dosyama yerleştirdim:

alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
    
verilen cevap giacobo1 27.12.2013 04:01
1

Ekran veya Byobu, terminalde karmaşık iş akışını yönetmek için tercih ettiğim yöntemlerdir ve her ikisi de yapılandırmalarınızı kaydetmeye izin verir.

    
verilen cevap orbatos 24.09.2014 11:08
1

Sistemde kurulu xdotool'u da kontrol eden ve değişen yol için değişken ekleyen varolan betiğe küçük bir iyileştirme

#!/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
    
verilen cevap pulse 25.09.2014 00:53
1

Yukarıdaki Nyakin'in yanıtını genişleten bu betik, birden fazla pencere ve sekme yapılandırması için çalışacak ve bunları içeren tüm sekmeler için sekme başlıklarını doğru şekilde kaydedecektir.

Bu, şu anda gnome-terminal 3.2 üzerinde test edilmiştir, ancak benzer bir kaydetme-yapılandırma 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=""
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
    
verilen cevap Bobby Jones 04.08.2016 21:49
1

Ayrıca Gnome terminalinde bu özelliği aradım ama bulamadım. Şimdiye kadar bulduğum en iyi seçenek konsole kullanmaktır. Sekmelerinize yer işareti koymanıza olanak tanır, böylece yer imleri menüsünden seçerek bunlara geri dönebilirsiniz. Umarım bu yardımcı olur.

    
verilen cevap fitsum 01.08.2017 09:39
1

Burada, menüden yalnızca oturumu kaydetme / geri yükleme olanağı sunan bir xfce terminal çatalı var: İşte

    
verilen cevap pulse 06.04.2018 03:50
0

Yoga'nın yöntemine benzer, Düzenle & gt; & gt; Profil Tercihleri ​​& gt; & gt; Başlık ve Komut & gt; & gt; Başlık & gt; & gt; Terminal komutları kendi başlıklarını belirlediğinde: & gt; & gt; " İlk başlığa ekle "

Ardından çalıştır: gnome-terminalleri --save-config = terminaller-cfg

terminal pencerelerini kapatın

yeni bir terminal açın ve bunun içinde çalıştırın: gnome-terminalleri --load-config = terminaller-cfg

Benim için iyi çalışıyor, tüm başlıklar devam ediyor.

    
verilen cevap ImLeo 03.02.2016 02:40
0

Hyper ( İşte ), JavaScript ile yazılmış ve Electron ile birlikte verilen iyi bir çapraz platform alternatifi.

Oturumun kaydedilmesi / geri yüklenmesi için destek eklenecek bir PR var: İşte

    
verilen cevap Eugene Kulabuhov 14.05.2017 10:55

Etiketlerdeki diğer soruları oku