जब मेरी बैटरी लिनक्स मिंट में मरने वाली है, तो मुझे अलर्ट कैसे मिल सकता है?


31

यह मेरे द्वारा स्वीकार किए जाने की तुलना में अधिक होता है, लेकिन कभी-कभी मुझे कम बिजली मिलने की सूचना नहीं होती है क्योंकि यह केवल मेरे स्टेटस बार में दिखाई देता है, फिर कंप्यूटर बस चलता है। मैं एक बड़ा अलर्ट चाहूंगा जो ऐसा होने से पहले मुझे चेतावनी दे। क्या इसके लिए मुझे सचेत करने का कोई तरीका है? उबंटू में एक अच्छा पॉपअप है जो बताता है कि यह कम हो रहा है।


अपने डेस्कटॉप वातावरण से पावर मैनेजर को "कुछ" करने के लिए कॉन्फ़िगर करें - यह आमतौर पर "कुछ भी नहीं", "रन कमांड", "हाइबरनेट" / "पावर ऑफ" से हो सकता है।
पेट्रफ

कौन सा डेस्कटॉप वातावरण?
रेनान

1
@peterph मेरे पास केवल "पावर ऑफ" और "हाइबरनेट" विकल्प हैं।
ट्रैविस रीडर

@ रेयान चला रहा दालचीनी।
ट्रैविस रीडर

@TravisR क्षमा करें, मेरे कहने का अर्थ है कि महत्वपूर्ण बैटरी स्तर पर पहुंचने पर व्यवहार को कॉन्फ़िगर करना
peterph

जवाबों:


26

एक स्क्रिप्ट लिखें!

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 के माध्यम से कर सकते हैं, तो शायद यह करने का एक बेहतर तरीका है।


इस पद्धति का यह लाभ है कि यह थोड़े से बदलाव के साथ किसी भी डिस्ट्रो / डेस्कटॉप पर्यावरण संयोजन के बारे में लागू होगा।
पर्किन्स

मेरे दालचीनी के वातावरण में 'जीयूआई के माध्यम से' करने के लिए मैंने जो सबसे अच्छा तरीका पाया है, वह है एक पैनल में एक एप्लेट जोड़ना: unix.stackexchange.com/a/353505/37552
माइकल शेपर

7

पुन: 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बैश स्क्रिप्ट सुनिश्चित करें ।


5

अब मैं निम्नलिखित कार्य करता हूं:

$ 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अपनी लिपियों को न भूलें , फिर आप उन्हें सीधे क्रोन (टैब) से चला सकते हैं, जिसकी कोई आवश्यकता नहीं है sh

(यह Xmonad का उपयोग करके उबंटू पर काम करता है।)


3

चूंकि आप स्पष्ट रूप से दालचीनी चला रहे हैं, बस मॉनिटरिंग और शटडाउन (BAMS) के साथ बैटरी एप्लेट स्थापित करें ।

एक पैनल पर राइट-क्लिक करें → पैनल में ऐप्पल जोड़ेंउपलब्ध एप्लेट्स (ऑनलाइन) , खोज विजेट में 'बीएएमएस' टाइप करें, और इसे स्थापित और कॉन्फ़िगर करें।

यह सबसे आकर्षक नहीं है, लेकिन अभी तक यह पहले से ही मुझे सचेत कर रहा है जब मेरे पास मेरा लैपटॉप अनजाने में था।


2

माइनर ट्विस्ट - नॉनपिक्स पर (दी गई, ओपी द्वारा मिंट के रूप में इस्तेमाल नहीं किया गया) नोटिफ़ाय-सेंड उपलब्ध नहीं था (libnotify-bin पैकेज स्थापित नहीं है), इसलिए इसके बजाय मैंने अलर्ट के लिए इसे उपयोगी पाया:

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

मैं सिर्फ LXDE के बैटरी मॉनिटर पैनल के अलार्म कमांड में फेंक दिया, कोई स्क्रिप्ट की जरूरत नहीं है।

यह मानते हैं कि आपके पास लिबरऑफिस स्थापित है, लेकिन यह .wav एक अच्छा कम ध्वनि बनाता है। नोपोगिक्स पर व्यावहारिक रूप से कोई .ogg नहीं हैं।


1
zenityइसके बजाय किसी का भी नाम हो सकता है xmesssageऔर aplayइसके बजायmplayer
मतिजा नलिस

1

मुझे वही समस्या थी और मैंने एक समाधान निकाला। मैंने लिनक्स मिंट रिपॉजिटरी से GKrellM नाम का ऐप इंस्टॉल किया। यह आपकी मशीन पर बहुत सारे सामान की निगरानी करता है और बैटरी है। अलार्म के साथ सेटअप, यह मेरे लिए एक आकर्षण की तरह काम करता है।

अधिक जानकारी पर:

http://www.gkrellm.net/


GKrellM ने मेरे लिए काम नहीं किया। यह बहुत पुराना है और सूचना प्रणाली ठीक से काम नहीं करती है।
बेमिफेफ

1

यह मुद्दा केडीई पर्यावरण से संबंधित है। मुझे मिंत्रा KDE_version की समान समस्या है। जब मैंने Mint9_Gnome के साथ काम किया तो एक बहुत ही उपयोगी पॉप-अप दिखाई दिया, जब कम-शक्ति का एक निश्चित स्तर तक पहुंच गया था (ताजा इंस्टॉल पर ऑटो-कॉन्फ़िगर out_of_the_box)। बिना किसी सलाह के बहुत परेशान होना बंद हो गया है और बिना मदद के स्थापित करने से बहुत कुछ बिगड़ जाता है :(


1

मेरे पास एक ही मुद्दा है और यह वास्तव में निराशाजनक है। मैंने 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

मैं केडीई का उपयोग कर रहा हूं लेकिन आप इसे हर डेस्कटॉप वातावरण के साथ उपयोग कर सकते हैं। आपको इसे रूट उपयोगकर्ता के रूप में चलाने या crontab सिंटैक्स के साथ पागल होने की आवश्यकता नहीं है। अगर आपको साउंड अलर्ट चाहिए तो आपको केवल नोटिफिकेशन साउंड को बदलना होगा। यदि आप स्क्रिप्ट को स्वचालित रूप से प्रारंभ करने के लिए नहीं चाहते हैं, जब डेस्कटॉप वातावरण ने USA / bin फ़ोल्डर में BatteryAlertLauncher.sh स्क्रिप्ट के साथ स्क्रिप्ट को शुरू किया है:

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

0

जैसा कि मेरे पास गनोम शेल या दालचीनी स्थापित नहीं है, मैं सीधे मदद नहीं कर सकता क्योंकि स्रोत तक पहुंचना बहुत व्यावहारिक होगा क्योंकि यह जावास्क्रिप्ट के साथ इस तरह के अल्पविकसित विस्तार को जोड़ना आसान है।

आपको खोलना चाहिए:

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

और प्रतिशत के लिए खोज करें - बाद में, आपको एक पॉप-अप संदेश या अलर्ट जोड़ने में सक्षम होना चाहिए।


दिलचस्प है, नहीं पता था कि यह सामान जावास्क्रिप्ट में है। लेकिन कोई / स्टेटस डायरेक्टरी और कोई पॉवर.जेएस मुझे / दालचीनी / जेएस डायरेक्टरी में कहीं भी नहीं मिल सकता है।
ट्रैविस रीडर

क्या आपने इसका उपयोग करके इसे जड़ से खोजने की कोशिश की है:find / -type f -name power.js
nesyphlopanuri

दौड़ा कि, कुछ नहीं मिला।
ट्रैविस रीडर

0

इस तरह से मैंने इसे डे के रूप में गनोम के साथ अपने आर्क लाइनक्स पर किया:

#!/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)लैपटॉप मेकअप के आधार पर बदल जाएगा। इसका उपयोग यह पता लगाने के लिए किया जाता है कि आपकी गोद में एसी एडेप्टर प्लग किया गया है या नहीं। यहाँ मेरा crontab कैसा दिखता है:

* * * * * bash <path to script>

स्क्रिप्ट को निष्पादन योग्य बनाना न भूलें chmod u+x <path to script>


0

यह सरल मेरे लिए अच्छी तरह से काम करता है, बस सरल 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से आपको मैसेज दिखाता है ।

ज़ेनिटी के बजाय आप xmessage(वास्तव में संयमी मशीन पर) का उपयोग कर सकते हैं या aplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wavऑडियो सूचनाओं के लिए भी कुछ ऐसा कर सकते हैं (जिसका फायदा है कि यह आपके कीबोर्ड टाइपिंग को बाधित नहीं करेगा, और कई सत्रों के साथ मल्टी-यूज़र लैपटॉप के लिए भी काम करेगा, जहां DISPLAY=:0हैक करें विफल हो जाएगा)

अगर आपको भी कुछ महत्वपूर्ण स्तर पर मशीन / हाइबरनेट मशीन को निलंबित करने की आवश्यकता है, तो यह उत्तर देखें


0

BAMS नामक एक एप्लेट डाउनलोड करें। जब बैटरी आपके द्वारा तय किए गए एक निश्चित स्तर तक पहुँच जाती है तो यह आपको स्वचालित रूप से सचेत कर देगी। यह सबसे सरल उपाय है।


0

यहां सभी उत्तरों से सभी जानकारी की मदद से मैंने एक स्क्रिप्ट बनाई और इसे 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.