منبع اصلی نوشتار زیر در این لینک قرار دارد

پخش آلارم هنگام Low battery

در دسکتاپ گنوم، وقتی باتری لپتاپ به مقدار مشخصی برسه، نوتیفیکیشن هشدار داده میشه. اما این نوتیفیکیشن صدا نداره. یکی از دوستان پرسیده بود که چطور میشه کاری کرد که وقتی باتری به درصد خاصی میرسه نوتیفیکیشن همراه با آلارم پخش بشه؟
دو راه برای اینکار هست. یکی اینکه از udev استفاده کنیم، که در ویکی آرچ توضیح داده شده. اما من استفاده کردم و موفقیت آمیز نبود. ظاهرا هر لپتاپی اینجور نیست که اطلاعات باتری رو به udev بفرسته. راه دوم که کار راه بندازه و زیادم بد نیست استفاده از cron است. یعنی یه اسکریپتی بنویسیم که هر مثلا ۶ دقیقه درصد باتری رو چک کنه و اگه کمتر مقدار تعیین شده بود کاریو که ما میخوایم انجام بده.
اسکریپتی که در ویکی آرچ نوشته بود و من هم کمی شخصی سازیش کردم در زیر میبینید:
#!/bin/sh
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
acpi -b | awk -F'[,:%]' '{print $2, $3}' | {
    read -r status capacity

    if [ "$status" = Discharging -a "$capacity" -lt 15 ]; then
        logger "Critical battery threshold"
        /usr/bin/notify-send -u critical --hint int:transient:1 -i "/usr/share/icons/hicolor/256x256/apps/gnome-power-manager.png" "Battery at $capacity%" "Battery percent is too low. Connect AC Adapter." && play /home/amin/Programs/lowbat.mp3
    fi
echo "Battery has $capacity% capacity"
}
چند نکته در مورد این اسکریپت:
برای مشخص کردن درصد باتری از acpi استفاده شده. و برای پخش صدا از sox و برای نمایش نوتیفیکیشن از notify-osd. بنابراین هر کدوم رو که ندارید نصب کنید.
در خط دوم اسکریپت (رنگ زرد) برای اینکه cron بتونه پیامهای notify-osd رو اجرا بکنه،‌ باید یه همچین چیزی در اسکریپت باشه. عدد 1000 همون user id نام کاربری شماست که باید با دستور echo $UID ببینید چنده. که معمولا اگه اولین کاربری باشید که در لینوکستون ساختید 1000 هست.
خطوط نارنجی هم مشخص کننده آدرس فایلهاست (آیکن و صدای آلارم).
محتوای پیام رو هم که خودتون میتونید ویرایش کنید. مقدار 15 هم که با رنگ سبز مشخص شده همون درصدی است که تعیین کردیم که اگر پایین تر از اون بود هشدار داده بشه. به دلخواه خودتون میتونید مقدارش رو مشخص کنید.
اسکریپت بالا رو جایی ذخیره کنید و اون رو با روشی که بلد هستید به cron بسپارید. بازه های زمانی ۶ دقیقه فکر میکنم مناسب باشه.