GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ubuntu:¿cómo hacer que la computadora portátil duerma cuando alcanza un umbral de batería baja?

Estoy usando Ubuntu, pero tengo i3 como administrador de ventanas en lugar de un entorno de escritorio.

Cuando mi batería llega al 0%, la computadora simplemente se apaga abruptamente, sin advertencia ni nada.

¿Existe una secuencia de comandos o una configuración simple que pueda configurar para que entre en modo de suspensión, por ejemplo, con un 4 % de batería?

Respuesta aceptada:

Aquí hay un pequeño script que verifica el nivel de la batería y llama a un comando personalizado, aquí pm-hibernate , en caso de que el nivel de la batería esté por debajo de cierto umbral.

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

Es un guión muy simple, pero creo que entiendes la idea y puedes adaptarlo fácilmente a tus necesidades. La ruta al nivel de la batería puede ser diferente en su sistema. Un poco más portátil probablemente sería usar algo como acpi | cut -f2 -d, para obtener el nivel de batería. Este script puede ser programado por cron para ejecutarse cada minuto. Edite su crontab con crontab -e y agregue la secuencia de comandos:

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

Otra solución sería instalar un entorno de escritorio como Gnome o Xfce (y cambiar su administrador de ventanas a i3). Ambos entornos de escritorio mencionados cuentan con demonios de administración de energía que se encargan de apagar la computadora. Pero asumo que deliberadamente no los usas y buscas una solución más minimalista.

Relacionado:¿Cómo hacer que las variables de entorno "exportadas" en un script de shell se mantengan?
Ubuntu
  1. Personalizar la Terminal en Ubuntu 20.04:¿cómo hacerlo?

  2. ¿Métodos para verificar el estado de la batería de la computadora portátil en Ubuntu 20.04 LTS?

  3. Cómo instalar Nagios en Ubuntu 14.04

  4. Cómo instalar Nagios en Ubuntu 16.04

  5. Ubuntu:¿cómo hacer que un shell aparezca en la propia distribución (linux)?

Cómo instalar Make en Ubuntu 20.04

Cómo verificar la dirección IP en Ubuntu

Cómo cambiar el tema de Ubuntu

Cómo cambiar la dirección IP en Ubuntu

Cómo instalar y hacer que Nemo sea el administrador de archivos predeterminado en Ubuntu

¿El sistema se apaga cuando la batería está baja (ubuntu 18.04)?