Индикатор батареи для Slackware.

Намедни озадачился отсутствием индикатора заряда батареи в xfce-4.4.3, который идет в стандартной поставке Slackware 12.2. Плагин, который можно скачать с офф. сайта проекта xfce мне не понравился хотя бы только потому, что тянет за собой ряд зависимостей, захламлять которыми машину как-то не хочется, плюс установить удалось только одну из версий, которая толком и не работала. С другой стороны, на машинке уже установлена libnotify, которая позволяет выводить всплывающие уведомления, так почему бы не вспользоваться ей. Решение и реализация заняли всего 10 минут.

1. Определяемся, где у нас лежит информация о батарее.

$ cat /proc/acpi/battery/BAT1/state — информация о состоянии, отсюда будем брать текущий заряд.
$ cat /proc/acpi/battery/BAT1/info — общая информация, отсюда будем брать общую емкость, для вычисления процентов.
Возможно у Вас путь будет немного другой, например /proc/acpi/battery/BAT0/state

2. Пишем скрипт.

Первое что пришло на ум, это perl, хотя уверен, реализовать такое легко и на bash


#!/usr/bin/perl -w
my ($file1,$file2,@data,$damage,$current);
#читаем файл с информацией о батарее
open F1, '/proc/acpi/battery/BAT1/info'; while (<F1>) { $file1 .= $_; }; close F1;
open F2, '/proc/acpi/battery/BAT1/state'; while (<F2>) { $file2 .= $_; }; close F2;
#выбираем интересующие нас данные
return unless @data[0] = $file1 =~ /design\scapacity\:\s+(\d+)\s\w+/;
return unless @data[1] = $file1 =~ /last\sfull\scapacity\:\s+(\d+)\s\w+/;
return unless @data[2] = $file2 =~ /remaining\scapacity\:\s+(\d+)\s\w+/;
#считаем проценты
$damage = 100-(@data[1]/40);$damage = sprintf("%.1f",$damage);
$current = (@data[2]*100)/@data[1];$current = sprintf("%.1f",$current);
#вызываем внешнюю программу для отображения данных
`notify-send -u critical -t 7000 -i battery "
\tТекущий заряд батареи $current%
\n\tИзнос батареи $damage%"`

Вот собственно и все, при вызове этой программки получаем нечто подобное:

всплывающее уведомление

При желании можно вызывать скрипт посредством bash скрипта, а если сделать симлинк на этот скрипт в /usr/local/bin, то можно, в добавок, повесить вызов уведомления на хоткей.

Индикатор батареи для Slackware.

Индикатор батареи для Slackware.: 2 комментария

  1. kikaha:

    вторая команда выдала мне:
    present: yes
    design capacity: 4000 mAh
    last full capacity: 65376 mAh
    battery technology: rechargeable
    design voltage: 11100 mV
    design capacity warning: 200 mAh
    design capacity low: 120 mAh
    capacity granularity 1: 264 mAh
    capacity granularity 2: 3780 mAh
    model number: Primary
    serial number:
    battery type: Lion
    OEM info: ACER

    собственно, и показателям встроенного индикатора я не особо верил после 2 лет эксплуатации батареи: стоит только выключить ноут из розетки, как появляется надпись «осталось заряда на 117 часов **надцать минут» — в общем, где-то дурят, а где — не пойму. батарея полудохлая, но минут 5 держит, однако определить её реальные параметры уже видимо невозможно 🙁

    1. gwinn:

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *