• Launchpad Entry: dx-karmic-fusa

  • Packages affected: gnome-panel, gdm, ubuntu-desktop


The FUSA applet in Jaunty is tied closely to the GDM that is shipped in Jaunty. There are several large patches that Ubuntu has shipped as distro patches to add functionality into the FUSA applet including status switching for IM applications and session management support. These functionalities must be combined with the ability to switch users on the new GDM in Karmic to ensure that users do not see a regression when using the Ubuntu Desktop in Karmic.

Release Note

  • FUSA applet was replaced with a new applet enabling the same functionality but working with the upgraded infrastructure elsewhere in the release.


  • Updated GDM changes the control interface greatly

User stories

  • Jim is getting ready for lunch and he wants to signal to his colleagues and friends that he's not at his desk. He quickly reaches for the menu and sets his status to "Away."
  • Jacque has a friend that would like to use her computer. Her settings are specific to her, but she doesn't want to close all her applications. She goes to the menu and chooses "Guest Session" in order to let her friend use her computer for a little while.
  • Alvin is done for the day and would like to shutdown his computer. He reaches for the menu, but because he has just played a mind numbing game of solitaire selects "Restart." He realizes this as the dialog pops up, which he closes and then properly selects "Shutdown."
  • It's Billy's turn on the computer but his brother was working in his homework. He selects his name from the menu so that he can use his Superman background while he's playing games without messing with his brother's session (which would get him in BIG trouble).
  • Jean is working at a customer's site which frankly she doesn't trust that much. She needs to go get a drink of water and uses the menu to quickly lock her screen before leaving her desk.
  • Future: Jerry would like to tell his friends about how he really likes the hamburger that he's eating. He flips open the menu, logs his message in the status field and rest assured that everyone knows about this great hamburger.

  • Future: Mary doesn't really like maintaining her computer, but she realizes that she has to do it sometime. After putting off all day and when shutting down her computer she sees the ability to install updates and then shutdown. She selects the feature and then leaves work happy that her computer didn't interrupt her but will be up to date in the morning when she gets back.

  • Mark is sharing the computer with his roommates. When one of them wants to check his email, he clicks "New session", lets them connect with their own login, and goes to make himself a cup of coffee. When he comes back, his roommate has finished, and switched back to Mark's session. Fortunately, Mark has chosen to lock his session on switching back, and just need to input his password. His roommate, more trusting, prefers not to lock his own session.
  • Ellis and her family share the same computer. They have chosen not to protect their own session on switching back.
  • James has chosen to lock the session on switching back with Ubuntu 9.04 FUSA applet on his work computer. On October 29 he upgrades to 9.10. When his friend wants to borrow his computer for a while, he switches to the friend's session, without even fearing that Ubuntu might have changed his own security settings when upgrading.
  • Helen has always been annoyed by pesky confirmation dialogs. In Ubuntu 9.10, like in 9.04, she disables the confirmation dialog on shutdown by right clicking on the FUSA applet.
  • Bobby is a first-time Ubuntu user. He wants to shut down his computer, and looks in all menus (Applications, Shortcuts, System) for the Shutdown option. No success. He then looks for the right icon on both the upper and the bottom panels, but don't see any that could be remotely connected with the shutdown idea (he knows it's probably a red icon, because that's what he's always seen on other OS). "Oh, well, I should have listened to my friends - it's probably something that needs the command line". He then hard-shutdowns his computer, and fetches his Windows CD.


  • Empathy will be the default IM client, thus interfacing with Telepathy and Mission Control
  • gnome-session will allow for shutting down and restarting with session support
  • Rebooting into another OS is not a required feature
  • Updates on shutdown is currently not part of FUSA.
  • Microblogging support is not currently a feature required of the applet.


Architecture Diagram: PNG | DOT

The design consists of making three smaller modules that implement each set of fuctionality. Mostly these smaller modules will translate them into a set of menu items that will be then communicated to the small visual element that is in the panel.

Keyboard Shortcuts

Some menu items in the applet have configurable keybindings via the gnome-keybinding-properties program. For menu entries with keybindings, the keybinding should be displayed.

Updates on Shut Down

... in progress ...

Fast User Switching

The following rules determine the user interaction for the user switching features:

System has only 1 administrator or regular desktop user:

Lock Screen
Guest Session
Log Out...

System has more than 1 administrator or regular desktop user, and fewer than 7 such users:

Lock Screen
Guest Session
Switch User   > | User 1
                | User 2
                | ...
                | User (n < 7)
Log Out...
  • Users are listed alphabetically by full username.
  • User images are shown, scaled to 32px on their greatest dimension.
  • Logged-in users' names are displayed in bold.
  • The current user is displayed but disabled.

System has 7 or more administrators or regular desktop users:

Lock Screen
Guest Session
Switch User...
Log Out...

Choosing "Switch User..." brings the user to the normal login screen. "Switch User..." is placed after "Guest Session" because the former is likely to be more heavily used on a system with many user accounts (e.g. home vs. university lab) and bookended menu entries are easier to locate quickly.

Further Usability and Design Decisions

Do we agree with all the items in the menu? Do any of them have a better home?

It may be a good decision to integrate "Guest Session" with the face browser to effect uniform treatment of user switching, whether the user being switched to is a first-class user or a guest user.

Eventually, "Suspend" should be renamed "Sleep." "Suspend" is a harsh word with negative connotations, while "sleep" is pleasant, personified, and complements "Hibernate." If renaming to "Sleep" is feasible for Karmic, this should be done.

When we suspend and hibernate should we dim the screen, lower the music, set IM statuses?

When the computer is put to sleep, the screen should be dimmed slowly. Any playing media applications (e.g. music, movies) should be paused. IM status should be set to "offline", but should be reset to the user's status before the computer was put to sleep.

What do all those statuses mean?

We need to explore meaningful status icons that do not depend on color. This is less important for Karmic, but over time we will need to desaturate status icons if they are displayed persistently in the panel.

  • Available -- user is signed into IM accounts, and status is set to "Available" or equivalent in all. Message notifications (e.g. email, IM) are shown.

  • Away -- same as Available, but Telepathy status is "Away".

  • Invisible -- same as Available, but status is set to "Invisible" on networks that support it so that the user does not show up on friends' rosters.

  • Do Not Disturb -- same as Invisible, but Message notifications are not shown.

  • Offline -- user is logged out of IM networks in Epiphany.

What icon should be shown on the panel when an IM client is not active? Not online? Are they the same?

User status should always be one of the status options available. If the IM client is not active, the user's status should be "Offline" and the corresponding offline icon should be used.

If the lockdown setting is set to not allow locking the screensaver should the item be missing or insensitive?

If the user does not have permission to lock the screen, do not show the "Lock Screen" menu item.

If there is no display manager (LTSP, etc.) how should the display manager items be shown?

  • In some setups there is a display manager that doesn't support talking to it, or that we don't know how to talk to. Effectively means that we can't do things like switch users or guest sessions on these setups. Previously we have removed those items in those cases. -- Ted

If the computer can't suspend/hibernate should those be insensitive or hidden?

If the user does not have permission to suspend or hibernate, do not show the "Suspend" or "Hibernate" menu items. I am not sure what is meant by "if the computer can't".

  • Individual kernel drivers can set a type of capabilities saying that they don't support things like suspend. In some cases the kernel tries to work around it, it others it just signals up the stack that the computer can't do it. Also, there is support for blacklisting suspend on particular models in HAL. -- Ted

We can to some extent, figure out if there are applications who want to block session logout. Even if the information is unreliable, should we try and use it? (probably Karmic + 1, as we'd need time to test the reliability)

If we can determine that an application wants to block session log out, we should do our best to tell the user. NEEDS INFORMATION about the reliability mentioned.

  • Everyone who is smarter and knows how to talk to GNOME Session in a smart way can tell reasons and signal that they're wanting to block things. But, that's not many apps. There is a scheme I've outlined for XSMP for this, though it wouldn't give a reason. That'd be Karmic+1 though. But, if apps didn't use either (which shouldn't be the case) we'd still be in the dark. If we can figure out a cool user experience, I'm sure we could make it clean for all the apps on the CD. -- Ted

What can the user configure in the applet settings?



UI Changes

Besides small tweaks the UI will remain stable. The following mockups are not-pixel perfect, and are only demonstrations of status and user switching in submenus.

fusa_2.png fusa_3.png

Basic menu structure:

Full User Name
Set Status     >
About Me...
Lock Screen
Guest Session
Log Out...
Shut Down...

When user does not have privileges to shut down, restart, etc.:

Full User Name
Set Status     >
About Me...
Lock Screen
Guest Session
Log Out...

See Fast User Switching (above) for further details on menu structure.

Code Changes

The development will reuse the current libraries and infrastructure that was developed as part of the messaging indicator project. This includes a mechanism for loading the applet and also the dbusmenu project for passing simple menus over DBus. It will then build on these adding the specific functionality required for the functionality. Hopefully, the patches already built for FUSA can be pillaged for the majority of this functionality.

In the case of having to doing microblogging functionality or software updates on shutdown those will be integrated into the appropriate modules. This would be entirely new code.


The largest migration issue with the new applet will be handling GNOME Panel settings. Previous development on the FUSA applet used the same namespace, as it was patches to an existing applet. This made it difficult for the vanilla-GNOME effort as it was difficult to excise the new features from the applet itself. It is then desirable to use a new namespace, which leads to panel configuration issues.

Fortunately, in this case, the applets should be interchangable visually. So it is only a matter of replacing the applet's settings with a pointer to a new applet. As soon as the new applet is available this migration should be attempted to figure out any possible issues with the migration. The migration will be done with a packaging script similar to other gnome-panel settings migrations that have been done in the past.

Test/Demo Plan

Testing will occur at multiple levels using different techniques. To test the individual logic components unit tests will be written using dbus-test-runner to allow for testing them in an isolated testing environment. Further tests will be integrated into the mago project for UI testing. This also includes some IM stubs for testing networking related protocols.

Unresolved issues

  • Details of the migration
  • How possible updates on shutdown will be handled
  • If microblogging is a feature, how it'll look/work
  • Migration of gnome-panel patch removing System settings


DesktopTeam/Specs/KarmicFusa (last edited 2009-09-18 17:46:19 by 174-20-169-204)