ฉันจะรับการแจ้งเตือนเมื่อแบตเตอรี่แล็ปท็อปของฉันถูกชาร์จจนเต็มแล้วได้อย่างไร


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 ]ใน regex (regular expression) หมายถึง "แท็บหรือพื้นที่" ดาวต่อไปนี้ทำให้มันหมายถึง "แท็บหรือพื้นที่ 0 หรือมากกว่านั้น" ส่วนท้าย "$" หมายความว่าควรตรงกับจุดสิ้นสุดของบรรทัด grepหมายถึงขั้นสุดท้ายว่าบรรทัดที่ไม่ลงท้ายด้วย ":" จำนวนแท็บหรือช่องว่างใด ๆ แล้ว "ชาร์จ" และจุดสิ้นสุดของบรรทัดควรgrepออกจากด้วยรหัสสถานะ 0 ซึ่งหมายความว่าgrepจะกลับ 1 ตราบใดที่คอมพิวเตอร์เป็น การเรียกเก็บเงิน ifจะดำเนินการสาขาแรกเมื่อรหัสสถานะเป็น 0grepexit 1เมื่อ grep ออกจาก 0 และexit 0เมื่อ grep มีค่าไม่เป็นศูนย์


หากคุณต้องการคำสั่งเหล่านี้อธิบายให้ถามฉัน
Janus Troelsen

ฉันไม่แน่ใจว่าสิ่งนี้ grep -vE ": [\ t] * การเรียกเก็บเงิน $" จะทำอย่างไร คุณช่วยอธิบายคำสั่งได้ไหม ขอบคุณ
Ankit

เพิ่มคำอธิบาย
Janus Troelsen

และreturn0whencharging.shไฟล์นี้อยู่ที่ไหน? หรือถ้าฉันสร้างขึ้นมีสถานที่เฉพาะที่ฉันต้องบันทึกหรือไม่
Parto

@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สคริปต์เป็นแอปพลิเคชันเริ่มต้นโดย:

  • เปิด Dash
  • ค้นหาแอปพลิเคชันเริ่มต้น
  • คลิกสองครั้งที่ไอคอน
  • คลิก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
    

ภาพการแจ้งเตือนตัวอย่าง:

ตัวอย่างรูปภาพการแจ้งเตือน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.