Какой-нибудь быстрый способ сохранить и восстановить вкладки терминала?
У меня есть окно терминала с дюжиной открытых вкладок.
Я хотел бы сохранить текущую конфигурацию и восстановить ее с именами и каталогами.
Есть ли способ сделать это?
13 ответов
Сохранить конфигурацию в /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;
Я получаю количество вкладок после 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
Альтернативой является просто использовать Byobu. Нажмите F2, чтобы открыть новые терминалы внутри него. Используйте F3 и F4 для переключения влево и вправо между клеммами.
Закройте окно GUI в любое время. При повторном открытии Byobu все ваши терминалы будут восстановлены:)
Я также искал эту функцию в терминале Gnome, но не смог ее найти. Лучший вариант, который я нашел, - это использовать консоль. Это позволяет вам создавать закладки для ваших вкладок, чтобы вы могли вернуться к ним, выбрав их в меню закладок. Надеюсь, это поможет.
Я нашел способ сделать это, я думаю, быстрее.
- Создает профиль с названием и именем, которое вы хотите, как сказал Йога.
Тип:
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 &'
Я попробовал еще один вариант,
Я изменил заголовок по умолчанию для терминала, чтобы использовать значение 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
все имена вкладок восстановлены правильно. И вы также можете изменить, как вам нравится, и снова сохранить вкладки!
tmux-воскресить
Восстановить
tmux
среде после перезагрузки системы.
tmux-resurrect
сохраняет все мелкие детали вашей среды tmux, чтобы ее можно было полностью восстановить после перезагрузки системы (или когда вам захочется). Настройка не требуется. Вы должны чувствовать, что никогда не выходите из tmux.Он даже (опционально) восстанавливает сеансы vim и neovim !
Я попробовал перечисленные ниже варианты после восстановления сохраненных настроек, и название также было восстановлено должным образом.
- Зайдите в Настройки-> Профили и выберите текущий профиль, который вы используете
- Нажмите на Редактировать и перейдите на вкладку "Название и команда"
- Сделать начальный заголовок пустым
- Выберите опцию "Сохранить начальный заголовок" в раскрывающемся списке ниже.
Эта опция позволяет избежать перезаписи исходного набора заголовков.
Надеюсь, что это помогает и отличный сценарий действительно. Экономьте много времени всякий раз, когда вы перезагружаетесь, и я могу с радостью часто перезагружать виртуальную коробку
Спасибо!!
Вот терминальная вилка xfce, с возможностью сохранить / восстановить сессию только из меню: https://github.com/repu1sion/xfce4-terminal
Screen или Byobu - мои предпочтительные методы управления сложным рабочим процессом в терминале, и оба позволяют сохранять ваши конфигурации.
Hyper ( https://github.com/zeit/hyper) - это хорошая кроссплатформенная альтернатива, написанная на JavaScript и связанная с Electron.
Есть PR, который собирается добавить поддержку для сохранения / восстановления сессии из коробки: https://github.com/zeit/hyper/pull/945
Расширяя ответ Nyakin выше, этот сценарий будет работать для нескольких конфигураций окон и вкладок и правильно сохранять заголовки вкладок для всех вкладок, у которых они есть.
В настоящее время это тестируется на терминале gnome 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
Подобно методу Йоги, Правка >> Настройки профиля >> Заголовок и команда >> Заголовок >> Когда терминальные команды устанавливают свои собственные заголовки: >> "Предварительно добавить начальный заголовок"
Затем выполните: gnome-Terminal --save-config= Terminal-CFG
закрыть терминалы окна
откройте новый терминал и выполните в нем: gnome-Terminal --load-config= Terminal-cfg
Работает хорошо для меня, все названия сохранены.
Небольшое улучшение в существующем скрипте, который также проверяет установленный в системе 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