For Saucy, indicator-session was updated to use logind (org.freedesktop.login1) instead of upower.
If you check /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla, you'll see that hibernate is disabled by default in both upower and logind.
So the first step to re-enable the Hibernate option is to edit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla to something like:
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes
After rebooting, the login screen session menu should have a Hibernate option.
After logging in, the desktop session menu still doesn't have the Hibernate option. If I kill the indicator-session-service process and wait for it to be respawned, the menu will be updated with Hibernate.
I don't see anything obviously wrong in the indicator-session code, so I suspect this is a timing issue. My guess is the hibernate dbus (async) query hasn't returned a result yet when it first builds the desktop session menu.
(Another clue to indicator-session building menus too early: I have a Reboot option in my desktop session menu, even though I'm using Unity and the code should have hidden it. The Reboot option is gone after indicator-session-service is killed and respawned.)
For Saucy, indicator-session was updated to use logind (org.freedeskto p.login1) instead of upower.
If you check /var/lib/ polkit- 1/localauthorit y/10-vendor. d/com.ubuntu. desktop. pkla, you'll see that hibernate is disabled by default in both upower and logind.
So the first step to re-enable the Hibernate option is to edit /etc/polkit- 1/localauthorit y/50-local. d/com.ubuntu. enable- hibernate. pkla to something like:
[Re-enable hibernate by default in upower] unix-user: * org.freedesktop .upower. hibernate e=yes
Identity=
Action=
ResultActiv
[Re-enable hibernate by default in logind] unix-user: * org.freedesktop .login1. hibernate e=yes
Identity=
Action=
ResultActiv
After rebooting, the login screen session menu should have a Hibernate option.
After logging in, the desktop session menu still doesn't have the Hibernate option. If I kill the indicator- session- service process and wait for it to be respawned, the menu will be updated with Hibernate.
I don't see anything obviously wrong in the indicator-session code, so I suspect this is a timing issue. My guess is the hibernate dbus (async) query hasn't returned a result yet when it first builds the desktop session menu.
(Another clue to indicator-session building menus too early: I have a Reboot option in my desktop session menu, even though I'm using Unity and the code should have hidden it. The Reboot option is gone after indicator- session- service is killed and respawned.)
I'll try to investigate more as time permits.