88

I would like my laptop to hibernate itself when the battery level is 10% to be sure it has enough power to complete the operation properly. Actually if I don't pay attention my laptop informs me it will hibernate when it's too late, so instead it brutally shuts down. This kills lithium batteries and is not acceptable.

Lucio
  • 18,843
oidualc
  • 1,453

2 Answers2

68
  1. Start dconf-editor
  2. Browse to org -> gnome -> settings-daemon -> plugins -> power
  3. Change the values of percentage-critical and percentage-action to the level you require
  4. Change use-time-for-policy to false
  5. Done!

You can also do this from a terminal with:

gsettings set org.gnome.settings-daemon.plugins.power percentage-critical 10
gsettings set org.gnome.settings-daemon.plugins.power percentage-action 9
gsettings set org.gnome.settings-daemon.plugins.power use-time-for-policy false
Lucio
  • 18,843
jpd
  • 1,040
  • 8
  • 15
67

Looks like Gnome moved the settings. Critically low battery is now handled by UPower. Instead of using gsettings, you should now edit the file /etc/UPower/UPower.conf

UsePercentageForPolicy=true
PercentageLow=10
PercentageCritical=3
PercentageAction=2
CriticalPowerAction=HybridSleep

By the way, if you read the UPower.conf file, upower used to (in v 0.99.1) only suggest using percentages in order to work around broken firmware. The default was UsePercentageForPolicy=false, which used the battery's time estimate. That makes some sense since, as a battery gets older, it lasts shorter for any given percentage. A fixed percentage that worked previously might at some point no longer allow the laptop enough time to hibernate properly.

However, it looks like upower now (v 0.99.4) is defaulting to percentages and has a cryptic message about the reasoning. I don't know which is best, but here's how to use time remaining for your battery policy, if you so desire.

UsePercentageForPolicy=false
TimeLow=1200
TimeCritical=300
TimeAction=120
CriticalPowerAction=HybridSleep

Note that Suspend/Sleep as such is not supported by the Upower tool, that HybridSleep is used instead (which looks much like Sleep, but is also close to Hibernation) and that HybridSleep (just like Hibernation) needs a swap space to work. On how to create one in case you don't have it, see this answer.

hackerb9
  • 5,605
  • The bounty I set will be granted to this answer. –  Sep 14 '16 at 12:14
  • @hackerb9 do we need to restart the machine in order for the change to take effects – Kasun Siyambalapitiya Jul 03 '18 at 09:19
  • 5
    You can do sudo systemctl restart upower.service to apply the settings. – Florian Feb 27 '19 at 18:31
  • 1
    the upower.conf mentions warning, and "upower -d" at CLI one of the items listed is "warning-level" and by default its value is "none". I would like very much to get some kind of warning before the notebook does a shutdown. Is the upower.conf options documented somewhere that might show how to set a warning level? – alabamatoy Jan 14 '20 at 19:08
  • 1
    @alabamatoy did you have any luck with getting a warning? – lucidbrot Dec 24 '20 at 00:29
  • 1
    I find it "interesting" that Upower.conf starts with such a comment: # Only the system vendor should modify this file, ordinary users should not have to change anything. – Levente Dec 26 '20 at 15:12
  • 1
    In Ubuntu 20.04, it appears the default is now UsePercentageForPolicy=true (unless another program modified my config since the initial OS install) – Addison Klinke Dec 15 '21 at 15:53