GNU/Linux >> Belajar Linux >  >> Ubuntu

Ubuntu – Bagaimana Cara Membuat Laptop Tidur Saat Mencapai Ambang Batas Baterai Rendah?

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?
Ubuntu
  1. Kustomisasi Terminal di Ubuntu 20.04 - bagaimana melakukannya?

  2. Metode untuk memeriksa status baterai laptop di Ubuntu 20.04 LTS?

  3. Cara Menginstal Nagios di Ubuntu 14.04

  1. Cara Menginstal Nagios di Ubuntu 16.04

  2. Ubuntu – Bagaimana Cara Membuat Shell Untuk Muncul Di Distro Sendiri (linux)??

  3. Ubuntu Server 13.10 Sekarang Menjadi Tidur Saat Menutup Tutup Laptop?

  1. Bagaimana Cara Membuat Ubuntu Mengenali Kartu Jaringan Wifi??

  2. Bagaimana Cara Membuat Ubuntu Terkunci?

  3. Bagaimana cara membuat Ubuntu terlihat cantik?