Як я можу отримати повідомлення, коли акумулятор мого ноутбука повністю заряджений?


12

Іноді мій зарядний пристрій залишається підключеним до ноутбука навіть після закінчення зарядки.

Чи є спосіб отримати спливаюче повідомлення / повідомлення, коли мій акумулятор заряджається через зарядку або є якесь програмне забезпечення / пакет, який може забезпечити функціональність?

Відповіді:


7

Встановіть acpiпакет. Тепер поставте це return0whencharging.shі зробіть його виконуваним:

#!/bin/sh
acpi -V
if cat /proc/acpi/battery/BAT1/state | grep "charging state" | grep -vE ":[\t ]*charging$"; then
    exit 1
else
    exit 0
fi

Якщо ви echo -e "\a"видаєте звук, почніть це, коли хочете переглянути стан акумулятора:

watch --beep return0whencharging.sh

Якщо він не робить ніяких звуків або ви хочете повідомлення і більш тривогу , ніж будь-який годинник можуть надати, встановити libnotify-binі mpvі використовувати замість цього:

while return0whencharging.sh; do sleep 1; done; notify-send "Finished charging" && mpv -loop /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga

Пояснення :

Якщо ви подивитеся на сторінку man для grep, ви побачите, що це -vвідміняє відповідність, а отже, і код повернення / статусу. -Eозначає, що це регулярний вираз. [\t ]в регулярному виразі (регулярний вираз) означає «вкладку або простір». Наступна зірка означає, що це "вкладка або пробіл 0 або більше разів". Кінцевий "$" означає, що він повинен відповідати кінці рядка. Підсумковий grepозначає, що рядки НЕ закінчуються на ":", будь-яка кількість вкладок або пробілів, а потім "зарядка" і кінець рядка повинні зробити grepвихід із кодом статусу 0. Це означає, що grepповерне 1, доки комп'ютер не буде зарядка. ifЧи виконає це перший філія , коли код стану 0,grepexit 1коли grep виходить з 0 і exit 0коли grep існує ненульовий.


якщо ви хочете, щоб ці команди були пояснені, просто запитайте мене
Janus Troelsen

я не впевнений, що робитиме ця греп -vE ": [\ t] * зарядка $". Поясніть, будь ласка, команди. спасибі
Ankit

додано пояснення
Янус Трольсен

А де цей return0whencharging.shфайл? Або якщо я створюю її, чи є певне місце, яке я повинен зберегти?
Парто

@AvatarParto: не важливо, де. ім'я не має значення, якщо ви його всюди змінюєте
Janus Troelsen

7

Я написав невеликий сценарій, який буде робити це:

скріншот


Сценарій:

#!/usr/bin/env bash
while true
do
    export DISPLAY=:0.0
    battery_percent=$(acpi -b | grep -P -o '[0-9]+(?=%)')
    if on_ac_power; then
        if [ "$battery_percent" -gt 95 ]; then
            notify-send -i "$PWD/batteryfull.png" "Battery full." "Level: ${battery_percent}% "
        fi
    fi
    sleep 300 # (5 minutes)
done

Установка:

Виконати:

sudo apt-get install acpi
git clone https://github.com/hg8/battery-full-notification.git
cd battery-full-notification/
chmod +x batteryfull.sh

Скопіюйте сценарій у ~/binпапку ( чому папка ~ / bin? ):

cp batteryfull.* ~/bin

Або скопіюйте його, /usr/local/binякщо ви хочете, щоб він був доступний для всіх користувачів на вашому комп’ютері:

cp batteryfull.* /usr/local/bin

Потім додайте batteryfull.shскрипт як додаток для запуску:

  • Відкрийте тире
  • Шукайте програми запуску
  • Двічі клацніть піктограму
  • Клацніть Addта заповніть так:

    програма запуску акумулятор


0

Ось Crontab, який я використовую

  1. Повідомте, якщо батарея повна (дорівнює 100%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -eq 100 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Full"; fi
    
  2. Повідомити , якщо акумулятор з низьким (менше або дорівнює 10%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -le 10 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Low"; fi
    

Приклад зображення сповіщення:

Приклад зображення сповіщення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.