- PVSM.RU - https://www.pvsm.ru -

Консольный комфорт, снова

Консольный комфорт, снова [1] Тут [2] хабраюзверь AStahl [3] писал про полезную фичу, — рисование статусбара в консоли, на котором можно вывести часы и какую-либо другую обновляющуюся, полезную(?) информацию. У меня сейчас возникла такая задача, но его метод не понравился и поэтому я сделал свой велосипед-костыль.

На скриншоте tmux [4], у 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 и выносом статусбара в отдельную автоматически-обновляемую функцию (как-нибудь), а пока вот.
Если кто знает другие варианты реализации, как занять неиспользуемый угол консоли чем-либо, — поделитесь пожалуйста.

Автор: Spoofing

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/20396

Ссылки в тексте:

[1] Image: http://www.habrastorage.com/images/2012111821.png

[2] Тут: http://habrahabr.ru/post/148163/

[3] AStahl: http://habrahabr.ru/users/astahl/

[4] tmux: http://tmux.sourceforge.net/

[5] Источник: http://habrahabr.ru/post/159157/