GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ubuntu – Wie kann man den Laptop in den Ruhezustand versetzen, wenn er einen niedrigen Batterieschwellenwert erreicht?

Ich verwende Ubuntu, aber ich habe i3 als Fenstermanager anstelle einer Desktop-Umgebung.

Wenn mein Akku 0 % erreicht, wird der Computer einfach abrupt heruntergefahren, ohne Warnung oder ähnliches.

Gibt es ein einfaches Skript oder eine Konfiguration, die ich einrichten kann, damit es bei beispielsweise 4 % Akku in den Ruhezustand wechselt?

Akzeptierte Antwort:

Hier ist ein kleines Skript, das den Batteriestand überprüft und einen benutzerdefinierten Befehl aufruft, hier pm-hibernate , falls der Akkustand unter einem bestimmten Schwellenwert liegt.

#!/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 ist ein sehr einfaches Skript, aber ich denke, Sie verstehen die Idee und können es leicht an Ihre Bedürfnisse anpassen. Der Pfad zum Akkustand kann auf Ihrem System anders sein. Etwas portabler wäre wahrscheinlich etwas wie acpi | cut -f2 -d, um den Batteriestand zu erhalten. Dieses Skript kann von Cron so geplant werden, dass es jede Minute ausgeführt wird. Bearbeiten Sie Ihre Crontab mit crontab -e und fügen Sie das Skript hinzu:

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

Eine andere Lösung wäre, eine Desktop-Umgebung wie Gnome oder Xfce zu installieren (und Ihren Fenstermanager auf i3 zu ändern). Beide genannten Desktop-Umgebungen verfügen über Energieverwaltungs-Daemons, die sich um das Herunterfahren des Computers kümmern. Aber ich nehme an, Sie verwenden sie bewusst nicht und suchen nach einer minimalistischeren Lösung.

Verwandte:Wie kann man Umgebungsvariablen, die in einem Shell-Skript „exportiert“ werden, beibehalten?
Ubuntu
  1. Passen Sie das Terminal unter Ubuntu 20.04 an - wie geht das?

  2. Methoden zum Überprüfen des Status des Laptop-Akkus unter Ubuntu 20.04 LTS?

  3. Ubuntu – Wie erstelle ich eine Shell, die in der eigenen Distribution (Linux) angezeigt wird??

  4. Ubuntu Server 13.10 geht jetzt in den Ruhezustand, wenn der Laptopdeckel geschlossen wird?

  5. Wie kann man Ubuntu sperren lassen?

So installieren Sie Make unter Ubuntu 20.04

So überprüfen Sie die IP-Adresse in Ubuntu

So ändern Sie das Ubuntu-Design

So ändern Sie die IP-Adresse in Ubuntu

So installieren und machen Sie Nemo zum Standard-Dateimanager in Ubuntu

Das System wird heruntergefahren, wenn die Batterie schwach ist (Ubuntu 18.04)?