SessionHandling
Matthew Paul Thomas, Canonical
Scope
This is an incomplete but living specification on how Ubuntu sessions should work. For each of
- {unlock encrypted disk before startup, start up, log in automatically, log in with password, lock screen manually, lock screen automatically, unlock, switch user account, log out, suspend, hibernate, restart, restart into other OS, shut down},
it should define how that function is made available (or not), looks, behaves, and fails gracefully, for
- {a standard user account, an admin account, a guest session, a live/test-drive session}.
Packages currently involved
cryptsetup (decrypting an encrypted disk)
plymouth (startup screen)
mountall (file system check display during startup)
lightdm (login/lock screen mechanics)
unity-greeter (login/lock screen appearance)
gnome-session (logging in and out, and switching accounts)
indicator-session (device menu and the various quit dialogs)
gnome-power-manager (when to suspend/hibernate)
initramfs-tools (waking from hibernation)
casper (live CD)
Startup
No text screen should appear before or after the startup screen (desktop-p-text-free-boot).
The startup screen should always include the Ubuntu logo. If there are multiple Ubuntu versions installed on this machine, the version number of this version should appear below the logo, as confirmation that you have started up into the right one.
How progress should be displayed in the startup screen depends on how long startup is likely to take in this Ubuntu version:
If less than five seconds (e.g. a future blazing-fast version of Ubuntu on an SSD), progress need not be displayed at all.
- If between five and ten seconds, a spinner, identical to that used in the default theme.
- If more than ten seconds (as in current Ubuntu versions), a determinate progress bar, in the style of the default theme.
If starting up from a CD/DVD (which is likely to take minutes), a slowly-animating optical disc and a determinate progress bar, as a visual explanation that it’s the disc that’s slow, not Ubuntu (fixing bug 287599).
Disk checking
Anything else that takes unusually long
Log in automatically
Log in manually
To test the current design, use unity-greeter --test-mode.
Bugs not yet addressed by this specification
This specification should describe fixes for (or reasons for not fixing) each of these bugs.
crypt-setup:
Bug 889201: Grammar of success message wrong
plymouth:
Bug 36668: Hibernate / Suspend should have graphical splash screens showing progress
mountall:
Bug 594367: Checking drive for errors has insufficient feedback
lightdm:
Bug 821766: Password Hint field is not respected in LightDM greeter
Bug 821771: Set password at next login / Login without a password does not work
Bug 861177: Switching to user without password still shows greeter
Bug 868652: lightdm doesn't provide a gdmsetup type tool
Bug 886415: No GUI for disabling guest account access
unity-greeter:
Bug 813566: Greeter not displayed correctly on multi monitor setup
Bug 838555: Support complex authentication requests
Bug 850554: Enabling screen reader and on-screen keyboard options from the a11y indicator do not start the application in question
Bug 810711: a11y: add option to start dwelling (automatic click after timeout)
Bug 834487: Add keyboard layout indicator to unity-greeter
Bug 844039: Unity Greeter - By default the 'Other' login option should not be displayed
Bug 844044: Unity Greeter - Add Network Login option
Bug 844050: Unity Greeter - finesse animation transitions and kinetics
Bug 844055: Unity Greeter - The word "password" should be inside the password entry box, not above it
Bug 844058: Unity Greeter - Implement the session change menu design
Bug 844081: Unity Greeter - Background of the Unity Greeter should reflect the background chosen by the user that is currently selected vs. Bug 891563: Greeter should not display user wallpaper. Said wallpaper could be sensitive or pornographic
Bug 844096: Unity Greeter - use caps lock indicator visual asset
Bug 844097: Unity Greeter - Error messages should be displayed as shown in the attached design
Bug 855177: Dialog behaves unexpectedly after entering password
Bug 857577: Unity Greeter - Dialogs in unity-greeter are not using Ambiance style
Bug 840777: Muting sound indicator in Unity Greeter does not mute sound on login
Bug 855294: Wide messages do not fit in login box
Bug 855385: The "Login" string should have translators comment
Bug 862090: Greeter forgets session choice when wrong password is entered
Bug 825982: Password field is missing a log in button
Bug 834386: Mirror greeter in RTL locales
Bug 892394 Greeter logo needs to be updated for 12.04
gnome-session:
Bug 833290: No indication that lock screen is suppressed
Bug 855556: “Restart” and “Shut Down” don't work if anyone else is logged in
Bug 159160: make compiz close last when shutting down
Bug 165065: Ubuntu reboot into other OS
Bug 269478: Choosing "Log Out"/"Shut Down" a second time hides the window
Bug 282857: logout dialog window opened on wrong screen
Bug 289673: close menu: allow delaying
Bug 290851: shutdown prompt should use XIDLE
Bug 313228: a program is still running but i want shut down anyway
Bug 328473: System/shutdown dialog are inaccessible with Orca screen reader
Bug 363871: Disabling user switching doesn't disable it completely
Bug 214370: Logout/Shutdown Sound Not Working
Bug 391559: RequestReboot() causes dialog to appear briefly
Bug 395124: logout window appears behind other windows
Bug 435807: Dialog buttons need mnemonics
Bug 485740: "Log out" shortcut should focus the logout window
Bug 540826: Rename "Suspend" to "Sleep"
Bug 607543: Logging into already logged in user (after switching users) causes user to log out
Bug 653860: inhibited shutdown window is not descriptive enough
Bug 654391: No obvious way for root to cleanly shut down a session
Bug 654577: "shut down" should at least log out (prohibited by multiple users)
Bug 686156: shutdown conflict dialogue shows "Untitled window" in task bar
Bug 769961: gnome-session uses Ubuntu specific branding in session name unnecessarily
Bug 773125: gnome-session needs a default session
Bug 855556: "Restart" and "Shut Down" don't work if anyone else is logged in
Bug 859416: Rename GNOME Classic to GNOME Fallback & GNOME to GNOME Shell
Bug 107672: multiple logins by same user
indicator-session:
Bug 436887: Log out, shutdown and reboot confirmation alerts don't follow GNOME HIG
Bug 501864: Switch Users without locking screen
Bug 540826: Rename "Suspend" to "Sleep"
Bug 575211: Indicator-session would benefit from an "Inhibit Screensaver" option
Bug 573797: Does not heed /apps/panel/global/disable_log_out
Bug 590243: Add "blank screen now" option
Bug 596607: Should respect the gnome-session logout_prompt key
Bug 623804: Enable users to configure on the previous 'shutdown timer' feature
Bug 661250: cannot select "shutdown" or "restart" from live session
Bug 750154: No warning that files will be lost at live CD/DVD session exit
Bug 783808: suspend/hibernate options have no confirmation dialog
Bug 820283: fall back to showing the uid if name is not set
Bug 828019: Restart not available when suppress_logout_restart_shutdown is set
Bug 520979: Lockdown only works after restarting indicator-session
Bug 549453: Fast switching asks for password for user account that doesn't use one
Bug 599351: Unlock dialog appears briefly while suspending
Bug 599352: Need to not display hibernation in UI if do not have enough swap space
gnome-power-manager:
Bug 509660: Unlock dialog should be displayed when resuming from standby or hibernation
Previous work
(Many of these documents are by other Canonical designers and are therefore private. They will be either made public or retired.)
Old specification
As a temporary measure until ExitStrategy is implemented, there should be separate Log Out, Sleep, Hibernate, Restart, and Switch Off commands. The Log Out, Restart, and Switch Off commands should have confirmation alerts. The “Sleep” and “Switch Off” terminology should be used consistently across Ubuntu.
Common alert elements
The primary action button should respond to the Enter key, and should not have any other access key. The Cancel button should respond to the Esc key, and should not have any other access key. None of the buttons should have icons.
Log Out
If updates that require a restart are waiting to be installed:
The “Restart” button should have the access key R. If you do not have permission to restart without authenticating, the button label should end with an ellipsis.
Otherwise:
Restart
If you do not have permission to restart without authenticating, the button label should end with an ellipsis.
Switch Off
(The phrase “shut down” is used here in the primary text as a hint for people who are used to “shut down” from previous versions or other OSes.)
If you do not have permission to switch off without authenticating, the button label should end with an ellipsis.
When suspending or hibernating fails
There are three errors Ubuntu might receive when trying to suspend or hibernate.
Not enough swap space to hibernate
Swap space is encrypted
If you have encrypted swap but have not specified a password for the swap, you would not be able to wake from hibernate. To protect you from this, Ubuntu will not hibernate in the first place. In this case, "Hibernate" should not appear in the session menu in the first place.
In the unlikely event that Ubuntu does try to hibernate in this situation ...
Sleep has already been requested
Show nothing extra, because the sleep is happening anyway.
Implementation plan
In indicator-session, implement the new alerts.
In gdm, change “Suspend” to “Sleep” and “Shut Down” to “Switch Off”.
In gnome-power-manager, change “Suspend” to “Sleep” and “Shutdown” [sic] to “Switch Off”.
In gnome-session’s behemoth dialog, change “Suspend” to “Sleep” and “Shut Down” to “Switch Off”.
In gnome-session, change “System policy prevents stopping the system when other users are logged in” to “To switch off the computer while others are logged in, you need to authenticate.” (with a period).
In gnome-user-guide, change the “Ending a Session” page so that it refers to “Switch Off” instead of “Shut Down”, and has a bullet point for “Sleep” instead of wibbling about some vendors letting you suspend.
Later, move the confirmation alerts from indicator-session to gnome-session.