Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I use Ubuntu 12.04 in my laptop. I'm trying to configure to hibernate when lid is closed. However, not is working. I did the following steps to solve the problem:

  • I enable in /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
  • System Settings - Power
  • I used the dconf Editor.

When I lid closed instead hibernate is suspend. I try run sudo pm-hibernate and works fine.

Any suggestion ?

share|improve this question
1  
Did you modify your power settings so that it will use hibernate instead of suspend on lid closing? –  Thomas W. May 7 '13 at 6:11
    
What ? I modify my power settings to use hibernate instead of suspend. However, when I lid close is suspend. –  user2692786 May 7 '13 at 6:18
    
And you set it for BOTH of the power settings, for the battery AND AC connected states, right? –  Thomas W. May 7 '13 at 6:20
    
Yes, both are configured like hibernate. –  user2692786 May 7 '13 at 6:22
    
Haha I just installed Ubuntu 14.04 and got the same shit. But now the pówer preferences don't offer the option to hibernate (only suspend) and there's no lid.sh ! –  Gabriel Aug 29 at 12:32

2 Answers 2

up vote 1 down vote accepted

Note: try pm-hibernate in a shell before trying this. If it works, go ahead.

I fixed it by...

  • Using cinnamon-settings / Power to set the event to Hibernate. This sets the dconf values /org/gnome/settings-daemon/plugins/power/lid-close-ac-action and /org/gnome/settings-daemon/plugins/power/lid-close-battery-action to what you want

  • Editing /etc/acpi/events/lm_lid (gksudo gedit /etc/acpi/events/lm_lid) and filling it with

event=button/lid.*
action=/etc/acpi/lid.sh
  • Editing /etc/acpi/lid.sh (gksudo gedit /etc/acpi/lid.sh). If it's empty, fill it with
grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
    su - gabriel -c 'gsettings get org.cinnamon.settings-daemon.plugins.power lid-close-ac-action' | grep hibernate
    if [ $? = 0 ]
    then
        pm-hibernate
    fi
fi

Otherwise, look for the right place to put the code above

Replace gabriel by your username. You have to do the su thing before calling gsettings get because this script is ran as root, and running gsettings get as root would return the preferences for root instead of your user.

You could just call pm-hibernate but then changing options in cinnamon-settings would not work anymore. I did not care to check whether my notebook is on AC or battery, because it's irrelevant: I want the same behaviour always anyway. Maybe someone wants to add an if there?

share|improve this answer

Here is how you fix that.

In your file:

/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

Make sure you have two settings in there

[Enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes

Here is why. In this file:

/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

it sets the two options to "no"

The file you created should be executed after the one in /var/lib so it should take priority over it (Tested it and it does). You can read the information for that here under the section "Evaluation Order". When your "upower" option is set to "yes" you can select hibernate from the power settings in Ubuntu. However, you are still unable to hibernate because the 10-vendor.d file was setting the login1.hibernate to "no" and that must also be a "yes"

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.