Позволит ли какой-либо (недавний) эмулятор терминала Linux сохранить мою сессию (вкладки, историю и т. Д.)?

Со временем я стал инвестировать в свои терминальные сеансы: вкладки, историю команд, расположение окон и заголовок и т. Д. В конце концов, перезагрузка требует, чтобы я начал все сначала, что тратит мое время.

Два эмулятора терминала, с которыми я знаком, имели, по крайней мере, частичную возможность, но функциональность с тех пор была удалена: konsole потеряла эту функциональность где-то на пути к KDE4. gnome-терминал потерял опцию --save-config как "устаревшую" где-то до версии 3.10.2, то есть ответ здесь больше не применяется: Сохранить несколько макетов gnome-терминала?

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

6 ответов

Это не совсем то, что вы просили, но tmux имеет такие возможности.

Обязательно установите вместе с ним плагин tmux-resurrect, который позволит восстановить среду tmux (windows, split и некоторые запущенные программы) после перезапуска.

С другой стороны, tmux будет работать со всеми

Вот терминальная вилка xfce, с возможностью сохранить / восстановить сессию только из меню: https://github.com/repu1sion/xfce4-terminal

https://github.com/Eugeny/terminus сохраняет открытые вкладки и запоминает правильный каталог для каждой.

Отличный терминал Guake позволяет это сделать, есть возможность запоминать свой набор вкладок между перезагрузками.

В настоящее время в настройках она указана как «экспериментальная» функция, но после нескольких месяцев использования этой функции у меня ни разу не возникло проблем.

Я думаю, что это не совсем ответ на ваш вопрос, но вот как я его настроил:

Куча скриптов, которые открывают разные "пресеты Gnome-Terminal".

Например, в этом скрипте я открываю gnome-терминал с тремя вкладками и вызываю SSH с параметрами в каждой.

#!/bin/sh
PATH=/usr/bin:/bin 

gnome-terminal \
--tab -t CustomTabText1 -e 'sh -c "ssh hostname.one"' \
--tab -t CustomTabText2 -e 'sh -c "ssh hostname.two"' \
--tab -t CustomTabText3 -e 'sh -c "ssh hostname.three"'

Я также использовал конфигурационный файл ssh, чтобы отразить определенные параметры SSH хоста. Конечно, если вам нужно исключение, просто передайте параметры в SSH в скрипте gnome-Terminal, который будет иметь приоритет над файлом конфигурации SSH.

Теперь с расширением vscode Terminal Keeper вы можете настроить сохраненные сеансы терминала с помощью конфигурации json, например

       "default": [
            [
                {
                    "name": "docker:ros",
                    "commands": [
                        "ssh r99"
                    ],
                    "autoExecuteCommands": true
                },
                {
                    "name": "docker:k8s",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "docker:nats",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "docker:fleet",
                    "commands": [
                        ""
                    ]
                }
            ],
            [
                {
                    "name": "db:postgre",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "db:redis",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "db:hyper",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "db:mysql",
                    "commands": [
                        ""
                    ]
                }
            ],
            [
                {
                    "name": "api:delivery",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "api:feedback",
                    "commands": [
                        ""
                    ]
                },
                {
                    "name": "api:service",
                    "commands": [
                        ""
                    ]
                }
            ],
            {
                "name": "test",
                "commands": [
                    ""
                ]
            },
            {
                "name": "debug",
                "commands": [
                    ""
                ]
            }
        ],

довольно легко.

Другие вопросы по тегам