''[[Launchpad:~mpt|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, automatic suspend, manual suspend, automatic hibernate, manual 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, the login screen, the unlock screen}. <> == Packages currently involved == * [[https://bugs.launchpad.net/ubuntu/+source/cryptsetup|cryptsetup]] (decrypting an encrypted disk) * [[https://bugs.launchpad.net/ubuntu/+source/plymouth|plymouth]] (startup screen) * [[https://bugs.launchpad.net/ubuntu/+source/mountall|mountall]] (file system check display during startup) * [[https://bugs.launchpad.net/ubuntu/+source/lightdm|lightdm]] (login/lock screen mechanics) * [[https://bugs.launchpad.net/ubuntu/+source/unity-greeter|unity-greeter]] (login/lock screen appearance) * [[https://bugs.launchpad.net/ubuntu/+source/gnome-session|gnome-session]] (logging in and out, and switching accounts) * [[https://bugs.launchpad.net/ubuntu/+source/indicator-session|indicator-session]] (device menu and the various quit dialogs) * [[https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager|gnome-power-manager]] (when to suspend/hibernate) * [[https://bugs.launchpad.net/ubuntu/+source/initramfs-tools|initramfs-tools]] (waking from hibernation) * [[https://bugs.launchpad.net/ubuntu/+source/initramfs-tools|casper|casper]] (live CD) == Startup == No text screen should appear before or after the startup screen ([[https://blueprints.launchpad.net/ubuntu/+spec/desktop-p-text-free-boot|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. {{attachment:startup-variations.png}} 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 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`.'' <> == Lock == For ten seconds before the session locks automatically, the display should dim, to warn you that the lock is about to happen, giving you a chance to cancel it. Any input, including volume buttons (bug Bug:1396208), should cancel the lock and therefore restore the display. When the screen locks manually or automatically, any display should turn off altogether (bug Bug:947281). When the screen locks manually, any keyboard backlight should turn off as well. == Log Out == == Sleep == == Restart == The Restart command is normally accessed from “Restart…” in the system menu, but can also be accessed from other places, such as [[SoftwareUpdates#After_installing|the “Restart Now…” button in Software Updater]], or [[StartupSettings|the “Restart Into Selected…” button in Startup Settings]]. However it is accessed, it should open the Restart alert. {{attachment:restart.png}} The cogwheel menu should be present only if it is possible to restart directly into the firmware menu on this computer. It should contain one item, “Restart Into Firmware”. (This is hidden in a menu to reduce geeky clutter.) A “Restart Into Windows” or “Restart Into OS X” button should be present only if the relevant system is installed and can be restarted into (bug Bug:165065). Neither of those two controls should be present, however, if you have already [[StartupSettings|chosen to restart into a particular system]]. In that case, the primary text should be of the form “Are you sure you want to close all programs and restart the computer into {Name Of System}?”, and there should be only “Cancel” and “Restart” buttons. If you do not have permission to restart without authenticating, the labels for all “Restart” items in the alert should end with an ellipsis. == Shut Down == == Common behavior for Log Out, Restart, and Shut Down == If the system suspends — either manually or automatically — while any confirmation alert for “Log Out”, “Restart”, or “Shut Down” is visible, the alert should cancel automatically when the session resumes. == 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 Bug:889201: Grammar of success message wrong plymouth: * Bug Bug:36668: Hibernate / Suspend should have graphical splash screens showing progress mountall: * Bug Bug:594367: Checking drive for errors has insufficient feedback lightdm: * Bug Bug:435930: Guest session does not warn about temporary nature of files * Bug Bug:821766: Password Hint field is not respected in LightDM greeter * Bug Bug:821771: Set password at next login / Login without a password does not work * Bug Bug:861177: Switching to user without password still shows greeter * Bug Bug:868652: lightdm doesn't provide a gdmsetup type tool * Bug Bug:886415: No GUI for disabling guest account access unity-greeter: * Bug Bug:813566: Greeter not displayed correctly on multi monitor setup * Bug Bug:838555: Support complex authentication requests * Bug Bug:850554: Enabling screen reader and on-screen keyboard options from the a11y indicator do not start the application in question * Bug Bug:810711: a11y: add option to start dwelling (automatic click after timeout) * Bug Bug:834487: Add keyboard layout indicator to unity-greeter * Bug Bug:844039: Unity Greeter - By default the 'Other' login option should not be displayed * Bug Bug:844044: Unity Greeter - Add Network Login option * Bug Bug:844050: Unity Greeter - finesse animation transitions and kinetics * Bug Bug:844055: Unity Greeter - The word "password" should be inside the password entry box, not above it * Bug Bug:844058: Unity Greeter - Implement the session change menu design * Bug Bug:844081: Unity Greeter - Background of the Unity Greeter should reflect the background chosen by the user that is currently selected vs. Bug Bug:891563: Greeter should not display user wallpaper. Said wallpaper could be sensitive or pornographic * Bug Bug:844096: Unity Greeter - use caps lock indicator visual asset * Bug Bug:844097: Unity Greeter - Error messages should be displayed as shown in the attached design * Bug Bug:855177: Dialog behaves unexpectedly after entering password * Bug Bug:857577: Unity Greeter - Dialogs in unity-greeter are not using Ambiance style * Bug Bug:840777: Muting sound indicator in Unity Greeter does not mute sound on login * Bug Bug:855294: Wide messages do not fit in login box * Bug Bug:855385: The "Login" string should have translators comment * Bug Bug:862090: Greeter forgets session choice when wrong password is entered * Bug Bug:825982: Password field is missing a log in button * Bug Bug:834386: Mirror greeter in RTL locales * Bug Bug:892394 Greeter logo needs to be updated for 12.04 gnome-session: * Bug Bug:833290: No indication that lock screen is suppressed * Bug Bug:855556: “Restart” and “Shut Down” don't work if anyone else is logged in * Bug Bug:159160: make compiz close last when shutting down * Bug Bug:165065: Ubuntu reboot into other OS * Bug Bug:269478: Choosing "Log Out"/"Shut Down" a second time hides the window * Bug Bug:282857: logout dialog window opened on wrong screen * Bug Bug:289673: close menu: allow delaying * Bug Bug:290851: shutdown prompt should use XIDLE * Bug Bug:313228: a program is still running but i want shut down anyway * Bug Bug:328473: System/shutdown dialog are inaccessible with Orca screen reader * Bug Bug:363871: Disabling user switching doesn't disable it completely * Bug Bug:214370: Logout/Shutdown Sound Not Working * Bug Bug:391559: RequestReboot() causes dialog to appear briefly * Bug Bug:395124: logout window appears behind other windows * Bug Bug:435807: Dialog buttons need mnemonics * Bug Bug:485740: "Log out" shortcut should focus the logout window * Bug Bug:540826: Rename "Suspend" to "Sleep" * Bug Bug:607543: Logging into already logged in user (after switching users) causes user to log out * Bug Bug:653860: inhibited shutdown window is not descriptive enough * Bug Bug:654391: No obvious way for root to cleanly shut down a session * Bug Bug:654577: "shut down" should at least log out (prohibited by multiple users) * Bug Bug:686156: shutdown conflict dialogue shows "Untitled window" in task bar * Bug Bug:769961: gnome-session uses Ubuntu specific branding in session name unnecessarily * Bug Bug:773125: gnome-session needs a default session * Bug Bug:855556: "Restart" and "Shut Down" don't work if anyone else is logged in * Bug Bug:859416: Rename GNOME Classic to GNOME Fallback & GNOME to GNOME Shell * Bug Bug:107672: multiple logins by same user * Bug Bug:873368: Session fails to start when root system full indicator-session: * Bug Bug:436887: Log out, shutdown and reboot confirmation alerts don't follow GNOME HIG * Bug Bug:501864: Switch Users without locking screen * Bug Bug:540826: Rename "Suspend" to "Sleep" * Bug Bug:575211: Indicator-session would benefit from an "Inhibit Screensaver" option * Bug Bug:573797: Does not heed /apps/panel/global/disable_log_out * Bug Bug:590243: Add "blank screen now" option * Bug Bug:596607: Should respect the gnome-session logout_prompt key * Bug Bug:623804: Enable users to configure on the previous 'shutdown timer' feature * Bug Bug:661250: cannot select "shutdown" or "restart" from live session * Bug Bug:750154: No warning that files will be lost at live CD/DVD session exit * Bug Bug:783808: suspend/hibernate options have no confirmation dialog * Bug Bug:820283: fall back to showing the uid if name is not set * Bug Bug:828019: Restart not available when suppress_logout_restart_shutdown is set * Bug Bug:520979: Lockdown only works after restarting indicator-session * Bug Bug:549453: Fast switching asks for password for user account that doesn't use one * Bug Bug:599351: Unlock dialog appears briefly while suspending * Bug Bug:599352: Need to not display hibernation in UI if do not have enough swap space gnome-power-manager: (not including screen blanking, timeout-related, or battery-related functions) * Bug Bug:509660: Unlock dialog should be displayed when resuming from standby or hibernation * Bug Bug:156645: Power button options should include "Do Nothing" * Bug Bug:345979: Not obvious that "Shutdown" power button option is immediate * Bug Bug:540826: Rename "Suspend" to "Sleep" vs. bug Bug:531491: Switch "Shut Down" to "Switch Off" and "Suspend" to "Sleep" * Bug Bug:138102: Closing Lid causes All Screens to Blank ''and'' bug Bug:243751: closing the lid should suspend if and only if no external video is connected * Bug Bug:279406: "Shut Down" dialog doesn't open in the foreground * Bug Bug:391155: Expose gui option to turn off password on resume from standby/hibernate * Bug Bug:553646: Waking from hibernate prompts for password when logging in doesn't * Bug Bug:718931: choices for actions and buttons are arbitrarily missing * Bug Bug:736606: "Do Nothing" option not available for lid closing in Power settings * Bug Bug:788415: Can't disable suspend button * Bug Bug:871047: Can no longer set screen to lock when lid closed * Bug Bug:881798: Shut down doesn't prevent suspend on lid close * Bug Bug:93281: "Suspend failed" message gives false advice * Bug Bug:159686: action 'ask me' (interactive) not available for suspend button * Bug Bug:509660: Resuming from standby/hibernate, screen is blank until key is pressed * Bug Bug:943607: No explanation of why shutdown didn't happen == Previous work == (Many of these documents are by other Canonical designers and are therefore private. They will be either made public or retired.) * [[https://docs.google.com/a/canonical.com/document/d/1ILTJDiDCd25Npt2AmgzF8aOnZZECxTfM0hvsbWT2BxA/edit?hl=en_US#heading=h.6i1yyo30aqfg|Shutdown dialogs]] * [[https://docs.google.com/a/canonical.com/Doc?docid=0AU5sFuLRpCpBZGZra2pqY2pfNzRnYjlzbTZmZw&hl=en_US|3.0 Pre-Ubuntu Greeter (Power On)]] * [[https://docs.google.com/a/canonical.com/View?docid=dfkkjjcj_19rqsnf7fh&revision=_latest|Ubuntu Single Identity UX Specification]] * [[https://docs.google.com/a/canonical.com/document/d/16P383VbgL9WBR1Dl2tP6yXBuAk2--pR9XIbc47vJoWI/edit?hl=en_US|Login and lock screen appearance]] = 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: {{attachment:log-out-restart.jpg}} 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: {{attachment:log-out.jpg}} == Switch Off == {{attachment:switch-off.jpg}} (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 == 1. In `indicator-session`, implement the new alerts. 1. In `gdm`, change “Suspend” to “Sleep” and “Shut Down” to “Switch Off”. 1. In `gnome-power-manager`, change “Suspend” to “Sleep” and “Shutdown” [sic] to “Switch Off”. 1. In `gnome-session`’s behemoth dialog, change “Suspend” to “Sleep” and “Shut Down” to “Switch Off”. 1. 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). 1. 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. 1. Later, move the confirmation alerts from `indicator-session` to `gnome-session`.