J'utilise Ubuntu 17.10 avec Gnome sur un ordinateur portable Asus.
Dans l'interface Paramètres d'alimentation, sous l'onglet Alimentation, une option en bas vous permet de définir les actions à prendre en cas de décharge critique de la batterie.
Cependant, lorsque je clique sur le menu déroulant pour définir cette option, celle-ci n'offre qu'une option, à savoir "ne rien faire":
Actuellement, mon ordinateur portable fonctionnera à 0 pile ou presque, puis s’arrêtera sans avertissements, aucune possibilité de fermer des programmes et de s’arrêter normalement.
Je voudrais avoir un avertissement lorsque la batterie est à 10% et espérons un peu de temps pour enregistrer manuellement et arrêter les programmes avant d'éteindre l'ordinateur. Comment puis-je y arriver?
Edit: Voici le contenu de mon fichier /etc/UPower/UPower.conf
:
# Only the system vendor should modify this file, ordinary users
# should not have to change anything.
[UPower]
# Enable the Watts Up Pro device.
#
# The Watts Up Pro contains a generic FTDI USB device without a specific
# vendor and product ID. When we probe for WUP devices, we can cause
# the user to get a perplexing "Device or resource busy" error when
# attempting to use their non-WUP device.
#
# The generic FTDI device is known to also be used on:
#
# - Sparkfun FT232 breakout board
# - Parallax Propeller
#
# default=false
EnableWattsUpPro=false
# Don't poll the kernel for battery level changes.
#
# Some hardware will send us battery level changes through
# events, rather than us having to poll for it. This option
# allows disabling polling for hardware that sends out events.
#
# default=false
NoPollBatteries=false
# Do we ignore the lid state
#
# Some laptops are broken. The lid state is either inverted, or stuck
# on or off. We can't do much to fix these problems, but this is a way
# for users to make the laptop panel vanish, a state that might be used
# by a couple of user-space daemons. On Linux systems, see also
# logind.conf(5).
#
# default=false
IgnoreLid=false
# Policy for warnings and action based on battery levels
#
# Whether battery percentage based policy should be used. The default
# is to use the time left, change to true to use the percentage, which
# should work around broken firmwares. It is also more reliable than
# the time left (frantically saving all your files is going to use more
# battery than letting it rest for example).
# default=true
UsePercentageForPolicy=true
# When UsePercentageForPolicy is true, the levels at which UPower will
# consider the battery low, critical, or take action for the critical
# battery level.
#
# This will also be used for batteries which don't have time information
# such as that of peripherals.
#
# If any value is invalid, or not in descending order, the defaults
# will be used.
#
# Defaults:
# PercentageLow=10
# PercentageCritical=3
# PercentageAction=2
PercentageLow=10
PercentageCritical=3
PercentageAction=2
# When UsePercentageForPolicy is false, the time remaining at which UPower
# will consider the battery low, critical, or take action for the critical
# battery level.
#
# If any value is invalid, or not in descending order, the defaults
# will be used.
#
# Defaults:
# TimeLow=1200
# TimeCritical=300
# TimeAction=120
TimeLow=1200
TimeCritical=300
TimeAction=120
# The action to take when "TimeAction" or "PercentageAction" above has been
# reached for the batteries (UPS or laptop batteries) supplying the computer
#
# Possible values are:
# PowerOff
# Hibernate
# HybridSleep
#
# If HybridSleep isn't available, Hibernate will be used
# If Hibernate isn't available, PowerOff will be used
CriticalPowerAction=HybridSleep
gsettings
name__Il existe deux options que vous pouvez vérifier dans le terminal:
$ gsettings get org.gnome.settings-daemon.plugins.power critical-battery-action
'suspend'
$ gsettings get org.gnome.settings-daemon.plugins.power percentage-low
'10'
Ensuite, pour les changer, utilisez:
$ gsettings set org.gnome.settings-daemon.plugins.power critical-battery-action suspend
$ gsettings set org.gnome.settings-daemon.plugins.power percentage-low 10
Remarquez sur mon système, ils fonctionnent très bien, je les ai donc modifiés pour les remplacer par leur origine.
upower
name__La gestion de l’énergie de Gnome utilise upower
pour faire le gros du travail. Pour vous assurer qu'il fonctionne et collecte les statistiques de la batterie comme il se doit, utilisez:
$ upower -d
Device: /org/freedesktop/UPower/devices/line_power_ACAD
native-path: ACAD
power supply: yes
updated: Sun 18 Mar 2018 02:28:25 PM MDT (135878 seconds ago)
has history: no
has statistics: no
line-power
warning-level: none
online: yes
icon-name: 'ac-adapter-symbolic'
Device: /org/freedesktop/UPower/devices/battery_BAT1
native-path: BAT1
vendor: COMPAL
model: PABAS0241231
serial: 41167
power supply: yes
updated: Tue 20 Mar 2018 04:12:10 AM MDT (53 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: charging
warning-level: none
energy: 48.2544 Wh
energy-empty: 0 Wh
energy-full: 93.3552 Wh
energy-full-design: 96.48 Wh
energy-rate: 0.0044914 W
voltage: 14.76 V
percentage: 51%
capacity: 96.7612%
technology: lithium-ion
icon-name: 'battery-good-charging-symbolic'
Device: /org/freedesktop/UPower/devices/mouse_0003o046Do101Ax0008
native-path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0003/0003:046D:101A.0008
vendor: Logitech, Inc.
model: Performance MX
serial: E6CE4571
power supply: no
updated: Tue 20 Mar 2018 04:12:09 AM MDT (54 seconds ago)
has history: yes
has statistics: no
mouse
present: yes
rechargeable: yes
state: discharging
warning-level: none
percentage: 55%
icon-name: 'battery-good-symbolic'
Device: /org/freedesktop/UPower/devices/keyboard_0003o046Do2010x0009
native-path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0003/0003:046D:2010.0009
vendor: Logitech, Inc.
model: K800
serial: 6DB54BFE
power supply: no
updated: Tue 20 Mar 2018 04:12:09 AM MDT (54 seconds ago)
has history: yes
has statistics: no
keyboard
present: yes
rechargeable: yes
state: discharging
warning-level: none
percentage: 90%
icon-name: 'battery-full-symbolic'
Device: /org/freedesktop/UPower/devices/ups_hiddev3
native-path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.4/1-1.4.4:1.0/usbmisc/hiddev3
vendor: CPS
model: CP550HGa
serial: BFBB104#BI1.g
power supply: yes
updated: Tue 20 Mar 2018 04:12:51 AM MDT (12 seconds ago)
has history: yes
has statistics: yes
ups
present: yes
state: fully-charged
warning-level: none
time to empty: 37.5 minutes
percentage: 100%
icon-name: 'battery-full-charged-symbolic'
Device: /org/freedesktop/UPower/devices/DisplayDevice
power supply: yes
updated: Tue 20 Mar 2018 04:10:14 AM MDT (169 seconds ago)
has history: no
has statistics: no
ups
present: yes
state: fully-charged
warning-level: none
time to empty: 37.5 minutes
percentage: 100%
icon-name: 'battery-full-charged-symbolic'
Daemon:
daemon-version: 0.99.4
on-battery: no
lid-is-closed: no
lid-is-present: yes
critical-action: HybridSleep
Commencez par exécuter cette commande lorsque l'ordinateur portable est branché. Débranchez ensuite l'ordinateur portable, puis exécutez la commande après un certain temps et assurez-vous que la durée restante de la batterie a bien été réduite.
C'est la dernière étape qui serait prise après avoir épuisé toutes les autres étapes. Cette étape ne nécessite pas Ubuntu ou Unity ou Gnome ni gsettings
ou upower
name__. Il ne requiert que systemd
name__, udev
et cron
qui sont intégrés à presque tous les Distros Linux avec ou sans interface graphique (bureau).
De ArchLinux :
Si votre batterie envoie des événements à udev
chaque fois qu'elle se charge de 1%, vous pouvez utiliser cette règle udev
pour hiberner automatiquement le système lorsque le niveau de la batterie est critique et ainsi éviter de perdre tout travail non enregistré. Remarque: Toutes les batteries ne signalent pas les événements de décharge. Testez en exécutant udevadm monitor --property
pendant que vous êtes sur batterie et voyez si des événements sont rapportés. Vous devriez attendre au moins 1% de baisse. Si aucun événement n'est signalé et que /sys/class/power_supply/BAT0/alarm
est non nul, la batterie déclenchera probablement un événement lorsque BAT0/energy_now
sera inférieur à la valeur d'alarme et que la règle udev
fonctionnera tant que le calcul en pourcentage sera terminé. Certains ordinateurs portables ont une option pour cela désactivée dans le BIOS par défaut.
$ cat /etc/udev/rules.d/99-lowbat.rules
# Suspend the system when battery level drops to 5% or lower
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-5]", RUN+="/usr/bin/systemctl hibernate"
Cette règle sera répétée chaque fois que la condition est définie. En tant que tel, lorsqu’il sort de veille prolongée lorsque la batterie est critique, l’ordinateur passe directement en veille prolongée. Certains ordinateurs portables ne démarrent pas au-delà d'un certain niveau de batterie. La règle peut donc être ajustée en conséquence.
Les batteries peuvent passer à une valeur inférieure au lieu de se décharger continuellement. Par conséquent, un modèle de correspondance de chaîne udev
___ pour toutes les capacités 0
à 5
est utilisé.
D'autres règles peuvent être ajoutées pour effectuer différentes actions en fonction de l'état de l'alimentation et/ou de la capacité.
Si votre système n'a aucun événement ACPI ou qu'il en manque, utilisez cron
avec le script suivant:
#!/bin/sh
acpi -b | awk -F'[,:%]' '{print $2, $3}' | {
read -r status capacity
if [ "$status" = Discharging -a "$capacity" -lt 5 ]; then
logger "Critical battery threshold"
systemctl hibernate
fi
}
Une façon de tester les règles udev
consiste à leur demander de créer un fichier lors de leur exécution. Par exemple:
$ cat /etc/udev/rules.d/98-discharging.rules
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", RUN+="/usr/bin/touch /home/example/discharging"
Cela crée un fichier à /home/example/discharging
lorsque le chargeur pour ordinateur portable est débranché. Vous pouvez tester le fonctionnement de la règle en débranchant votre ordinateur portable et en recherchant ce fichier. Pour des tests plus avancés sur les règles udev
name__, reportez-vous à la section dev # Tester les règles avant le chargement .
Il y a plus d'étapes à publier entre l'étape 2 et la "dernière étape", mais elles seront publiées au fur et à mesure que l'OP révélera plus de détails après les tests. En attendant, le "dernier pas" devrait réduire le nombre de réponses à mi-parcours, par exemple en indiquant simplement le pourcentage restant.
J'ai créé une solution de fortune qui vérifie si votre ordinateur portable est branché sur le secteur ou sur une batterie ...
Par conséquent, s’il est branché sur le secteur, il se fermera et sinon, il continuera de vérifier la charge restante de la batterie toutes les 15 secondes jusqu’à atteindre la variable définie low
ou plutôt pourcentage ...
Oh, et si vous voulez continuer à travailler dans le même terminal que vous avez exécuté ce script, exécutez-le simplement de la manière suivante:
bash power-notify.sh &
Sans plus tarder, voici le script:
#!/bin/bash
#Get battery percent
bat_percent=$(acpi | awk -F ", " '{print $2}' | tr -d %)
#When to start showing warnings... Example: 10% --> low=10
low=10
#Alert message to show when low percent is reached
alert="Low battery, $bat_percent% left..."
#Check if notify-send is installed
notfiy_send_test=$(which notify-send)
if [ $? != 0 ]
then
echo "Please install notify-send..."
exit 1
fi
acpi_test=$(which acpi)
if [ $? != 0 ]
then
echo "Please install acpi..."
exit 1
fi
#Test if cord is plugged in
plugged=$(acpi -a | awk -F ": " '{print $2}')
if [ $plugged == 'on-line' ]
then
echo "Your computer is connected to a power source..."
echo "Exiting..."
exit 0
fi
while :
do
if [ $bat_percent -lt $low ]
then
notify-send "$alert"
sleep 15
else
#Check every fifteen seconds to use less resources...
sleep 15
fi
done
Ce script peut également être trouvé sur GitHub, here ...