Я использую Ubuntu 17.10 с Gnome на ноутбуке Asus.
В интерфейсе Power Settings, под вкладкой Power, существует опция внизу для установки, что сделать в случае, если батарея становится критически низкой.
Однако, когда я нажимаю на выпадающее для установки той опции, она только предлагает одну опцию, которая является, "ничего не делают":
В настоящее время мой ноутбук спустится к 0 заряду батареи, или близко к нему, и затем выключится без предупреждений, никакой возможности заключительных программ и закрывающийся корректно.
Я хотел бы иметь предупреждение, когда батарея в 10% и надо надеяться некоторое время, чтобы вручную сохранить и закрыть программы перед выключением компьютера. Как я достигаю этого?
Править: Вот содержание моего /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
Существует две опции, можно зарегистрироваться в терминале:
$ gsettings get org.gnome.settings-daemon.plugins.power critical-battery-action
'suspend'
$ gsettings get org.gnome.settings-daemon.plugins.power percentage-low
'10'
Затем изменить их использование:
$ gsettings set org.gnome.settings-daemon.plugins.power critical-battery-action suspend
$ gsettings set org.gnome.settings-daemon.plugins.power percentage-low 10
Примечание по моей системе, которая они очень хорошо, таким образом, я возвратил их к тому, чем они были во-первых ради примера.
upower
Управление питанием Gnome использует upower
сделать тяжелый подъем. Для обеспечения это выполняет и собирает статистические данные батареи, как это должно, использовать:
$ 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
Первый показ эта команда, когда ноутбук включается. Затем отключите ноутбук и выполните команду через какое-то время и удостоверьтесь, что время оставлений батареи уменьшило соответственно.
Это - последний шаг, который был бы сделан после исчерпания всех других шагов. Этот шаг не требует Ubuntu или Единицы или Gnome или gsettings
или upower
. Это только требует systemd
, udev
и cron
которые создаются почти во все Дистрибутивы Linux с или без GUI (Рабочий стол).
От ArchLinux:
Если Ваша батарея отправляет события в udev
каждый раз, когда это (скидка) заряжается на 1%, можно использовать это udev
управляйте для автоматического спящего режима системы, когда уровень заряда батареи очень важен, и таким образом препятствуйте тому, чтобы вся несохраненная работа была потеряна.Примечание: Не все батареи сообщают о событиях выброса. Тест путем выполнения udevadm monitor --property
в то время как на батарее и видят, сообщают ли о каких-либо событиях. Необходимо ожидать по крайней мере 1%-е отбрасывание. Если ни о каких событиях не сообщают и /sys/class/power_supply/BAT0/alarm
является ненулевым затем, батарея, вероятно, инициирует событие когда BAT0/energy_now
опускается ниже сигнального значения, и udev
правило будет работать целый, математика процента удается. Некоторые ноутбуки имеют опцию для отключенного в BIOS по умолчанию.
$ 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"
Это правило будет повторено каждый раз, когда условие установлено. По сути, когда возобновление от в спящем режиме, когда батарея будет очень важна, компьютер будет в спящем режиме непосредственно. Некоторые ноутбуки не загружаются вне определенного уровня заряда батареи, таким образом, правило могло быть скорректировано соответственно.
Батареи могут перейти к нижнему значению вместо того, чтобы разрядиться непрерывно, поэтому a udev
шаблон сопоставления строк для всех мощностей 0
через 5
используется.
Другие правила могут быть добавлены для выполнения различных действий в зависимости от состояния источника питания и/или способности.
Если Ваша система не имеет никаких или недостающих событий ACPI, использовать cron
со следующим сценарием:
#!/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
}
Один способ протестировать udev
правила состоят в том, чтобы сделать, чтобы они создали файл, когда они выполняются. Например:
$ cat /etc/udev/rules.d/98-discharging.rules
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", RUN+="/usr/bin/touch /home/example/discharging"
Это создает файл в /home/example/discharging
когда зарядное устройство ноутбука отключается. Можно протестировать ли правило, работавшее путем отключения ноутбука и поиска этого файла. Для более усовершенствованного udev
тестирование правила, см. правила Udev#Testing перед загрузкой.
Существует больше шагов для регистрации между Шагом № 2, и "В последний раз Ступают", но они будут отправлены, поскольку OP показывает больше деталей после тестирования. Тем временем "Последний Шаг" должен уменьшить более промежуточные ответы как простое создание отчетов об остающемся проценте.
Я создал импровизированное решение, которое проверяет, находится ли Ваш ноутбук на AC или Батарее (DC) питание...
Поэтому, если это будет на питании переменным током, то это выйдет и если не это продолжит проверять остающийся заряд батареи каждые 15 секунд, пока это не поразит определенную переменную low
или скорее процент...
О, и если Вы хотите продолжить работать в том же терминале, как Вы запустили этот скрипт, как просто запущено скрипт как так:
bash power-notify.sh &
Без дальнейшей суматохи вот сценарий:
#!/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
Этот сценарий может также быть найден на GitHub, здесь...