인정하고 싶은 것보다 이런 일이 더 많이 발생했지만 때로는 상태 표시줄에 배터리가 표시되고 컴퓨터가 종료되기 때문에 배터리가 부족해지는 것을 눈치채지 못할 때도 있습니다. 이런 일이 발생하기 전에 큰 경보를 울리고 싶습니다. 나에게 생각나게 하는 방법이 있나요? Ubuntu에는 배터리가 부족해지고 있음을 알려주는 멋진 팝업 창이 있습니다.
답변1
스크립트를 작성하세요!
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 10 ]
then
notify-send "Battery low" "Battery level is ${battery_level}%!"
fi
그런 다음 몇 분마다 실행되도록 하세요. 하지만 그렇습니다. GUI를 통해 수행할 수 있다면 아마도 더 나은 접근 방식일 것입니다.
답변2
답변: hdgarrood의 답변, 설정 cron
및 실행은 notify-send
실제로 매우 까다롭습니다. (다행히도 crontab -e
기본적으로 재부팅 후에도 지속되는 것 같습니다.) 몇 가지 가이드를 따랐고 결국 무엇이 문제를 정확히 해결했는지는 모르겠지만 다음은 5분마다 검사기를 실행하는 전체 설정입니다.
$ crontab -e
*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif
$ cat .notify-send_setup
#!/bin/bash
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus
exit 0
$ cat .battnotif
#!/bin/bash
export DISPLAY=:0
XAUTHORITY=/home/nrw/.Xauthority
if [ -r "$HOME/.dbus/Xdbus" ]; then
. "$HOME/.dbus/Xdbus"
fi
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
# I tried to only notify when not charging, but could not get it to work
# STATUS=$(cat /sys/class/power_supply/ADP1/online)
# if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
if [ $battery_level -le 15 ]
then
/usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
echo 'batt low' >> /home/nrw/cron.log
fi
echo 'ran batt' >> /home/nrw/cron.log
chmod +x
Bash 스크립트를 확인하세요 .
답변3
여기에 있는 모든 답변의 모든 정보를 사용하여 스크립트를 만들어 GitLab의 저장소에 넣었습니다.
다음과 같은 경우 알림이 표시됩니다.
- 데이터 케이블이 분리되어 있고 배터리 전원이 30% 미만입니다.
- 케이블이 연결되어 있고 배터리 충전량이 80% 이상입니다.
https://gitlab.com/gitaarik/battery-health-notifications
더 넓은 맥락에 적용할 수 있도록 기여해 주시면 더욱 좋습니다.
작성 당시의 스크립트는 다음과 같습니다.
#!/bin/bash
# Run this script as a cronjob every 5 minutes or so, to get notifications when
# battery percentage goes below 30% or above 80%.
# Cronjob line example:
# */5 * * * * /bin/bash /path/to/battery_health_notifications.sh
# This line is to make notify-send always work, also when run in a crontab.
# https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab/346580#346580
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ | tr '\0' '\n')
BATTERY_PATH=$(upower -e | grep battery)
LINE_POWER_PATH=$(upower -e | grep line_power)
BATTERY_PERCENTAGE=$(upower -i $BATTERY_PATH | grep 'percentage:' | awk '{ print $2 }' | sed 's/%//')
CABLE_PLUGGED=$(upower -i $LINE_POWER_PATH | grep -A2 'line-power' | grep online | awk '{ print $2 }')
if [[ $CABLE_PLUGGED == 'yes' ]]; then
if [[ $BATTERY_PERCENTAGE -gt 80 ]]; then
notify-send --urgency=critical "Battery optimization" "Battery reached 80%, unplug the power cable to optimize battery life."
fi
else
if [[ $BATTERY_PERCENTAGE -lt 30 ]]; then
notify-send --urgency=critical "Battery optimization" "Battery is below 30%, plug in the power cable to optimize battery life."
fi
fi
답변4
분명히 Cinnamon을 실행하고 있으므로 설치하기만 하면 됩니다.모니터링 및 종료 기능을 갖춘 배터리 애플릿(BAMS).
패널을 마우스 오른쪽 버튼으로 클릭 →+ 패널에 미니 프로그램 추가→사용 가능한 애플릿(온라인), 검색 위젯에 "BAMS"를 입력한 후 설치하고 구성하세요.
가장 화려하지는 않지만 지금까지는 실수로 노트북의 플러그를 뽑았을 때를 상기시켜줍니다.