Добавление информативной строки состояния в полноэкранное окно терминала

Кратко: я хотел бы добавить строку состояния, которая прикрепляется либо к нижней, либо к верхней части окна моего терминала и предоставляет наглядную информацию (например, время автономной работы, мощность сигнала, количество электронных писем, $PROMT_COMMAND и т. д.). По сути, это позволит открыть терминал в полноэкранном режиме и получить всю информацию, которую я, возможно, захочу легко просмотреть, в то же время позволяя мне продолжать всю необходимую работу с терминалом в обычном режиме. В основном я использую Mac, но предпочел бы решение, совместимое с * nix.

Более подробно (и что я уже пробовал): я большой пользователь терминала и только недавно (в течение дня или двух) начал использовать tmux, поэтому я понимаю, что многие из вас могут предложить мне попробовать использовать мультиплексор, такой как screen или tmux . В то время как tmux начинает становиться очень полезным для меня, у него есть свои ограничения, такие как ограничение на строку состояния с одной строкой, что не идеально, так как я хотел бы, чтобы панель вкладок оставалась чистой, чтобы половина ее не была съедена информацией. . Кроме того, я хотел бы добавить $PROMPT_COMMAND, которая отображает текущий каталог и может легко занять большую часть строки состояния в зависимости от того, где я нахожусь в системе.

Кроме того, я немного попробовал экран, который позволяет вам иметь жесткий статус и заголовок, близкий к тому, что я хочу, но его разработка, похоже, остановилась. Кроме того, патч для вертикального разделения панелей портит графику двухстрочной строки состояния (очень некрасиво).

Поэтому я думаю, что было бы предпочтительнее иметь запущенный фоновый процесс, который обновляет строку состояния в части экрана над моим мультиплексором ... если, конечно, tmux не имеет реализации многострочной строки состояния, с которой я еще не разобрался. .

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


person scicalculator    schedule 10.08.2011    source источник


Ответы (2)


Пара вариантов:

  1. Вы можете запустить tmux внутри tmux (с разными конфигурациями; вы можете использовать -f для указания файла конфигурации.)

  2. Вы можете использовать заголовок вкладки, хотя он, вероятно, недостаточно широк, чтобы включить все, что вы хотите. (Даже если есть только одна вкладка, вы можете отобразить панель вкладок в полноэкранном режиме). Вам нужно указать tmux передать заголовок; см. set set-titles и set set-titles-string.

Я бы посоветовал вам использовать оба варианта: поместите текущий каталог в заголовок вкладки, а всю остальную информацию о состоянии в отдельную строку, поддерживаемую tmux, таким образом, вы можете просто пропустить вторую часть, когда не используете полноэкранный терминал. .

person Nicholas Riley    schedule 10.08.2011
comment
Спасибо за ответ! Во-первых, изначально я использовал заголовок вкладки, но, как вы сказали, он слишком мал, чтобы содержать нужную мне информацию. В качестве альтернативы я рассматривал эту идею (запуск tmux внутри tmux или экрана). Это, пожалуй, лучший вариант. Некоторые проблемы, которые я вижу, и не знаю простого решения: 1. не будут ли путаться привязки клавиш между вложенными окнами tmux? 2. есть ли способ, чтобы начальный сеанс tmux автоматически открывал экземпляр sub-tmux? 3. влияет ли это на отсоединение окон? - person scicalculator; 10.08.2011
comment
1. Вы можете изменить префикс команды tmux (set -g prefix). 2. Конечно, вы можете запустить tmux с чем-то вроде tmux new-session -n tmux 'TMUX= exec tmux' (конечно, предоставить разные файлы конфигурации с -f для каждого). 3. Внешний tmux завершится, когда вы отсоедините внутренний tmux, поскольку все (1) его клиенты ушли. - person Nicholas Riley; 10.08.2011
comment
Вау, я провел много испытаний, и, безусловно, это может быть оптимальным решением. Однако я обнаружил, что для доступа к префиксу вложенных tmux-сессий C-b необходимо выполнить 2 раза для 2-го вложенного tmux (работает только для 2). Это потому, что каждый из них наследует исходный файл родителя. Итак, если я напишу: tmux -f outer.conf new 'TMUX= exec tmux -f inner.conf', они все возьмут source-file outer.conf. Кажется, я не могу указать отдельный файл conf. Интересное замечание: если я подключаюсь к удаленному серверу по ssh и запускаю tmux, он работает. Есть идеи локального решения? - person scicalculator; 10.08.2011
comment
Ах ах! Я обнаружил, что опция -L socket-name позволит мне создать более одного сервера (и, следовательно, более одного source-file). Это приведет меня к тому, что мне нужно. Когда я создам сценарий для правильного создания сеанса и повторного подключения (к обоим), я опубликую свои результаты. Большое спасибо за невероятно полезные советы и обсуждение! - person scicalculator; 10.08.2011
comment
Извините, пропустил это — вам нужно предоставить tmux другой сокет для использования. Так что что-то вроде tmux -f outer.conf new 'TMUX= exec tmux -L inner -f inner.conf' должно работать. - person Nicholas Riley; 10.08.2011
comment
Ага, это именно то, что нужно. Есть только еще одна вещь, которую я мог бы добавить к этому обсуждению для других, столкнувшихся с этим (или для меня, если я забуду). Если вы отсоединитесь с помощью префикса inner-tmux, он завершится, но если вы отсоединитесь с помощью префикса external-tmux, он отсоединится и может быть повторно присоединен, сохраняя как внутренние, так и внешние сеансы tmux. Ваше здоровье - person scicalculator; 10.08.2011

У меня есть информация о батарее,

Вы можете получить копии необходимых вам файлов по адресу

https://github.com/richo/dotfiles/blob/master/tmux.conf и https://github.com/richo/dotfiles/blob/master/bin/battery

(Убедитесь, что батарея является исполняемой и находится в вашем PATH)

Он покажет вам процент заряда батареи синим (зарядка), красным (разрядка) или вообще не покажет (полностью заряжен)

person richo    schedule 10.10.2011