Информация о батарее в GNU screen и другие прелести hardstatus

Прочел на хабре заметку про вашего мальчика о zshтынц про размещение заряда батарее в правом приглашении.
Всё бы ничего, но не стоит забывать что для того что бы увидеть заряд батарее надо сделать какое-либо действие что бы отобразилось новое приглашение. Да и с отображением времени в строках приглашения дела обстоят аналогичным образом. Это несколько напрягает когда мы не часто в консоли что-то выполняем...

Но сама идея полезная, и используется мною с тех пор как у меня появился ноутбук. Посему хочу рассказать о своей красноглазой реализации отображения информации об аккумуляторе в консоли. Реализовано всё через GNU Screen и его статусную строку.
Добавляем в конфиг скрина backtick 1 60 60 /путь/к/скрипту (жирным выделен номер команды), а в приглянувшееся место hardstatus или caption добавляем номер команды %1`. Вот, к примеру, мой скрипт писанный судя по дате изменения пару лет назад и до сих пор верно несущий службу
#/bin/sh

#определяем цвета
GREEN="\005{+b d.}"
YELLOW="\005{+b d.}"
RED="\005{+Bb r}"
CLEAN="\005{-Bb d.}"

#определяем номер батарее
BT=1

# ну  и определение и разкраска текущего состояния
REM=`grep 'remaining capacity' /proc/acpi/battery/BAT${BT}/state | awk '{print $3}'`
LAST=`grep 'last full' /proc/acpi/battery/BAT${BT}/info |awk '{print $4}'`

ADAPTERSTATUS=`cat /proc/acpi/ac_adapter/ADP${BT}/state | grep 'state' | awk '{ print $2 }'`
if [ $ADAPTERSTATUS = "on-line" ]
then 
    BATCURRENT=$(echo $REM $LAST | awk '{printf "%d%%", ($1/$2)*100'})
    POWERLINE=$(echo "${GREEN}AC: $BATCURRENT$CLEAN")
else
    PRESENT=`grep 'present rate' /proc/acpi/battery/BAT1/state | awk '{print $3}'`
    BATCURRENT=$(echo $REM $LAST $PRESENT | awk '{printf "%d", ($1/$2)*100}')
    BATLEFT=$(echo $REM $LAST $PRESENT | awk '{printf "%d", ($1/$3)*60}')
    if [ $BATCURRENT -ge 40 ]
    then
        POWERLINE=$(echo "${GREEN}Battery: $BATCURRENT%$CLEAN")
    fi
    if [ $BATCURRENT -le 39 ]
    then
        if [ $BATCURRENT -ge 20 ]
        then
            POWERLINE=$(echo "${YELLOW}Battery: $BATCURRENT%$CLEAN")
        fi    
    fi
    if [ $BATCURRENT -le 19 ]
    then
        POWERLINE=$(echo "${RED}Battery: $BATCURRENT%$CLEAN")
    fi
fi
# собсвтенно сам вывод
echo -e "$POWERLINE "

Если будите использовать тот скрипт что приведен на хабре не забывайте что цвета для screen несколько иначе определяются и используйте echo -e.
Вообще, в hardstatus или caption скрина можно выводить что угодно, о чем я непрестанно всем напоминаю. Даже неоднократно писал в блог об этом, например:Так же можно выводить иксовую раскладку клавиатуры (к примеру через skbbacktick 1 0 0 skb), текущую композицию в mpd (в гит ветке скрина с руским языком при выводе в статус наконец всё в порядке), последние события из /var/log/messages.log, да в общем всё что душе угодно, ибо в этом плане screen очень похож на dzen2.

Интересно, а как в tmux обстоят с этим дела? Что-то я видел там про status-left/-right, но все лениво его опробовать в бою (слишком уж привык к скрину), хотя сегодня увидел на линсовете конфиг тмукса с клавишами скрина — надеюсь это поспособствует мне в его изучении.
Andrey 11-11-2011
Не флейма ради.
А вы сидите в чистой конслоли без Иксов, что не видно заряд батарии?

P.S. У меня в консоли такое приветствие.

[/usr/local/src@andrey-TJ65/13:37:41]
andrey$
muhas 11-11-2011
В иксах, но, к примеру, на нетбуке консоль если открыта то на весь экран скрывая всякие панельки и т.п. видна лишь консоль (иксовая, но всё же только консоль) со скрином внутри - в таких случаях ничего не видно. именно поэтому у меня в скрине помимо окон самого скрина уведомления из mcabber, инфа о батареи, время и текущая громкость
Von 11-11-2011
tmux успешно справляется с отработкой скриптов и выводом информации в статусной строке. Собственно, я даже для вывода la скрипт писал - tmux, в отличие от screen, сам этого делать не умеет.
muhas 11-11-2011
знать бы ещё что такое la =)
про вывод скриптов в тмуксе я вроде сообразил, загуглил примеры конфигов увидел скрипты в тех же status-right/left осталось понять может ли он выводить непрервыный потоки которые отдают skb или тот же ping. если да,то пора мне не только мельком поглядывать за тмуксом, а уже очень плотненько сесть за его изучение (тем более конфиг с линсовета мне как любителю скрина должен в этом помочь)
Von 11-11-2011
load average же, с обновлением раз в секунду. :)
Более сложные вещи не прикручивал - мне они ни к чему.
muhas 11-11-2011
в скрине la показывается в статусе одной переменной %l
жаль что не прикручивал... надеюсь дойдут у меня руки до тмукса, эх наворочу)
Kirill 13-02-2013
Muhas, подскажите пожалуйста
1) Как можно узнать текущюю громкость?
2) Вы сделали громкость в строке состояния тмукса? Если да, то как?
Использую Ubuntu Release 12.04 (precise).
Заранее благодарен.
muhas 13-02-2013
1) когда-то в screen да в dzen2 выводил так: aumix -q | line | cut -d " " -f 3
для пульсы не знаю, но с альсой работало
2) тмуксом не пользуюсь, но вроде как можно в статус выводить своё, подсказать как именно, к сожалению, не могу…