Saya menggunakan Ubuntu, tetapi saya memiliki i3 sebagai pengelola jendela saya alih-alih lingkungan desktop.
Ketika baterai saya mencapai 0%, komputer akan mati secara tiba-tiba, tanpa peringatan atau apa pun.
Apakah ada skrip atau konfigurasi sederhana yang dapat saya atur agar mode tidur, katakanlah baterai 4%?
Jawaban yang Diterima:
Berikut skrip kecil yang memeriksa level baterai dan memanggil perintah khusus, di sini pm-hibernate
, jika tingkat baterai di bawah ambang batas tertentu.
#!/bin/sh
###########################################################################
#
# Usage: system-low-battery
#
# Checks if the battery level is low. If “low_threshold” is exceeded
# a system notification is displayed, if “critical_threshold” is exceeded
# a popup window is displayed as well. If “OK” is pressed, the system
# shuts down after “timeout” seconds. If “Cancel” is pressed the script
# does nothing.
#
# This script is supposed to be called from a cron job.
#
###########################################################################
# This is required because the script is invoked by cron. Dbus information
# is stored in a file by the following script when a user logs in. Connect
# it to your autostart mechanism of choice.
#
# #!/bin/sh
# 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
#
if [ -r ~/.dbus/Xdbus ]; then
. ~/.dbus/Xdbus
fi
low_threshold=10
critical_threshold=4
timeout=59
shutdown_cmd='/usr/sbin/pm-hibernate'
level=$(cat /sys/devices/platform/smapi/BAT0/remaining_percent)
state=$(cat /sys/devices/platform/smapi/BAT0/state)
if [ x"$state" != x'discharging' ]; then
exit 0
fi
do_shutdown() {
sleep $timeout && kill $zenity_pid 2>/dev/null
if [ x"$state" != x'discharging' ]; then
exit 0
else
$shutdown_cmd
fi
}
if [ "$level" -gt $critical_threshold ] && [ "$level" -lt $low_threshold ]; then
notify-send "Battery level is low: $level%"
fi
if [ "$level" -lt $critical_threshold ]; then
notify-send -u critical -t 20000 "Battery level is low: $level%"
'The system is going to shut down in 1 minute.'
DISPLAY=:0 zenity --question --ok-label 'OK' --cancel-label 'Cancel'
--text "Battery level is low: $level%.nn The system is going to shut down in 1 minute." &
zenity_pid=$!
do_shutdown &
shutdown_pid=$!
trap 'kill $shutdown_pid' 1
if ! wait $zenity_pid; then
kill $shutdown_pid 2>/dev/null
fi
fi
exit 0
Ini adalah skrip yang sangat sederhana, tetapi saya pikir Anda mendapatkan idenya dan dapat dengan mudah menyesuaikannya dengan kebutuhan Anda. Jalur ke tingkat baterai mungkin berbeda di sistem Anda. Sedikit lebih portabel mungkin menggunakan sesuatu seperti acpi | cut -f2 -d,
untuk mendapatkan tingkat baterai. Skrip ini dapat dijadwalkan oleh cron untuk dijalankan setiap menit. Edit crontab Anda dengan crontab -e
dan tambahkan skrip:
*/1 * * * * /home/me/usr/bin/low-battery-shutdown
Solusi lain adalah menginstal lingkungan desktop seperti Gnome atau Xfce (dan ubah window manager Anda ke i3). Kedua lingkungan destop yang disebutkan memiliki daemon manajemen daya yang menangani mematikan komputer. Tapi saya berasumsi Anda sengaja tidak menggunakannya dan mencari solusi yang lebih minimalis.
Terkait:Bagaimana cara membuat variabel lingkungan "diekspor" dalam skrip shell bertahan?