Pilim Linux Mint'te bitmek üzereyken nasıl uyarı alabilirim?


31

Bu bana kabul etmek istediğimden daha fazla olur, ancak bazen gücümün sadece durum çubuğumda göründüğü için azaldığını fark etmiyorum, sonra bilgisayar kapanıyor. Bu olmadan önce beni uyaran büyük bir uyarı istiyorum. Beni uyaracak bir yolu var mı? Ubuntu'nun alçakta olduğunu söyleyen hoş bir açılır pencere var.


Güç yöneticisini masaüstü ortamınızdan "bir şey" yapacak şekilde yapılandırın - bu genellikle "hiçbir şey" den "bir komutu çalıştır" yerine "hazırda bekletme" / "kapat" seçeneğine kadar değişebilir.
Peterph

Hangi masaüstü ortamı?
Renan

1
@peterph Yalnızca "Kapat" ve "Hazırda Beklet" seçeneklerine sahibim.
Travis Reeder

@Ranan tarçın çalışıyor.
Travis Reeder

@TravisR üzgünüm, kritik pil seviyesine ulaşıldığında davranışı yapılandırmak
istedim

Yanıtlar:


26

bir senaryo yaz!

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

Daha sonra birkaç dakikada bir çalıştırmak için cron. Ama evet, GUI aracılığıyla yapabilirseniz, bu muhtemelen bunu yapmanın çok daha iyi bir yoludur.


Bu yöntem, küçük bir ayarlamayla hemen hemen herhangi bir dağıtım / masaüstü ortamı kombinasyonuna uygulanacağı avantajına sahiptir.
Perkins,


7

re: hdgarrood'un cevabı, cronkoşmak için yapılan ayarın notify-sendaslında acı verici titiz olduğu ortaya çıktı. (Ben crontab -eneyse ki varsayılan olarak yeniden başlatmalar boyunca devam ediyor bence ). Birkaç rehber izledim, sonunda tam olarak neyin düzelttiğinden emin değilim, ancak kontrol cihazını her 5 dakikada bir çalıştırmak için tam kurulumum:

$ 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

Emin olun chmod +xbash komut dosyaları.


5

Şimdi aşağıdakileri çalıştırıyorum:

$ 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

Gördüğünüz gibi bu sadece bazı değişikliklerle orangenarwhals kodu:

  • dbus hilesi yok, nedense ihtiyacım yoktu
  • bazı "sabitleri" kodun başında değişkenlere koyun
  • uyarıları yalnızca pil şarj olmadığında uyguladı (bir bak, man testdiğer şeylerin yanı sıra nasıl AND yapılacağını da açıklar.)
  • ilave simgesi (böyle bir şeyle sisteminizde bazı adaylar bulmak: $ find /usr/share/icons/ -iname "*batt*low*")
  • milisaniye cinsinden sona erme süresi

chmod +xSenaryolarını unutma , daha sonra doğrudan cron (tab) 'dan çalıştırabilirsin, gerek yok sh.

(Bu, Xmonad kullanarak Ubuntu'da çalışır.)


3

Görünüşe göre Cinnamon'i çalıştırdığınız için, sadece Monitoring and Shutdown (BAMS) özellikli Battery Applet'i kurun .

Bir panele sağ tıklayın → + Panele Uygulama EklemeKullanılabilir küçük uygulamalar (çevrimiçi) , arama widget'ına 'BAMS' yazın ve kurun ve yapılandırın.

Flashiest değil, ama şimdiye kadar dizüstü bilgisayarımı istemeden çıkardığımda beni uyardı.


2

Küçük büküm - on Knoppix (OP tarafından kullanılan Mint değil), notify-send kullanılamıyor (libnotify-bin paketi kurulu değil), bu yüzden şunu uyarmak için yararlı buldum:

xmessage Battery low & mplayer /usr/lib/libreoffice/share/gallery/sounds/beam.wav

Bunu sadece LXDE'nin Pil İzleyici panelinin Alarm Komutu'na attım, bir senaryoya gerek yok.

Bu, LibreOffice'in kurulu olduğunu varsayar, ancak .wav güzel bir düşük güç sesi çıkarır. Knoppix'te neredeyse hiç .ogg's yok.


1
biri zenityyerine xmesssageve aplayonun yerine daha hoş olabilirmplayer
Matija Nalis

1

Ben de aynı problemi yaşadım ve bir geçici çözüm buldum. Linux Mint depolarından GKrellM adlı bir uygulamayı yükledim. Makinenizdeki birçok şeyi izler ve batarya vardır. Alarmlar ile kurulum, benim için bir cazibe gibi çalışır.

daha fazla bilgi:

http://www.gkrellm.net/


GKrellM benim için işe yaramadı. Çok eski ve bildirim sistemi düzgün çalışmıyor.
Bemipefe

1

Sorun KDE ortamında ilgilidir. MintMAYA KDE_version ile aynı sorunu yaşıyorum. Mint9_Gnome ile çalıştığımda, belirli bir düşük güç seviyesine ulaşıldığında çok kullanışlı bir pop-up ortaya çıktı (yeni kurulumlarda otomatik olarak yapılandırılmış out_of_the_box). Çok çok sinir bozucu tavsiye olmadan kapatıldı ve hiçbir yardım bile çok googling kurulmuş :(


1

Aynı sorun bende ve bu gerçekten sinir bozucu. BatteryAlert.sh betiğini kullanarak çözdüm :

#!/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 kullanıyorum, ancak her masaüstü ortamında kullanabilirsiniz. Bunu root kullanıcısı olarak çalıştırmak veya crontab sözdizimi ile delirmek zorunda değilsiniz. Sesli bir uyarı istiyorsanız yalnızca bildirim sesini değiştirmeniz gerekir. Masaüstü ortamı başladığında betiği otomatik olarak başlatmak istemiyorsanız, betiği BatteryAlertLauncher.sh betiğiyle birlikte $ USER / bin klasörüne koyun :

#!/bin/bash

function getRunningProcesses 
{
    ps -aux | grep -v grep | grep BatteryAlert.sh
}

if [[ -n "$(getRunningProcesses)" ]] ; then
    exit
fi

BatteryAlert.sh&

Çalıştırılabilir olduklarından emin olun:

chmod u+x $USER/bin/BatteryAlert*

Sonra sadece aşağıdaki komutu çalıştırın:

ln -s /home/$(USER)/bin/BatteryAlertLauncher.sh .config/autostart/

Bu komutu girerek uyarı betiğini bash'den elle de çalıştırabilirsiniz:

BatteryAlertLauncher.sh

0

Gnome Shell veya Tarçın yüklü olmadığı için, kaynağa erişmek çok pratik olabileceğinden doğrudan yardımcı olamam, çünkü JavaScript ile basit bir eklenti eklemek oldukça kolay.

Açmalısın:

/usr/share/cinnamon/js/ui/status/power.js

ve aramak percentageText - sonradan, bir pop-up mesajı veya uyarı eklemek için yapabilmelidir.


İlginç, bu şeylerin javascript'te olduğunu bilmiyordum. Ama / status dizini ve power.js yok / tarçın / js dizinlerinde herhangi bir yerde bulabilirim.
Travis Reeder,

Kök kullanarak onu aramaya çalıştınız mı:find / -type f -name power.js
nesyphlopanuri

Bunu koştum, hiçbir şey bulunamadı.
Travis Reeder,

0

Gnome ile Arch linux'umda DE olarak böyle yaptım:

#!/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

Kelimesi ACADde STATUS=$(cat /sys/class/power_supply/ACAD/online)dizüstü markasına bağlı olarak değişecektir. Kucağınızın bir AC Adaptörüne takılı olup olmadığını bulmak için kullanılır. İşte benim crontab nasıl görünüyor:

* * * * * bash <path to script>

Komut dosyasını çalıştırılabilir hale getirmeyi unutmayın chmod u+x <path to script>


0

Bu basit olanı benim için iyi çalışıyor, sadece basit bir acpipaketin kurulması gerekiyordu (deamon, belirli masaüstü ortamları veya benzeri).

Kullanıcı crontab ( crontab -e) 'da şunları yazın (hepsi bir satırda, burada okunabilirlik için bölünmüş):

*/3 * * * * acpi --battery | 
    awk -F, '/Discharging/ { if (int($2) < 15) print }' | xargs -ri 
    env DISPLAY=:0 zenity --warning --text "battery low\n{}"

Yaptığı şey, pil seviyesini kontrol etmektir ( acpi --battery) ve şarj cihazına bağlı değilseniz ( /Discharging/) ve eğer pil < 15% ise, her 3 dakikada bir ( */3) zenitysize hata mesajı gönderir .

Zenity yerine xmessage(gerçekten spartan makinede) ya da aplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wavsesli bildirimler için bile kullanabilirsiniz ( klavye klavyenizi kesintiye uğratmayacağına ve bilgisayar DISPLAY=:0korsanlığı olan çok kullanıcılı dizüstü bilgisayarlar için bile çalışacak avantajına sahip). başarısız olur)

Makineyi belirli bir kritik düzeyde askıya al / hazırda bekletme modunu da gerekirse, bu cevaba bakın


0

BAMS adlı bir uygulamayı indirin. Batarya sizin belirlediğiniz belli bir seviyeye ulaştığında sizi otomatik olarak uyaracaktır. Bu en basit çözümdür.


0

Buradaki tüm cevaplardan elde edilen bilgilerin yardımıyla bir senaryo hazırladım ve GitLab'daki bir depoya koydum.

Aşağıdaki durumlarda bildirimleri gösterir:

  • Kablonuz prizden çıkarılmış ve pil% 30'un altına düşüyor
  • Kablonun fişi takılı ve pil% 80'in üzerine çıkıyor

https://gitlab.com/gitaarik/battery-health-notifications

Daha geniş bir yelpazedeki ortamlarda çalışmasını sağlayacak katkılar çok açıktır.

Bunu yazarken ki komut dosyası:

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.