Якийсь швидкий спосіб зберегти та відновити вкладки Terminal?


80

У мене вікно терміналу з відкритим десяткам вкладок.

Я хотів би зберегти поточну конфігурацію та відновити її з іменами та каталогами.

Чи є спосіб це зробити?


Дуже цікава особливість, але я не думаю, що це доступно.
длін

Яку термінальну програму ви використовуєте? Gnome термінал? Консоле? пр.
gertvdijk

@gertvdijk: Той, що називається "Термінал". Я вважаю, що це гном.
помилково

1
@false Btw., техніку Xfce win також називають "Терміналом". Для всіх, хто цікавиться, це задокументовано на Xfce Goodies , проекти: програми: термінал :)
Ностромов

2
Щоб зробити це можливим, проголосуйте на bugzilla.gnome.org/show_bug.cgi?id=623986
Marius Andreiana

Відповіді:


44

Щоб зберегти конфігурацію в /tmp/cfg:

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

Щоб завантажити його назад:

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

ОНОВЛЕННЯ

Погравши з 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;

Я отримую кількість вкладок після отримання файлу конфігурації, який я зберегла раніше:

$(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 

1
Ви можете заглянути в екранну команду. Я не використовую його, але я вважаю, що це може зберегти та відновити всілякі сеанси - навіть віддалені.
Джо

1
Назва не працює? Переконайтесь, що в меню "Правка \ Налаштування профілю" вкладка "Назва та команда" "Коли команди терміналів встановлюють власні заголовки:"
ЗБЕРІГАТИ ІНТИЦІАЛЬНИЙ НАЗВ

1
Яка цільова поведінка з цією відповіддю? Для мене це зберігає вкладки, і я вірю в поточний робочий каталог. Але це не зберігає попередній вхід і вихід. Термінал OS X робить це.
Тайлер Колліер,

11
gnome 3.18: Варіант "--save-config" більше не підтримується в цій версії gnome-терміналу.
Маріус Андріаана

2
Ubuntu 16.04: Варіант "--save-config" більше не підтримується в цій версії gnome-терміналу.
Євген Кулабухов

12

Альтернативою є просто використовувати Byobu . Натисніть F2, щоб відкрити нові клеми всередині нього. Використовуйте F3 і F4 для перемикання вліво і вправо між клемами.

Закрийте вікно GUI у будь-який час. Коли ви знову відкриєте Byobu, усі ваші термінали будуть відновлені :)


1
Чи працює це через перезавантаження? Для мене він скидається назад після перезавантаження.
akshay2000

3
Це не працює через перезавантаження
maxgalbu

1
Тут не відкриваються всі вкладки, лише перша.
Леонардо Кастро

3
Чому це навіть сприймається як відповідь, якщо він не працює через перезавантаження?
killjoy

3

Я спробував наведені нижче варіанти після відновлення збережених налаштувань, а також заголовки відновлено належним чином.

  1. Перейдіть у Налаштування-> Профілі та виберіть поточний профіль, який ви використовуєте
  2. Клацніть Редагувати та перейдіть на вкладку «Назва та команда»
  3. Зробіть початковий заголовок порожнім
  4. У спадному вікні нижче виберіть пункт «Зберегти початковий заголовок».

Ця опція уникає перезапису вашого початкового набору.

Сподіваюся, що це допомагає і чудовий сценарій справді. Економте багато часу під час перезавантаження, і я можу із задоволенням часто перезавантажувати свою віртуальну скриньку.

Дякую!!


3

Я спробував ще один варіант,

Я змінив за замовчуванням назву для 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всіх імен вкладок відновлено належним чином. Ви також можете змінити, як вам подобається, і зберегти вкладки знову !!


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 &'

1

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


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

1

Розширюючись на відповідь Някіна вище, цей сценарій буде працювати для декількох конфігурацій вікон та вкладок і правильно зберігати заголовки вкладок для всіх вкладок, які їх мають.

В даний час це тестується на gnome-терміналі 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

1

Я також шукав цю функцію в терміналі Gnome, але не зміг її знайти. Найкращий варіант, який я знайшов поки що - це використовувати консоль. Це дозволяє робити закладки на вкладках, щоб ви могли повернутися до них, вибравши їх із меню закладок. Я сподіваюся, що це допомагає.



0

Аналогічно методу йоги, Правка >> Налаштування профілю >> Назва та команда >> Заголовок >> Коли команди терміналів встановлюють власні заголовки: >> " Додати початковий заголовок "

Потім виконайте: gnome-terminals --save-config = terminals-cfg

закрити вікна терміналів

відкрийте новий термінал і в ньому виконайте: gnome-terminals --load-config = terminals-cfg

Для мене працює добре, усі титри зберігаються.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.