이것은 내가 인정하고 싶은 것보다 더 많이 발생하지만 때로는 상태 표시 줄에만 표시되기 때문에 전원이 부족하다는 것을 알지 못하는 경우 컴퓨터가 종료됩니다. 이 일이 발생하기 전에 경고하는 큰 경고를 원합니다. 나에게 경고 할 수있는 방법이 있습니까? 우분투에는 팝업이 낮아지고 있다는 것을 알려주는 멋진 팝업이 있습니다.
이것은 내가 인정하고 싶은 것보다 더 많이 발생하지만 때로는 상태 표시 줄에만 표시되기 때문에 전원이 부족하다는 것을 알지 못하는 경우 컴퓨터가 종료됩니다. 이 일이 발생하기 전에 경고하는 큰 경고를 원합니다. 나에게 경고 할 수있는 방법이 있습니까? 우분투에는 팝업이 낮아지고 있다는 것을 알려주는 멋진 팝업이 있습니다.
답변:
스크립트를 작성하십시오!
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
그런 다음 몇 분마다 실행되도록 cron하십시오. 그러나 GUI를 통해 할 수 있다면 아마도 훨씬 더 나은 방법 일 것입니다.
다시 : 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 스크립트 를 확인하십시오 .
이제 다음을 실행합니다.
$ crontab -e
*/5 * * * * /home/<my username>/bin/checkLowBattery
$ cat /home/<my username>/bin/checkLowBattery
#!/bin/bash
POWERSUPPLY="/sys/class/power_supply/ACAD/online" # could be different on your system!
TOO_LOW=20 # how low is too low?
NOT_CHARGING="0"
ICON="/usr/share/icons/ubuntu-mono-dark/status/24/battery-low.svg" # eye candy
export DISPLAY=:0
BATTERY_LEVEL=$(acpi -b | grep -P -o '[0-9]+(?=%)')
STATUS=$(cat $POWERSUPPLY)
if [ $BATTERY_LEVEL -le $TOO_LOW -a $STATUS = $NOT_CHARGING ]
then
/usr/bin/notify-send -u critical -i "$ICON" -t 3000 "Battery low" "Battery level is ${BATTERY_LEVEL}%!"
fi
exit 0
보시다시피 이것은 약간의 변경 사항이있는 orangenarwhals 코드입니다.
man test
했습니다.$ find /usr/share/icons/ -iname "*batt*low*"
)chmod +x
스크립트를 잊지 말고 cron (tab)에서 직접 실행할 수 있습니다 sh
.
(이것은 Xmonad를 사용하여 우분투에서 작동합니다.)
Cinnamon을 실행하고 있으므로 BAMS (Monitoring and Shutdown)를 사용 하여 Battery Applet을 설치하십시오 .
패널을 마우스 오른쪽 단추로 클릭하고 → + 애플릿을 패널에 추가 → 사용 가능한 애플릿 (온라인) 을 클릭하고 검색 위젯에 'BAMS'를 입력 한 후 설치 및 구성하십시오.
가장 화려하지는 않지만 지금까지 노트북을 실수로 뽑았을 때 이미 경고했습니다.
Knoppix (OP에서 사용하는 것처럼 Mint가 아닌 부여됨) 알림 전송을 사용할 수 없었으므로 (libnotify-bin 패키지가 설치되어 있지 않음) 대신 경고에 유용한 것으로 나타났습니다.
xmessage Battery low & mplayer /usr/lib/libreoffice/share/gallery/sounds/beam.wav
방금 스크립트가 필요없는 LXDE의 배터리 모니터 패널의 알람 명령에 던졌습니다.
LibreOffice가 설치되어 있다고 가정하지만 .wav는 저전력 사운드를 멋지게 만듭니다. Knoppix에는 실제로 .ogg가 없습니다.
zenity
대신 xmesssage
하고 aplay
대신mplayer
나는 같은 문제가 있었고 해결 방법을 찾았습니다. Linux Mint 저장소에서 GKrellM이라는 앱을 설치했습니다. 컴퓨터의 많은 것들을 모니터링하고 배터리가 있습니다. 알람으로 설정하면 매력처럼 작동합니다.
더 많은 정보 :
나는 같은 문제가 있으며 정말 실망 스럽다. BatteryAlert.sh 스크립트 를 사용하여 해결했습니다 .
#!/bin/bash
BATTERY=$(upower -e | grep 'BAT')
while :
do
BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
CABLE=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')
if [[ "$BATTERY_PERCENTAGE" -lt "10" && $CABLE = "no" ]]; then
notify-send --urgency=critical "WARNING: Battery is about to die" "Plug in the power cable"
play /usr/share/sounds/KDE-Sys-Warning.ogg &> /dev/null
fi
sleep 10
done
KDE를 사용하고 있지만 모든 데스크탑 환경에서 사용할 수 있습니다. 루트 사용자로 이것을 실행하거나 crontab 구문에 열중하지 않아도됩니다. 경고음을 원할 경우 알림 소리 만 변경하면됩니다. 데스크탑 환경이 시작될 때 스크립트를 자동으로 시작하지 않으 려면 BatteryAlertLauncher.sh 스크립트를 사용하여 스크립트를 $ USER / bin 폴더에 넣으십시오 .
#!/bin/bash
function getRunningProcesses
{
ps -aux | grep -v grep | grep BatteryAlert.sh
}
if [[ -n "$(getRunningProcesses)" ]] ; then
exit
fi
BatteryAlert.sh&
그것들이 실행 가능한지 확인하십시오 :
chmod u+x $USER/bin/BatteryAlert*
그런 다음 다음 명령을 실행하십시오.
ln -s /home/$(USER)/bin/BatteryAlertLauncher.sh .config/autostart/
다음 명령을 입력하여 bash에서 경고 스크립트를 수동으로 실행할 수도 있습니다.
BatteryAlertLauncher.sh
Gnome Shell 또는 Cinnamon이 설치되어 있지 않으므로 JavaScript를 사용하여 기본적인 확장 기능을 쉽게 추가 할 수 있기 때문에 소스에 액세스하는 것이 훨씬 실용적이기 때문에 직접적인 도움이 될 수 없습니다.
당신은 열어야합니다 :
/usr/share/cinnamon/js/ui/status/power.js
및 검색 percentageText - 그 후, 당신은 팝업 메시지 또는 경고를 추가 할 수 있도록해야한다.
find / -type f -name power.js
이것이 Gnome을 DE로 사용하여 Arch Linux에서 수행 한 방법입니다.
#!/bin/bash
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
/usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi
단어 ACAD
의는 STATUS=$(cat /sys/class/power_supply/ACAD/online)
노트북 제조사에 따라 변경됩니다. 랩이 AC 어댑터에 연결되어 있는지 여부를 찾는 데 사용됩니다. 내 crontab의 모양은 다음과 같습니다.
* * * * * bash <path to script>
스크립트를 실행 파일로 실행하는 것을 잊지 마십시오 chmod u+x <path to script>
이 간단한 acpi
것은 설치해야 할 간단한 패키지 (담당자, 특정 데스크탑 환경 등)가 없어도 나에게 잘 작동합니다 .
사용자 crontab ( crontab -e
)에서 다음을 입력하십시오 (모두 한 줄에, 여기에서는 가독성을 위해 분할되어 있습니다).
*/3 * * * * acpi --battery |
awk -F, '/Discharging/ { if (int($2) < 15) print }' | xargs -ri
env DISPLAY=:0 zenity --warning --text "battery low\n{}"
배터리 수준 ( acpi --battery
)을 확인하고 충전기에 연결되어 있지 않은 경우 ( /Discharging/
) 배터리가 < 15
% 인 경우 3 분마다 ( */3
) 마다 메시지가 표시 zenity
되어 버그가 발생합니다.
zenity 대신 xmessage
(실제 스파르타 컴퓨터에서) 또는 aplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wav
오디오 알림 (예 : 키보드 입력을 방해하지 않으며 여러 세션이있는 다중 사용자 랩톱에서도 DISPLAY=:0
해킹 할 수있는 이점)을 사용할 수 있습니다 실패 할 것이다)
특정 중요 수준에서 컴퓨터를 일시 중지 / 최대 절전 모드로 전환해야하는 경우이 답변을 참조하십시오.
BAMS라는 애플릿을 다운로드하십시오. 배터리가 사용자가 결정한 일정 수준에 도달하면 자동으로 알려줍니다. 가장 간단한 솔루션입니다.
여기에있는 모든 답변의 모든 정보 덕분에 스크립트를 작성하여 GitLab의 저장소에 넣었습니다.
다음과 같은 경우 알림이 표시됩니다.
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