На скриншоте tmux, у tmux’а есть свой статусбар (внизу), но как видно, он уже перегружен необходимой информацией и места не осталось.
Как вариант, можно использовать панель WM или какие-нибудь conky для отображения всего остального (часы и так далее), но это не Ъ, так как исключает возможность использования в нативной (linux) консоли.
Перегружать информацией еще и PS1 тоже не вариант.
Остается только всегда пустующий правый верхний угол консоли, и на помощь приходят Escape-коды для управления курсором.
$’\e[s’ — Запоминает позицию курсора.
$’\e[<строка>;<символ>f’ — Перемещает курсор на указанную позицию.
$’\e[u’ — Возвращает курсор обратно.
Принцип таков, что когда мы нарисовали PS1, — запоминаем позицию курсора, перемещаем на (первую строку) и на (ширину терминала минус количество символов текста), пишем текст и возвращаемся обратно к PS1.
И например, echo -en $’\e[s’$’\e[1;’$((COLUMNS-8))’f’"habrahabr"$’\e[u’ напишет слово habrahabr в правом верхнем углу терминала.
Засунув это в дело в PS1 и экранировав \$ функции, — функции будут выполняться после каждой команды.
Все те же часы:
PS1="[\u@\h \W]\$ \[\e[s\]\[\e[1;\$((${COLUMNS-80}-4))f\]\$(date +%H:%M)\[\e[u\]"
И что еще можно разместить, — дело ваше.
Минусы:
- Статусбар обновляется не сам по себе, а только после каждого выполнения команды.
- Печатаемый текст заезжает на «статусбар»
Но мы работаем над этим ©, думаю, еще поэксперементировать с PROMPT_COMMAND и выносом статусбара в отдельную автоматически-обновляемую функцию (как-нибудь), а пока вот.
Если кто знает другие варианты реализации, как занять неиспользуемый угол консоли чем-либо, — поделитесь пожалуйста.
ссылка на оригинал статьи http://habrahabr.ru/post/159157/
Добавить комментарий