GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ubuntu:come far dormire il laptop quando raggiunge una soglia di batteria scarica?

Sto usando Ubuntu, ma ho i3 come window manager invece di un ambiente desktop.

Quando la mia batteria raggiunge lo 0%, il computer si spegnerà bruscamente, nessun avviso o altro.

C'è un semplice script o una configurazione che posso impostare in modo che vada a dormire, diciamo al 4% di batteria?

Risposta accettata:

Ecco un piccolo script che controlla il livello della batteria e chiama un comando personalizzato, qui pm-hibernate , nel caso in cui il livello della batteria sia inferiore a una certa soglia.

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

È un copione molto semplice, ma penso che tu abbia l'idea e puoi adattarla facilmente alle tue esigenze. Il percorso del livello della batteria potrebbe essere diverso sul tuo sistema. Un po' più portabile sarebbe probabilmente usare qualcosa come acpi | cut -f2 -d, per ottenere il livello della batteria. Questo script può essere programmato da cron per l'esecuzione ogni minuto. Modifica il tuo crontab con crontab -e e aggiungi lo script:

*/1 * * * * /home/me/usr/bin/low-battery-shutdown

Un'altra soluzione sarebbe installare un ambiente desktop come Gnome o Xfce (e cambiare il gestore delle finestre in i3). Entrambi gli ambienti di destop menzionati sono dotati di demoni di gestione dell'alimentazione che si occupano dello spegnimento del computer. Ma presumo che tu non li usi deliberatamente e cerchi una soluzione più minimalista.

Correlati:come fare in modo che le variabili di ambiente "esportate" in uno script di shell rimangano invariate?
Ubuntu
  1. Metodi per controllare lo stato della batteria del laptop su Ubuntu 20.04 LTS?

  2. Ubuntu:come creare una shell da mostrare nella propria distribuzione (linux)??

  3. Ubuntu Server 13.10 ora va a dormire quando si chiude il coperchio del laptop?

  4. Come fare in modo che Ubuntu riconosca la scheda di rete Wi-Fi?

  5. Come bloccare Ubuntu?

Come installare Make su Ubuntu 20.04

Come controllare l'indirizzo IP in Ubuntu

Come modificare il tema di Ubuntu

Come modificare l'indirizzo IP in Ubuntu

Come installare e rendere Nemo il file manager predefinito in Ubuntu

Il sistema si sta spegnendo quando la batteria è scarica (ubuntu 18.04)?