У меня есть окно терминала с дюжиной названных вкладок.
Я хотел бы сохранить текущую конфигурацию и восстановить ее с именами и каталогами.
Есть ли способ сделать это?
У меня есть окно терминала с дюжиной названных вкладок.
Я хотел бы сохранить текущую конфигурацию и восстановить ее с именами и каталогами.
Есть ли способ сделать это?
Чтобы сохранить конфигурацию в /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
Альтернативой является просто использовать Byobu . Нажмите F2, чтобы открыть в нем новые терминалы. Используйте F3 и F4 для переключения влево и вправо между терминалами.
Закройте окно GUI в любое время. Когда вы снова открываете Byobu, все ваши терминалы восстанавливаются:)
Я попробовал следующие параметры после восстановления сохраненных настроек, а Title также правильно восстановлен.
Этот параметр позволяет перезаписать исходный набор названий.
Надеюсь, это помогает и отличный сценарий. Сохраняйте много времени, когда u перезагружается, и я могу с радостью перезагружать свой виртуальный ящик.
Спасибо !!
Я пробовал еще один вариант,
Я изменил заголовок по умолчанию для терминала, чтобы использовать значение 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
, все имена вкладок восстанавливаются должным образом.
И вы также можете изменить, как вам нравится, и сохранить вкладки снова!
Я нашел способ сделать это, что, по-моему, быстрее.
Тип:
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 &'
Ниже приведена версия терминала xfce, с возможностью сохранения / восстановления сеанса только из меню: Ссылка
Экран или Byobu - мои предпочтительные методы управления сложным рабочим процессом в терминале, и оба позволяют сохранить ваши конфигурации.
Небольшое улучшение существующего скрипта, который также проверяет 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
Развернувшись на ответе Някина выше, этот скрипт будет работать для нескольких конфигураций окон и вкладок и правильно сохранить заголовки табуляции для всех вкладок, которые у них есть.
В настоящее время это протестировано на 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
Я также искал эту функцию на терминале Gnome, но не смог ее найти. Лучший вариант, который я нашел до сих пор, - использовать консоль. Он позволяет вам добавлять закладки в закладки, чтобы вы могли вернуться к ним, выбрав их в меню закладок. Надеюсь, это поможет.
Подобно методу Йоги, Изменить > > > Предпочтения профиля > Title & Command > > Название > Когда команды терминала устанавливают свои собственные заголовки: > > > " Подготовить начальный заголовок "
Затем выполните: gnome-terminal --save-config = terminal-cfg
закрыть окна терминалов
откройте новый терминал и в нем выполните: gnome-terminal --load-config = terminal-cfg
Работает хорошо для меня, все заголовки сохранены.