Feature #599

Шаблон для app-misc/screen

Added by Михаил Гагауз over 10 years ago. Updated about 10 years ago.

Status:New Start:08/20/2013
Priority:Normal Due date:
Assignee:Alexander Tratsevskiy % Done:

0%

Category:Desktop Spent time: -
Target version:-
Votes: 3

Description

Привет
Нашел пару минут свободных, и как и обещал - выкладываю свои шаблоны с описанием что к чему.
Надеюсь, вы примите их в апстрим

app-misc/scren

Приложил только сами .screenrc файлы, все директории и .calculate_directory-файлы созданы в соответствии с деревом шаблонов в оверлее.
Краткое описание файла:

backtick 1 1 1 awk '/^MemTotal:/{mt=$2}/^MemFree:/{mf+=$2}/^Buffers:/{mf+=$2}/^Cached:/{mf+=$2}/SwapTotal:/{st=$2}/^SwapFree:/{sf=$2}END{printf("Mem:%i/%i", (mt-mf)/1024, mt/1024);su=st-sf;if(su)printf("|Swp:%i/%i", su/1024, st/1024)}' /proc/meminfo

backtick 2 1 1 sh -c 'for f in /sys/class/power_supply/BAT*/{energy_{full{,_design},now},status}; do echo -e "$(basename $f): $(cat $f)"; done | awk "BEGIN{max=0;now=0;status=\"+\"}/^energy_full:/{max+=\$2}/^energy_now:/{now+=\$2}/^status: Discharging\$/{status=\"-\"}END{result=100.*now/max;if(result>10)printf(\"%s%2.1f%\n\",status,result);else printf(\"%s%i/%i\n\",status,now/1000,max/1000)}"'

shelltitle '$|sh'
shell -$SHELL
vbell off
startup_message off
defscrollback 10000
caption always "%{Gk}%w%=%{Rk}[%{W}%h%{R}]" 
hardstatus alwayslastline "%{+b rW}$USER@%H%{dd} %= %{kr}%2`%{g}|%{dd}%l|%1`%{g}|%Y-%m-%d%{c}|%c:%s" 
term xterm-256color

Тут параметр hardstatus alwayslastline определяет самую нижнюю строку.
Параметр caption always определяет "заголовок окна".

На заголовок я поместил список окон и непосредственно текст заголовка.
В hardstatus alwayslastline находится:
<username>@<hostname>
<уровень заряда батареи (если есть)>
<load average>|<used mem>/<total mem>|<used swp>/<total swp>|<date>|<time>
Значение показателей памяти и заряда обновляются раз в секунду.

Используемая память считается как (MemTotal - (MemFree + Buffers + Cached))

Батарея считается так мудрёно, т.к. на одном буке может быть несколько батарей. Данный несложный скрипт, чтоб было понятней, можно разложить вот-так

 1 for f in /sys/class/power_supply/BAT*/{energy_{full{,_design},now},status}; do
 2     echo -e "$(basename $f): $(cat $f)";
 3 done | \
 4 awk " 
 5 BEGIN{
 6     max=0;
 7     now=0;
 8     status=\"+\" 
 9 }
10 /^energy_full:/{
11     max+=\$2
12 }
13 /^energy_now:/{
14     now+=\$2
15 }
16 /^status: Discharging\$/{
17     status=\"\" 
18 }
19 END{
20     result=100.*now/max;
21     if(result>10)
22         printf(\"%s%2.1f%\n\",status,result);
23     else
24         printf(\"%s%i/%i\n\",status,now/1000,max/1000)
25 }"

т.е. при заряде <10% Отображаются реальные цифры, а не проценты.

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

Список окон вынес в заголовок окна чтоб при одновременном показе нескольких окон было видно заголовок и номер каждого (как на скриншоте).
<offtop>
Экран разделяется на несколько окон комбинацией клавиш <Ctrl>+<A>,<Shifs>+<S>
Переключение между ними осуществляется по <Ctrl>+<A>,<Tab>
Выход из этого режима - по <Ctrl>+<A>,<Shifs>+<Q>
</offtop>
Конфигурация root-а отличается от конфиги непривилегированного пользователя лишь цветом фона для <username>@<hostname> и цветом скобок вокруг заголовка

 1 
--- /var/calculate/templates/3.1/6_ac_desktop_profile/2-root/app-misc/screen-4.0/.screenrc 2013-08-20 14:49:36.000000000 +0300
2
+++ /var/calculate/templates/3.1/6_ac_desktop_profile/2-user/app-misc/screen-4.0/.screenrc 2013-08-20 14:53:53.096337526 +0300
3
@@ -8,6 +8,6 @@
4 vbell off 5 startup_message off 6 defscrollback 10000 7
-caption always "%{Gk}%w%=%{Rk}[%{W}%h%{R}]"
8
-hardstatus alwayslastline "%{+b rW}$USER@%H%{dd} %= %{kr}%2`%{g}|%{dd}%l|%1`%{g}|%Y-%m-%d%{c}|%c:%s"
9
+caption always "%{Gk}%w%=%{Gk}[%{W}%h%{G}]"
10
+hardstatus alwayslastline "%{+b gW}$USER@%H%{dd} %= %{kr}%2`%{g}|%{dd}%l|%1`%{g}|%Y-%m-%d%{c}|%c:%s"
11 term xterm-256color

.screenrc - /var/calculate/templates/3.1/6_ac_desktop_profile/2-root/app-misc/screen-4.0/.screenrc (897 Bytes) Михаил Гагауз, 08/20/2013 04:47 pm

.screenrc - /var/calculate/templates/3.1/6_ac_desktop_profile/2-user/app-misc/screen-4.0/.screenrc (897 Bytes) Михаил Гагауз, 08/20/2013 04:47 pm

screen_sample.png (508.5 KB) Михаил Гагауз, 08/20/2013 04:47 pm

History

Updated by Андрей Сеник over 10 years ago

Поддерживаю :)
Давно пора "облагородить" такую штуку как screen
Сам подобным, да и именно этим пользуюсь!

Updated by Андрей Сеник over 10 years ago

Михаил, если заменить

term xterm-256color

на
term screen-256color

Пропадают "черные" артефакты в mc, menuconfig и так далее ncurces-based

Updated by Михаил Гагауз over 10 years ago

...
Пропадают "черные" артефакты в mc, menuconfig и так далее ncurces-based

Да, действительно
Для mc это уже давно не актуально (использую кальковскую прозрачную тему), но для menuconfig - весьма полезная опция.
Спасибо, уже исправил в своих шаблонах.

Updated by Alexander Tratsevskiy over 10 years ago

Михаил, а дублирования 'root@localhost' можно избежать? Может в одну строку сделать? Я просто не знаю насколько важно отображать все эти данные.

Долгое время меняю только одну строчку в настройках:

hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %=[ %w ] " 

P.S. Конечно, с отображением терминалов намного удобней чем без них, сразу понятно что ты в скрине.

Updated by Михаил Гагауз over 10 years ago

Михаил, а дублирования 'root@localhost' можно избежать?

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

А то что в [квадратных скобках] - это "заголовок окна"
От указания user@hostname в alwayslastline отказываться нельзя, поскольку далеко не всегда в шапку окна попадает эта информация, а когда у тебя открыта пачка ssh-соединений на разные хосты - важно не перепутать где что выполняешь.
Шапка же сама по себе бывает полезна, думаю это не вызывает возражений.
С другой стороны - если приложение, исполняемое в этом терминале, подглючит, и в шапку попадет мусор - она просто съедет в право за край экрана, не закрывая важных элементов.

Перед заголовком окна, в caption always я поместил список "окон", для того чтоб номер окна был виден в каждой области, при разделении области отображения на два окна (не часто, но такое бывает нужно).

Может в одну строку сделать?

Каждый делает так как ему удобно.
Когда я начинал знакомство со screen, и работал с чужими конфигами, я также работал в режиме "все в одну строку".
Как можно понять - для меня самым удобным оказался приведенный выше вариант.
По моим ощущениям, на мониторах разрешением от 1024х768 и выше, не критично пожертвовать одной дополнительной строкой ради наглядности и удобства пользования.

PS
Что бы я хотел действительно добавить:
я так и не разобрался как цвет шрифта изменять в backtick, Esc-коды также не работают.
А я бы очень хотел, чтоб батарея, la и swap "краснели" при определенных значениях.
Конечно есть мониторинг, но обновлять его раз в секунду - плохая практика.

Updated by Михаил Гагауз over 10 years ago

Андрей Сеник wrote:

Михаил, если заменить

term xterm-256color

на
term screen-256color

Пропадают "черные" артефакты в mc, menuconfig и так далее ncurces-based

Поработал какое-то время с такой заменой.
Артефакты в menuconfig пропали (в mc у меня кальковская прозрачная тема, так что таких проблем нет), но появилась другая проблема - mc некорректно реагирует на хоткеи.
Думаю артефакты в ncurses-based софте меньшее из зол и лучше оставить term xterm-256color

Updated by Alexander Tratsevskiy over 10 years ago

Ещё один интересный глюк. Если term по умолчанию = 'screen', либо 'screen-256color', при запуске vim, в заголовке не отображается изменение. Если же 'xterm' или 'xterm-256color' - заголовок обновляется, пишет [.screenrc (~) - VIM].

Можно ли этот заголовок вынести в заголовок окна, где он и должен быть при запуске в GUI, и где он и есть, если не править настройки?

Updated by Alexander Tratsevskiy over 10 years ago

А какой смысл в screen выводить заряд батареи? Сложно себе представить сервер, работающий автономно. Если же брать работу в ноутбуке, то в дизайне рабочего стола кальки есть верхняя строка, отображающая различного рода информацию, например время (по желанию дату), туда же можно вывести и загруженность процессора, своп и заряд батареи.

Updated by Михаил Гагауз over 10 years ago

Alexander Tratsevskiy wrote:

А какой смысл в screen выводить заряд батареи? ...

Заряд батареи выводится только если батарея присутствует.
Заряд батареи занимает МАКСИМУМ 7 символов (+100.0%)
Да, на верхней панели есть заряд батареи, но он обычно находится вне поля зрения.
Работая-же в консоли - взгляд обычно устремлен на вывод последней команды и набираемую новую команду.
Таким образом - основные показатели всегда находятся в поле зрения и видны периферийным зрением.

Я даже думал перенести часы и основные показатели влево, непосредственно под приглашение терминала, чтоб показатели были все время в поле зрения.
Но для большинства пользователей это будет выглядеть неудобно.
Еще со времен 9х винды пользователь привык видеть "часики и батарейку" в правом углу (не важно - нижнем, или у некоторых в верхнем). Это также сказалось в дизайне и *NIX-овых DE.

Updated by Alexander Tratsevskiy over 10 years ago

В чём проблема собственно, не проворонить заряд аккумулятора? Для этого можно сделать звуковое уведомление при разном заряде, что угодно в общем-то средствами любого скрипта. Какой смысл для этого подключать видимую область экрана терминала?

Пользователь кальки за 7 лет привык, что вся информация выводится в верхней части экрана, панелька нескрываемая, каким образом информация может выйти из поля зрения представить сложно. Кстати, размер шрифта в часах такой, чтобы он оставался видимым с расстояния не менее 2 метров. Это также учитывается.

Updated by Victor Siman'kin about 10 years ago

Михаил Гагауз wrote:

Андрей Сеник wrote:

Михаил, если заменить
[...]
на
[...]
Пропадают "черные" артефакты в mc, menuconfig и так далее ncurces-based

Поработал какое-то время с такой заменой.
Артефакты в menuconfig пропали (в mc у меня кальковская прозрачная тема, так что таких проблем нет), но появилась другая проблема - mc некорректно реагирует на хоткеи.
Думаю артефакты в ncurses-based софте меньшее из зол и лучше оставить term xterm-256color

Точно, проблема с хоткеями в mc есть.
Но, народ, не поверите, term vt100 решает обе проблемы!

Updated by Михаил Гагауз about 10 years ago

Victor Siman'kin wrote:

...
Точно, проблема с хоткеями в mc есть.
Но, народ, не поверите, term vt100 решает обе проблемы!

Пробовал варианты с
term vt100-256color
и
term vt100
в mc
<Shift>+<F6> предлагает удалить вместо переименования
<Shift>+<F5> никак не реагирует, хотя должен предложить перемещение с переименованием

Updated by Victor Siman'kin about 10 years ago

Михаил Гагауз wrote:

в mc
<Shift>+<F6> предлагает удалить вместо переименования
<Shift>+<F5> никак не реагирует, хотя должен предложить перемещение с переименованием

Ну знаете, это придирки уже какие-то, т.к. <Shift>+<F6> идентичен <F6>, а <Shift>+<F5><F5>
А вообще нашёл другой, устраивающий меня (и вас) вариант — вместо xterm-256color использовать xterm-color (без 256).
Работает и указанное вами, и НЕ указанное <Shift>+<F4> — редактирование нового файла.

xterm-color устроил по всем параметрам.
Рекомендую устанавливать по-умолчанию.

Also available in: Atom PDF

Thank you!