GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ubuntu - Comment mettre l'ordinateur portable en veille lorsqu'il atteint un seuil de batterie faible ?

J'utilise Ubuntu, mais j'ai i3 comme gestionnaire de fenêtres au lieu d'un environnement de bureau.

Lorsque ma batterie atteint 0 %, l'ordinateur s'éteint brusquement, sans avertissement ou quoi que ce soit.

Existe-t-il un script ou une configuration simple que je peux configurer pour qu'il se mette en veille à, disons, 4 % de batterie ?

Réponse acceptée :

Voici un petit script qui vérifie le niveau de la batterie et appelle une commande personnalisée, ici pm-hibernate , si le niveau de la batterie est inférieur à un certain seuil.

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

C'est un script très simple, mais je pense que vous avez compris l'idée et que vous pouvez facilement l'adapter à vos besoins. Le chemin vers le niveau de la batterie peut être différent sur votre système. Un peu plus portable serait probablement d'utiliser quelque chose comme acpi | cut -f2 -d, pour obtenir le niveau de la batterie. Ce script peut être programmé par cron pour s'exécuter toutes les minutes. Modifiez votre crontab avec crontab -e et ajoutez le script :

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

Une autre solution serait d'installer un environnement de bureau comme Gnome ou Xfce (et de changer votre gestionnaire de fenêtres en i3). Les deux environnements de bureau mentionnés comportent des démons de gestion de l'alimentation qui s'occupent d'éteindre l'ordinateur. Mais je suppose que vous ne les utilisez pas délibérément et que vous recherchez une solution plus minimaliste.

En relation :Comment faire en sorte que les variables d'environnement soient "exportées" dans un script shell ?
Ubuntu
  1. Méthodes pour vérifier l'état de la batterie d'un ordinateur portable sur Ubuntu 20.04 LTS ?

  2. Comment installer Nagios sur Ubuntu 16.04

  3. Ubuntu - Comment créer un shell pour qu'il apparaisse dans sa propre distribution (linux) ??

  4. Comment faire pour qu'Ubuntu reconnaisse la carte réseau Wifi ??

  5. Comment verrouiller Ubuntu ?

Comment installer Make sur Ubuntu 20.04

Comment vérifier l'adresse IP dans Ubuntu

Comment changer le thème Ubuntu

Comment changer l'adresse IP dans Ubuntu

Comment installer et faire de Nemo le gestionnaire de fichiers par défaut dans Ubuntu

Le système s'arrête lorsque la batterie est faible (ubuntu 18.04) ?