Быстрый способ сохранения и восстановления вкладок терминала?

74

У меня есть окно терминала с дюжиной названных вкладок.

Я хотел бы сохранить текущую конфигурацию и восстановить ее с именами и каталогами.

Есть ли способ сделать это?

    
задан false 20.06.2013 в 18:31
источник

12 ответов

44

Чтобы сохранить конфигурацию в /tmp/cfg :

gnome-terminal --save-config=/tmp/cfg

Чтобы загрузить его обратно:

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

UPDATE

После игры с bash я создал следующий скрипт, который хранит имена вкладок в файл /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 
    
ответ дан Nykakin 20.06.2013 в 21:04
12

Альтернативой является просто использовать Byobu . Нажмите F2, чтобы открыть в нем новые терминалы. Используйте F3 и F4 для переключения влево и вправо между терминалами.

Закройте окно GUI в любое время. Когда вы снова открываете Byobu, все ваши терминалы восстанавливаются:)

    
ответ дан Ashwin Nanjappa 05.07.2013 в 06:40
3

Я попробовал следующие параметры после восстановления сохраненных настроек, а Title также правильно восстановлен.

  1. Перейдите в Настройки - > Профили и выберите текущий профиль, который вы используете.
  2. Нажмите «Изменить» и перейдите на вкладку «Название и команда»
  3. Сделать начальное название пустым
  4. Выберите опцию «Сохранить исходный заголовок» в раскрывающемся списке ниже.

Этот параметр позволяет перезаписать исходный набор названий.

Надеюсь, это помогает и отличный сценарий. Сохраняйте много времени, когда u перезагружается, и я могу с радостью перезагружать свой виртуальный ящик.

Спасибо !!

    
ответ дан Yoga 07.12.2013 в 05:57
3

Я пробовал еще один вариант,

Я изменил заголовок по умолчанию для терминала, чтобы использовать значение Intital в ~/.bashrc , вместо изменения настроек ~/.profile .

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

Если вы сделаете это, вам не нужно менять свой профиль терминала.
Когда вы выполняете gnome-terminal --load-config , все имена вкладок восстанавливаются должным образом. И вы также можете изменить, как вам нравится, и сохранить вкладки снова!

    
ответ дан Yoga 11.12.2013 в 02:56
3

Я нашел способ сделать это, что, по-моему, быстрее.

  1. Создает профиль с названием и именем, которое вы хотите, как сказал Йога.
  2. Тип:

    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 &'
    
ответ дан giacobo1 27.12.2013 в 04:01
1

Ниже приведена версия терминала xfce, с возможностью сохранения / восстановления сеанса только из меню: Ссылка

    
ответ дан pulse 06.04.2018 в 03:50
1

Экран или Byobu - мои предпочтительные методы управления сложным рабочим процессом в терминале, и оба позволяют сохранить ваши конфигурации.

    
ответ дан orbatos 24.09.2014 в 11:08
1

Небольшое улучшение существующего скрипта, который также проверяет 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
    
ответ дан pulse 25.09.2014 в 00:53
1

Развернувшись на ответе Някина выше, этот скрипт будет работать для нескольких конфигураций окон и вкладок и правильно сохранить заголовки табуляции для всех вкладок, которые у них есть.

В настоящее время это протестировано на gnome-terminal 3.2, но может быть настроено для любой программы терминала с аналогичной функциональностью save-config.

Для этого требуются инструменты «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
    
ответ дан Bobby Jones 04.08.2016 в 21:49
1

Я также искал эту функцию на терминале Gnome, но не смог ее найти. Лучший вариант, который я нашел до сих пор, - использовать консоль. Он позволяет вам добавлять закладки в закладки, чтобы вы могли вернуться к ним, выбрав их в меню закладок. Надеюсь, это поможет.

    
ответ дан fitsum 01.08.2017 в 09:39
0

Подобно методу Йоги, Изменить > > > Предпочтения профиля > Title & Command > > Название > Когда команды терминала устанавливают свои собственные заголовки: > > > " Подготовить начальный заголовок "

Затем выполните: gnome-terminal --save-config = terminal-cfg

закрыть окна терминалов

откройте новый терминал и в нем выполните: gnome-terminal --load-config = terminal-cfg

Работает хорошо для меня, все заголовки сохранены.

    
ответ дан ImLeo 03.02.2016 в 02:40
0

Hyper ( Ссылка ) является хорошей альтернативой перекрестной платформе, написанной на JavaScript и в комплекте с Electron.

Есть PR, который собирается добавить поддержку для сохранения / восстановления сеанса из коробки: Ссылка

    
ответ дан Eugene Kulabuhov 14.05.2017 в 10:55