MessagingMenu

Differences between revisions 39 and 40
Revision 39 as of 2009-08-20 09:24:57
Size: 19745
Editor: yttrium
Comment: removes mention of "time" for application entries; fixes references to "total"
Revision 40 as of 2009-08-26 08:50:43
Size: 19899
Editor: eth0
Comment:
Deletions are marked like this. Additions are marked like this.
Line 32: Line 32:
 2. '''`icon`:''' A vector or bitmap image representing the message source. Ideally, it should be exactly the same icon as the program uses for the same source in the rest of its interface. We request that the icon be provided only by instant messaging clients (the avatar for a contact), with other types of client omitting the icon.  2. '''`icon`:''' A vector or bitmap image representing the message source. Ideally, it should be exactly the same icon as the program uses for the same source in the rest of its interface. We request that the icon be provided only where it represents the person who sent the message, for example, the avatar of a person sending an instant message, with other types of client omitting the icon. Applications should specifically not provide "generic" icons, like "mail" or "IM" or "FedEX".

This specification contains some issues not yet resolved. Your feedback is welcome at MessagingMenu/Comments.

messaging-menu-karmic.png

To satisfy many of the major use cases previously catered for by interactive notification bubbles, and to reduce the number of icons in the notification area, there should be a messaging menu listing sources of new messages concerning you. This menu should replace the notification icons used by Pidgin, Evolution, and later other instant messaging and e-mail applications.

This specification covers the menu itself, as well as desired changes to instant messaging and e-mail programs.

Canonical Ltd’s Design team and Desktop Experience team are the upstream developers for this work. The messageing menu is hosted on Launchpad.

Rationale

The messaging menu exists to provide convenient access to messages concerning you that you may not have seen.

The exact definition of “concerning you” is application-dependent. For example, e-mail programs often let you distinguish between messages that are important enough to notify you about, and messages that are not. Similarly, IRC clients typically let you specify terms that you should be notified about.

User stories

  • Tillie uses a Telstra BigPond e-mail account in Thunderbird. She is subscribed to the AUS-Scottish mailing list, which receives about five messages per month. Any other messages are usually from her nieces and nephews and their children, so receiving one is the highlight of Tillie’s day. When a message arrives she hears the “ding-dong!” from the computer, and stops whatever she’s doing to read it. Her nephew has taught her to look for the “Inbox” item under the envelope menu at the top of the screen.

  • Claude uses Gmail through Prism (with the prism-google-mail package), with cGmail to notify him of new messages. He receives about 80 messages a day, most of which are from mailing lists and get tagged automatically. The new message count appears in the messaging menu, along with status updates from his friends on Identica. He goes through e-mail daily at 9.15 a.m., except for messages from his girlfriend, which he reads as soon as they arrive.

API

To appear in the messaging menu, an application can provide either a single count, or a set of separate message sources (for example, mail folders or syndicated feeds) with their own counts. For example, a Laconica client may provide only the single count, because it presents its updates in a single list and not as separately navigable items. A Usenet newsreader, on the other hand, may provide an item for each newsgroup that has new messages.

When an application provides separate items, each item should have six components.

  1. name: The name of the source. For example, a person’s name, a feed title, or a discussion group name. If a single application has multiple sources with the same name, it should disambiguate them if practical.

  2. icon: A vector or bitmap image representing the message source. Ideally, it should be exactly the same icon as the program uses for the same source in the rest of its interface. We request that the icon be provided only where it represents the person who sent the message, for example, the avatar of a person sending an instant message, with other types of client omitting the icon. Applications should specifically not provide "generic" icons, like "mail" or "IM" or "FedEX".

  3. count: The number of new messages concerning you from this source. (Currently the count is not displayed if im-time is provided, but this may change in future.)

  4. time: A timestamp for the most recent instant message from that source, in ISO 8601 format. The messaging menu takes care of presenting this time in an easy-to-read and locale-sensitive format. Programs that are not IM clients should not set a timestamp.

  5. draw_attention: A request that the messaging menu communicate to the user that something important has arrived in the menu. Currently this is displayed as a green dot in the menu title.

  6. signal: A signal that the messaging menu should return to the application when the menu item is selected. When it receives this signal, the application should immediately display the message source represented by the item, and ideally also the first relevant message in that source.

For an appliction to appear in the menu while running it should use libindicate and set the type of the application to messaging.

All indicators will get a signal when they are represented visually. That signal will not occur for indicators that are either over the limitations of the applet or if the applet is not functioning in some way.

For an application to appear in the menu while not running it needs to provide a link to a desktop file which will appear in the menu when it is not running. The menu will show the Name field of the desktop file along with the Comment field below it when the application is not running. If, for some reason, the Comment field is not suitable for describing the application's purpose in the context of the messaging menu the Comment field can be overridden by including the X-Ayatana-Messages field to the desktop file.

The link to the desktop file at the system level should exist as a file containing only the path to the file in /etc/indicators/messages/applications/ The name of the file should be unique, but will not be displayed to the user in any form. Usually the name of package in the distribution's package manager will suffice as it is unique and descriptive for people wanting to hand edit their computer's setup. If, on a per user basis, a user would like to remove or add an application they can do so by adding a file with the same name in ~/.config/indicators/messages/applications-blacklist or ~/.config/indicators/messages/applications. The file management aspect will be done for them using the Preferences Dialog discussed below.

Treatment of the API

Each messaging application registered should have its own section of the menu. There should be a separator between the program sections, but not at the top or bottom of the menu. If it is registered, an application should be present regardless of whether it is running at the time. If it is not running, however (even if it has crashed), only its named item should be present, without any count or time.

Each section should begin with an item for the application as a whole. This item should use the .desktop Name of the application as its text, but (by request of sabdfl) should not have any icon. Selecting the menu item should (re-)launch the application; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else. (For example, if the only Evolution window currently open is a Calendar window, choosing “Evolution” from the messaging menu should open and focus an Evolution Mail window.)

If the application has not provided sub-items, its count should be shown as part of the application item.

If the application has provided sub-items, any count for the application as a whole should be ignored. The sub-items should be presented in the menu, in the same order the application provided them, below the item for the application as a whole. Each item should be indented by 1 em (measured using the size of the standard menu font). They should use name as their text, and icon (if any) as their icon. The count or time for each item should be presented as part of the menu item. If it has neither count nor time, the time at which the item was registered should be presented as its time.

Selecting an item from the menu should send the associated signal, and also remove the item from the menu.

Neither the menu nor any of its items should have a tooltip.

How should draw_attention be handled?

Should there limitations enforced in the Messaging Menu on how draw_attention is used?

Should the number of subitems be limited to prevent abuse? How many? And how should the excess case be displayed?

How to distinguish visually between applications that are running and not?

Presentation of count

A count should be presented as small white text, inside a lozenge with a color 20% along the line from the menu background color towards the menu text color. The lozenge should be wide enough to contain the number of digits in the count, and the trailing edge of the lozenge should line up with the trailing edge of the available space for the menu item. The vertical alignment should be such that the baseline of the text inside the lozenge lines up with the baseline of the rest of the text in the menu item.

Presentation of time

The time for an item should be presented only if that item does not also have a count.

A time should be displayed in small print, with its baseline aligned with the baseline of the main menu text, and with its trailing edge horizontally aligned with the trailing edge of the menu contents area.

A time less than an hour ago should be presented as relative minutes. For example, “4 m” or “58 m”.

A time greater than or equal to an hour ago, but from today, should be presented as absolute hours and minutes, using 12-hour format, without date or seconds; for example, “4:11 AM”.

A time both great than or equal to an hour ago, and from before today, but from less than six days before the most recent midnight, should be presented the same way, but preceded by the day in abbreviated form. For example, “Thu 4:11 AM” or “Sat 20:07”.

A time from more than six days before the most recent midnight should be preceded by the date instead of the day. For example, “Aug 8 4:11 AM” or “Oct 11 20:07”.

Ideally we would use the same 12- or 24-hour format as used by the panel clock, but the Gnome panel applet system makes this infeasible. This section should be revisited once it becomes possible to customize date presentation in Ubuntu, and/or customize time presentation in a reusable way.

Preference Dialog

A small dialog is needed to configure whether applications appear in the menu or not.

For the purpose of the messaging menu, a new message is an unread message that the program discovered since the last time you (a) performed any action in that mailbox or (b) selected the corresponding item in the messaging menu. Whether a new message concerns you may be configurable within the program, perhaps by folder or by mail filters.

A mail program should place one item in the menu for each mailbox that contains new messages concerning you.

name should be set to to the name of the mailbox. If (and only if) there is more than one mailbox with the same name, the mail program should disambiguate them using the account name if possible, e.g. “Inbox (Home)” vs. “Inbox (Yoyodyne)”.

signal should be set such that selecting an item from the menu focuses the most relevant window to display that mailbox (for example a window that is already displaying that mailbox, if one is open), and switches to the mailbox if necessary.

For the purpose of IM clients, a new message is a message concerning you that was posted at a time when the tab or window in which it appeared was not focused. “Concerning you” for a private chat means every message, and for a public chat means every message that the program highlights (for example, because it mentions your name).

After than the item for the instant messaging program as a whole, each instant messaging section should list the union set of {people who, or group chats that, have sent you new messages} and {people in your contact list who have come online in the past minute and are still online}.

For a group conversation, name should be set to the name of the channel or chat room. If only one person has sent highlighted messages, this should be followed by the name of that person in brackets. Otherwise, it should be followed by the number of people who have sent highlighted messages in brackets.

For an individual conversation, name should be set to the name of the person if known, otherwise their instant messaging ID or IRC nickname.

time should be set to the time of the earliest unseen message from that group or individual, if there is one.

signal should be set such that selecting an item from the menu brings the relevant window to the front, and switches to the relevant tab in that window if necessary.

Application integration

Pidgin

Settings

When the messaging menu is being used, the “System Tray Icon” section of Pidgin’s Preferences should be hidden completely, and Pidgin should always behave as if the “Show system tray icon” setting was set to “Never”.

pidgin-preferences-old.pngpidgin-preferences-new.png

Behavior

When you receive an instant message in Pidgin, in a window that is not active, or in a tab that is not frontmost regardless of whether the window is active, a notification bubble should appear. The icon of the bubble should be the icon of the person, a generic person icon for people with or group icon for people.

Evolution

Settings

How you are notified of new mail is one of the most important settings for a mail program. So it should be presented prominently in Evolution’s Mail Preferences, instead of being hidden in a plug-in as it is now.

Therefore, the “General” tab of the “Mail” panel of Evolution’s Preferences should be altered:
evolution-preferences-old.pngevolution-new.png

Specifically:

  • A “When new mail arrives in” menu should be added to the top of the “General” panel, containing “Inbox” and “any folder” items. If you have more than one e-mail account, the text of the “Inbox” option should read “any Inbox” rather than just “Inbox”. A colon should be shown after the menu, not before.
  • A “Play a sound” checkbox should be added.
  • A “Show a notification bubble” checkbox should be added.
  • An “Indicate unread messages in the panel” checkbox should be added.

The “General” tab is the densest tab in Evolution’s Preferences, so to make room for these new settings, other settings should be rearranged or removed:

  • The “Message Display” section should be renamed to “When displaying messages:”.
  • The “Message Fonts” section heading should be removed, and its contents moved to the top of the “When displaying messages:” section.
  • The “Use the same font as other applications” checkbox should be removed, and Evolution should assume you always want to use the custom font setting. (Having an interface to share font settings between Yelp, Evolution, and nothing else, is more cluttersome than useful.)
  • To make their purpose clearer in the absence of a font-specific introductory heading or checkbox, “Standard Font:” should be changed to “Use proportional font:”.
  • The “Highlight quotations with [XX] color” checkbox should be moved immediately below the font settings.
  • The “Shrink To/Cc/Bcc headers to x addresses” checkbox should be dropped. (These headers can be expanded by clicking a button in the individual message, and how many addresses are shown by default isn’t nearly interesting enough to be a visible setting.)

  • The “Enable Search Folders” checkbox should be removed, and Evolution should run as if it is always on. (If you don’t want any search folders, don’t create any.)
  • The “Help” button should be moved inside the tab, and the redundant “Close” button should be removed.

(These are only minimal changes to make the Evolution Preferences window, with its extra options, compact enough to fit on standard displays. They should not be confused with design work for making Evolution netbook-compatible.)

evolution-plugin.png

Upgrading to a version of Evolution that implements this specification should uninstall the “Mail Notification” plug-in, if it is installed, while migrating its settings. Specifically:

  • The selection of the “Notify new messages for Inbox only” setting should be mapped to whether the “When new mail arrives in” menu is set to “Inbox” or “any folder”.
  • The “Generate a D-Bus message” setting should be ignored.
  • The “Show icon in notification area” setting should be mapped to the “Indicate unread messages in the panel” setting.
  • The “Blink icon in notification area” setting should be ignored.
  • The “Popup message sound together with the icon” setting should be mapped to the “Display a notification bubble” setting.

Empathy

Whenever Empathy is launched directly (e.g. from the Applications menu), it should display the contact list, instead of hiding itself inside the messaging menu or a notification area icon.

People who have sent new instant messages (or IRC channels in which people have mentioned you) should appear as individual items in the messaging menu. Selecting an item should switch to that window, switching to the relevant tab inside that window if necessary.

No other changes are necessary. Empathy already contains the necessary settings for controlling notification bubbles and sounds.

Gwibber

Settings

gwibber-preferences-old.png gwibber-preferences-new.png

The “Window Behavior” settings for Gwibber should be removed.

Behavior

Gwibber should have an application item only, with the count being the number of updates received since Gwibber was last focused.

XChat

KMail

Konversation

Future work

Perhaps include a light, informative label accompanying each launcher telling the user what kind of activity they can engage in by launching each messaging application.

After launching a messaging application:

After launching a messaging application, using either the messaging menu or other means, the application launched becomes active in the messaging menu, and can now display information about its new messages.

In this example, Evolution was launched from the messaging menu. As a result, the Evolution window opened and presented itself to the user. Then Evolution determined that it had new messages of interest for the user and displayed them in the messaging menu. In the example to the right, Evolution shows that 12 "important" messages reside in the mailbox named "Inbox (Canonical)."

Unresolved issues

  • [from Brian Curtis] How to run programs in the background so they're accessible only from the messaging menu?
  • How to configure appearance, length of display, etc
  • MessagingMenu/UDSKarmic

MessagingMenu (last edited 2014-01-07 16:35:50 by mpt)