PowerManagementConfiguration

Differences between revisions 29 and 32 (spanning 3 versions)
Revision 29 as of 2005-11-15 20:45:03
Size: 8043
Editor: i577B0327
Comment:
Revision 32 as of 2005-11-19 09:03:53
Size: 8576
Editor: tvwna-ip-a-1
Comment: + design details + Future work
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
 * '''Created:''' [[Date(2005-04-23T01:36:42Z)]] by MattZimmerman[[BR]]  * '''Created:''' [[Date(2005-04-23T01:36:42Z)]] by MattZimmerman
Line 10: Line 10:
GNOME Power Preferences should by default only propose controversial options (ie: if we suspend when the lid closes). Other options have sane defaults which we should select for the user and not ask them about. For example, the following events are assumed to behave as follows:
 * power button press -> logout dialog
 * suspend press (if exists) -> suspend
 * ac unplugged -> so what? (do nothing -- but go into laptop mode!)
To maintain simplicity, Ubuntu's power management interface allows configuration only of those options that people are likely to want to change (with other options having sane defaults, not configurable graphically), and presents only batteries for for the computer itself.
Line 15: Line 12:
== Scope and rationale == == Rationale ==
Line 18: Line 15:
Line 27: Line 23:
== Use Cases == == Use cases ==
Line 29: Line 25:
Michael just installed Ubuntu 6.04, he doesn't care about Power Preferences, he wants it to just work and do the right thing (tm).  * Michael is a harried Hong Kong businessman who has just installed Ubuntu 6.04 on his home desktop machine. He doesn't care about power management; he wants it to just work and do the right thing.
Line 31: Line 27:
Hubert has different ideas, about how Power Preferences should work by default. He should be able to change the option that make sense.  * Mei-Li is flying back to her home in London after a successful business trip to Hong Kong (during which she persuaded Michael to install Ubuntu). At the start of the flight, she sees she has 3 hours 20 minutes of battery left on her Think``Pad, possibly enough to finish a presentation she has to give tomorrow. As it turns out, she doesn't quite finish it; Ubuntu automatically puts the machine into hibernation when the battery reaches a critically low level. Nineteen hours later, Mei-Li arrives back at her apartment, plugs in her Think``Pad, opens it up and resumes work from where she left off.
Line 33: Line 29:
Bob runs the IT department of a company. He hands out a bunch of laptops with Ubuntu preinstalled. Bob is anal so he doesn't want the employees messing around with the power settings.  * Candice runs a university computer lab containing 60 iMacs -- a significant use of electricity for a university on a tight budget (they upgraded from Mac OS 9 to Ubuntu partly because it was cheaper than OS X). To save power, Candice wants each computer to go to sleep if idle for half an hour, even when nobody is logged in, and she does not want students to be able to alter the power management settings.
Line 35: Line 31:
Bob is having a good day and decides that he wants some users that he trusts able to change the power settings on their laptops.  * Bob runs the IT department at Hydroponical Light Industries. He gives his salespeople laptops with Ubuntu preinstalled, but since they're salespeople and not tech wizards, Bob locks down the power settings so they can't be messed with.
Line 37: Line 33:
Joe has an evil sibling with whom he shares a laptop. His sibbling likes to play practical jokes like setting up cron jobs to spontaneously shut down or suspend the system if Joe is logged in. Joe is unaffected by these pranks.  * Courtney shares her Presario with her evil twin sister, Tara. Tara likes playing practical jokes, and tries to set up a cron job to spontaneously shut down or suspend the system if Courtney is logged in. This is unsuccessful.
Line 39: Line 35:
== Implementation Plan == == Design ==
Line 41: Line 37:
In its current state, gnome-power-manager is insufficient for our purposes. The primary problem is that it runs as a gnome session daemon. This causes a number of problems: === Panel menu ===

attachment:power-menu.jpg

There is a power menu on the the panel (either applet or notification icon), which shows the charge only of the primary battery (we make no attempt to deal with wireless mouse batteries, for example), or a power adapter icon if the battery is fully charged. The first three items in the menu configure how the menu title itself appears, with the first two of these sneakily doubling as more explicit status indicators for the battery:
 * "Time (''x''h ''y''m remaining)", or "Time (''x''h ''y''m to charge)", or if fully charged, just "Time"
 * "Percentage (''z'' %)"

The final item in the menu opens the Power Management preferences.

(RyanLortie is currently working on this patch for `battstat-applet`.)

=== Shutdown confirmation alert ===

Pressing the power button on the computer puts up the shutdown alert immediately. '''''Implementation note:''' gnome logout dialog does it slow but gnome-screensaver can do it quickly. find out why.''

attachment:shutdown.jpg

All buttons in the alert can be activated with a single keypress (no need to hold down Alt):
 * Enter for "Shut Down"
 * Escape for "Cancel"
 * S for "Sleep"
 * R for "Restart".

=== Power Management preferences ===

attachment:power-applet.jpg

The "When:" menu contains items "Using Battery" and "Plugged In". If no battery is detected, the menu is unavailable, but the text "Plugged In" still appears active. '''''Implementation note:''' If this is not possible, "Plugged In" should be presented as plain text instead of a menu.'' '''''Translator note:''' The text inside and outside the menu can be distributed differently as appropriate for other languages. For analogy, varieties of English outside North America would understand a "When running on:" menu containing items "Battery" and "Mains Power".''

'''''Translator note:''' Translate the word "idle" to encompass, as much as practical, the meanings of not receiving input, and not displaying a movie or unattended presentation.''

If suspend is unsupported, the "Put the computer to sleep when it is idle:" slider is hidden. The "When the lid is closed:" radiobuttons are still visible, though the "Put the computer to sleep" radiobutton is unavailable, so that people do not lose data by mistakenly thinking that their laptop ever goes to sleep.

As the "Put the computer to sleep when it is idle:" slider is moved, the "Put the display to sleep when the computer is idle:" slider tick marks are updated to reflect the possible values (it does not make sense to put the display to sleep when the entire computer is already asleep).

The "Require password when waking from sleep" checkbox is off by default if Ubuntu is set up to log in to an account automatically, and on by default otherwise. It is independent of the operation of the screensaver.

The "When the lid is closed:" section appears only if the computer is a laptop. The selection defaults to "Put the computer to sleep" if the laptop is known to be safe for suspending, and to "Just turn off the display" otherwise.

The "Non-admin accounts use:" section appears only if the current account is that of a sudoer. The "Copy These Settings" button copies the current settings for use by all non-admin accounts. The button is unavailable if the current settings are already those used by all non-admin accounts.

== Implementation ==

In its current state, gnome-power-manager is insufficient for our purposes. The primary problem is that it runs as a gnome session daemon. This causes three problems:
Line 57: Line 97:
=== Panel Icon ===
There will be exactly one power status icon on the panel (either applet or notification icon) that will show the current battery charge status to the user. The icon will only show "primary" battery status (we make no attempt to deal with wireless mouse batteries, for example). The icon will not have its own preference dialog, but rather, a pulldown menu. The preferences item in this menu will lead to the global power preferences dialog (same dialog that is accessed via the System -> Preferences menu).
== Future work ==
Line 60: Line 99:
{{{
+-----------------------------+
| _Power Preferences... | -> system power preferences
|(o) No text |
|( ) Remaining time |
|( ) Percentage Charge |
+-----------------------------+
}}}
 * Find a less bad way of expressing the relationship between computer sleep and display sleep.
 * Find a less confusing way of allowing lockdown of non-admin accounts.
 * Allow configuration of UPS devices.
Line 69: Line 103:
(NB: RyanLortie is currently working on this patch for battstat-applet) == Outstanding issues ==
Line 71: Line 105:
=== Power Off Dialog ===

{{{
+-----------------------------------------------+
| |
| [ ] |
| [ ? ] Are you sure you want to power off? |
| [ ] |
+-----------------------------------------------+
| (_Restart) (_Sleep) (_Cancel) ((_Power Off)) |
+-----------------------------------------------+
}}}

 * Power button -> pop up the power off dialog
 * dialog box must be there -very- fast. don't do fading screen effect if we can't do it quickly (NB: gnome logout dialog does it slow but gnome-screensaver can do it quickly. find out why.)
 * all options in dialog are accessible with single (no need to hold alt) keypress.
 * default is poweroff, accessible by pressing enter
 * button order is important here. this is according to the gnome HIG. the only negotiable items are the restart and sleep buttons.

=== Power Preferences Dialog ===

If '''Suspend''' is supported:
{{{
+-----------------Power Preferences-------------------------+
| When Running on batteries: |
| Dim the displayer after: +---------||---+ |
| 50min |
| Turn the display off after: +---------||---+ |
| 50min |
| Put computer to sleep after: +---------||---+ |
| 50min |
| |
| Options |
| [x] Suspend on lid close: |
| [x] require password when |
| waking from sleep/hibernate |
| [x] notify when battery is done charging |
| |
| Battery Low Warning |
| Issue warning when time left falls to: +---------||---+ |
| 15 min remaining |
| |
+-------------------------------------------------------------+
}}}


 * one tab
 * if suspend is unsupported then:
   - hide suspend time slider
   - hide suspend-on-lid-close option
 * time until automatic suspend
 * checkbox for suspend on lid close
   - defaults to on if suspend is whitelisted for laptop
 * checkbox for "require password when waking from sleep/hibernate"
   - defaults to off if user is autologin
   - essentially, invoke the screensaver just before suspending
 * sliders for battery low in TIME (not percentage)
   - warnings issued for battery low
   - automatic shutdown for battery critical
     - automatic shutdown may be disabled by hidden gconf key
 * we intentionally don't consider, for example, putting the computer to sleep when on AC.
 * the lock-on-sleep option has no effect on the normal behaviour of the screensaver.
 * How do we cater for the part of Candice's use case where she wants to configure what happens while nobody is logged in?
 * How do we cater for Courtney's use case?

Summary

To maintain simplicity, Ubuntu's power management interface allows configuration only of those options that people are likely to want to change (with other options having sane defaults, not configurable graphically), and presents only batteries for for the computer itself.

Rationale

There should be simple, reliable, and understandable methods of:

  • shutting down the computer
  • putting the computer into a low-power-use state
  • going into a low-power-use state after some period of inactivity
  • blanking the screen, instead of using a power-sapping screensaver, when running on battery power
  • preventing data loss when the battery runs out.

Currently people need to edit text files in /etc to enable suspend to RAM, and to select which services will be restarted. Also, it's currently impossible to configure how the system should behave in various situations, such as on lid close. All of these points should be configurable graphically.

Use cases

  • Michael is a harried Hong Kong businessman who has just installed Ubuntu 6.04 on his home desktop machine. He doesn't care about power management; he wants it to just work and do the right thing.
  • Mei-Li is flying back to her home in London after a successful business trip to Hong Kong (during which she persuaded Michael to install Ubuntu). At the start of the flight, she sees she has 3 hours 20 minutes of battery left on her ThinkPad, possibly enough to finish a presentation she has to give tomorrow. As it turns out, she doesn't quite finish it; Ubuntu automatically puts the machine into hibernation when the battery reaches a critically low level. Nineteen hours later, Mei-Li arrives back at her apartment, plugs in her ThinkPad, opens it up and resumes work from where she left off.

  • Candice runs a university computer lab containing 60 iMacs -- a significant use of electricity for a university on a tight budget (they upgraded from Mac OS 9 to Ubuntu partly because it was cheaper than OS X). To save power, Candice wants each computer to go to sleep if idle for half an hour, even when nobody is logged in, and she does not want students to be able to alter the power management settings.
  • Bob runs the IT department at Hydroponical Light Industries. He gives his salespeople laptops with Ubuntu preinstalled, but since they're salespeople and not tech wizards, Bob locks down the power settings so they can't be messed with.
  • Courtney shares her Presario with her evil twin sister, Tara. Tara likes playing practical jokes, and tries to set up a cron job to spontaneously shut down or suspend the system if Courtney is logged in. This is unsuccessful.

Design

Panel menu

attachment:power-menu.jpg

There is a power menu on the the panel (either applet or notification icon), which shows the charge only of the primary battery (we make no attempt to deal with wireless mouse batteries, for example), or a power adapter icon if the battery is fully charged. The first three items in the menu configure how the menu title itself appears, with the first two of these sneakily doubling as more explicit status indicators for the battery:

  • "Time (xh ym remaining)", or "Time (xh ym to charge)", or if fully charged, just "Time"

  • "Percentage (z %)"

The final item in the menu opens the Power Management preferences.

(RyanLortie is currently working on this patch for battstat-applet.)

Shutdown confirmation alert

Pressing the power button on the computer puts up the shutdown alert immediately. Implementation note: gnome logout dialog does it slow but gnome-screensaver can do it quickly. find out why.

attachment:shutdown.jpg

All buttons in the alert can be activated with a single keypress (no need to hold down Alt):

  • Enter for "Shut Down"
  • Escape for "Cancel"
  • S for "Sleep"
  • R for "Restart".

Power Management preferences

attachment:power-applet.jpg

The "When:" menu contains items "Using Battery" and "Plugged In". If no battery is detected, the menu is unavailable, but the text "Plugged In" still appears active. Implementation note: If this is not possible, "Plugged In" should be presented as plain text instead of a menu. Translator note: The text inside and outside the menu can be distributed differently as appropriate for other languages. For analogy, varieties of English outside North America would understand a "When running on:" menu containing items "Battery" and "Mains Power".

Translator note: Translate the word "idle" to encompass, as much as practical, the meanings of not receiving input, and not displaying a movie or unattended presentation.

If suspend is unsupported, the "Put the computer to sleep when it is idle:" slider is hidden. The "When the lid is closed:" radiobuttons are still visible, though the "Put the computer to sleep" radiobutton is unavailable, so that people do not lose data by mistakenly thinking that their laptop ever goes to sleep.

As the "Put the computer to sleep when it is idle:" slider is moved, the "Put the display to sleep when the computer is idle:" slider tick marks are updated to reflect the possible values (it does not make sense to put the display to sleep when the entire computer is already asleep).

The "Require password when waking from sleep" checkbox is off by default if Ubuntu is set up to log in to an account automatically, and on by default otherwise. It is independent of the operation of the screensaver.

The "When the lid is closed:" section appears only if the computer is a laptop. The selection defaults to "Put the computer to sleep" if the laptop is known to be safe for suspending, and to "Just turn off the display" otherwise.

The "Non-admin accounts use:" section appears only if the current account is that of a sudoer. The "Copy These Settings" button copies the current settings for use by all non-admin accounts. The button is unavailable if the current settings are already those used by all non-admin accounts.

Implementation

In its current state, gnome-power-manager is insufficient for our purposes. The primary problem is that it runs as a gnome session daemon. This causes three problems:

  • Kubuntu and Xubuntu get no love
  • power management doesn't work when at the login screen
  • security issues are introduced if any user (logged in or not) can ask the system to immediately suspend (as is the current case with g-p-m).

The plan is to attempt to work with upstream to address these changes. Specifically, we have asked the following:

  • We require a system policy daemon running as root.
  • Users in group power-config will be able to change power config without password.
  • Users not in this group are prevented from modifying the settings.
  • Use dbus to talk to system daemon, which will make certain they are in the right group.
  • We prefer to have each user able to specify their own settings.
  • If each user can set their own settings then there must be a clear way to set defaults (for new users, login screen) possibly only accessible to admin user.
  • If each user can set their own settings then the new settings must be activated when the user logs in and the default settings must be restored on user logout.

If upstream is willing to work with us then gnome-power-manager will be shipped. If we can't get gnome-power-manager into an acceptable state on time then we will fall back on the default action of continuing with our current power management scripts with a configuration interface added on.

Future work

  • Find a less bad way of expressing the relationship between computer sleep and display sleep.
  • Find a less confusing way of allowing lockdown of non-admin accounts.
  • Allow configuration of UPS devices.

Outstanding issues

  • How do we cater for the part of Candice's use case where she wants to configure what happens while nobody is logged in?
  • How do we cater for Courtney's use case?

PowerManagementConfiguration (last edited 2008-08-06 16:31:02 by localhost)