MessagingMenu

Differences between revisions 64 and 97 (spanning 33 versions)
Revision 64 as of 2010-09-17 05:52:55
Size: 28241
Editor: p4FCDF2FC
Comment:
Revision 97 as of 2014-01-07 16:35:50
Size: 23970
Editor: mpt
Comment: clarifies "Session variations" informative status
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<Include(Ayatana/PageTemplate/Header)>>
''Designed by MarkShuttleworth, specified in detail by MatthewPaulThomas''

||<tablestyle="float:right;margin:0 0 1em 1em;" style="border:none;vertical-align:top;">{{attachment:messaging-menu-initial.jpg}}||<style="border:none;vertical-align:top;">{{attachment:mockup.jpg}}||

For Ubuntu Lucid, the messaging menu should by default contain a section for each messaging application you have set up. Each section should have an item for the application as a whole (unless it is a default application without an application-wide new-messages count), then any custom commands specified by the application, then any items for individual message sources within that application. An application may provide a new-messages count or a time-since-last-message for each message source as appropriate, or alternatively provide a new-messages count for the application as a whole. Your default mail application, and Ubuntu’s non-mail default messaging applications (Empathy and Gwibber for Lucid), should be placed first in the menu if you are using them. All application sections should have an item for the application itself, highlighted with a triangle if the application is currently running. Compliant applications should offer an option to hide themselves from the messaging menu altogether. This specification covers the menu itself, as well as desired changes to messaging programs in Ubuntu’s Main and Universe archives.

Canonical Ltd’s Desktop Experience team are developing the messaging menu for Gnome and KDE. The messaging menu is [[https://launchpad.net/indicator-applet|hosted on Launchpad]].
''Designed by MatthewPaulThomas''

||<tablestyle="float:right;margin:0 0 1em 1em;" style="border:none;vertical-align:top;">{{attachment:messaging-menu.png}}||

The messaging menu provides quick access to global messaging status and individual messaging applications. On the PC, its title should show current messaging and chat status. Inside, there should be a section for global chat status, and/or sections for individual applications, and finally an item for clearing the menu. This specification covers the menu itself, as well as suggestions for applications on integrating with it.

Anyone is welcome to fix bugs and make other improvements. The messaging menu is [[https://launchpad.net/indicator-messages|hosted on Launchpad]], and [[https://bugs.launchpad.net/ubuntu/+source/indicator-messages|bugs are reported there too]].
Line 14: Line 13:
The messaging menu provides quick 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 ==
The messaging menu exists to simplify communication for people using Ubuntu. It does this first by letting you set chat status quickly and across chat applications; and secondly by providing quick 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.

== PC ==

===
User stories ===
Line 22: Line 23:
== API ==

A messaging application is '''registered''' with the messaging menu if `$HOME/.config/indicators/messages/applications-blacklist/` does not contain a text file that contains the pathname of the application’s `.desktop` file, and either:
=== Migration ===

In any version of Ubuntu that installs this version of the messaging menu:
 * the Me menu (`indicator-me`) should not be installed by default
 * the installer slide show should not mention the Me menu
 * the only help page mentioning the Me menu should explain that it is no longer present; you can now use Gwibber or similar to post to Twitter etc, the messaging menu to change your IM status, and System Settings to change your password and account details.
 
=== API ===

An application may be registered to show in the messaging menu. If so, it may be registered to use the global chat status items too.

==== Registration ====

An application is '''registered to show in the menu''' if both of these are true:
 * `$HOME/.config/indicators/messages/applications-blacklist/` does not contain a text file that contains the pathname of the application’s `.desktop` file;
Line 26: Line 39:
 * The application is Evolution, Evolution is installed, and it is your default mail client in “Preferred Applications”.

Except for Evolution, an application should register itself only if, and as long as, you have an account or analogous configuration set up in that application (for example, an e-mail account or a feed subscription). This avoids the problem where you cannot remove an application installed by another user from your own messaging menu without having to learn its configuration interface (when in the worst case, the application might not even be available in a language you can read).

'''Test case:''' Without Pidgin installed, open the menu. Pidgin should not be present. Install Pidgin, and open the menu again: Pidgin still should not be present. Launch Pidgin, but quit before setting up an account, and open the menu again: Pidgin still should not be present. Relaunch Pidgin, set up an account, and (without closing Pidgin) open the menu: Pidgin should be present. Uninstall Pidgin, then open the menu again: Pidgin should not be present. Reinstall Pidgin, then open the menu again: Pidgin should be present.

You should be able to manually show or hide a messaging application in the menu using a checkbox in the application’s settings. If you check the checkbox, the application should remove the blacklist file, if it is present, and update the datestamp of the `$HOME/.config/indicators/messages/applications/`''application'' file. ''Should this have a convenience API?''

An application should automatically register itself only if, and as long as, you have an account or analogous configuration set up in that application (for example, an e-mail account or a feed subscription), and you have not already indicated that you don’t want the application in the menu (for example, by turning it off after setting up a previous account). This avoids the problem where you cannot remove an application installed by another user from your own messaging menu without having to learn its configuration interface (when in the worst case, the application might not even be available in a language you can read).

An application is '''registered to use the global chat status''' if… ''what?''

''How should an application set the global chat status?''
Line 34: Line 50:
In the `.desktop` file itself, an application may specify '''shortcut actions''' that can be invoked regardless of whether the program is running. The syntax of these actions is defined in [[ApplicationShortcuts]]. ==== Shortcut actions ====

In the `.desktop` file itself, an application may specify '''shortcut actions''' that can be invoked regardless of whether the program is running. The syntax of these actions is defined in [[http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s08.html|Desktop Entry Specification]].

==== Counts and sources ====
Line 46: Line 66:
For an application to appear in the menu while running it should use [[https://launchpad.net/libindicate|libindicate]] and set the type of the application to '''messaging'''. For an application to appear in the menu while running, it should use [[https://launchpad.net/libindicate|libindicate]] and set the type of the application to '''messaging'''.
Line 50: Line 70:
== Treatment of the API ==

Because the messaging menu contains “Set Up…” items for messaging programs, it will almost always appear, even on a computer that is not being used for messaging. The only situations in which it should not appear is if none of your preferred mail client, Empathy, or Gwibber are installed; or if you have specified in your preferred mail client, in Empathy, and in Gwibber that you do not want each of them to appear in the menu.

## If no applications are registered, the messaging menu should not be displayed at all. (This avoids it being dead weight on a machine that is not used for messaging.)

## If any applications are registered, the messaging menu should appear.

=== Title ===

The title should be the `indicator-messages` icon (in the default theme, an envelope). If any registered applications have set `draw-attention` and have not been focused since it was set, the icon should be set to the `indicator-messages-new` icon (in the default theme, an envelope overlaid by a green dot).

=== Application sections ===

The menu should have these sections:
 * a Mail section for your preferred mail application (regardless of whether it is registered), unless it is blacklisted;
 * a Chat section for Empathy (regardless of whether it is registered), unless it is blacklisted;
 * a Microblogging section for Gwibber (regardless of whether it is registered), unless it is blacklisted;
 * all other applications that are registered and not blacklisted, sorted alphabetically by .desktop `Name`.

There should be separators between sections, but not at the top or bottom of the menu.

Within each section, first should be an '''application item''' representing the application as a whole.
 * For the Mail section, it should be labelled “Mail” and use a black-and-white generic mail icon if the application is registered, or “Set Up Mail…” with no icon if the application is not registered.
 * For the Chat section, it should be labelled “Chat” and use a black-and-white generic chat icon if Empathy is registered, or “Set Up Chat…” with no icon if Empathy is not registered.
 * For the Microblogging section, it should be labelled “Microblogging” and use a black-and-white generic microblogging icon if Gwibber is registered, or “Set Up Microblogging…” if Gwibber is not registered.
 * For all other sections, it should use the actual icon and `Name` of the application.

||<tablestyle="float:right;margin:0 0 1em 1em;" style="border:none;">{{attachment:mockup.jpg}}||

If the application is currently running, this should be indicated by an inward-pointing triangle at the leading edge of the application item. If the application has not provided message source items, its `count` should be shown as part of the application item. Activating 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.)
=== Presentation ===

==== Menu presence ====

The messaging menu should be present whenever you are logged in (that is, not in the standalone installer session or at the login screen) and any applications are registered.

'''Test case:''' Log in to a guest session; the messaging menu should not be present. In Thunderbird, set up an e-mail account; the menu should immediately appear, containing Thunderbird but no chat status items or other applications. Launch Empathy, but close it before setting up an account; the menu should not contain Empathy or chat status items. Relaunch Empathy, and set up an account; the chat status items and Empathy should both be present. Uninstall Empathy; neither the chat status items nor Empathy should be present. Reinstall Empathy; the chat status items and Empathy should reappear in the menu.

||<tablestyle="float:right;margin:0 0 1em 1em;" style="border:none;float:right;">{{attachment:title-icons.png}}||

==== Title ====

By default, the title of the menu should be a monochrome open envelope icon (`indicator-messages`), with the accessible name “Messages”.

If any registered application has set `draw-attention`, that application has not had any of its windows focused since, and you have not subsequently chosen “Clear”, the menu title should instead be a closed and highlighted envelope icon (`indicator-messages-new`), with the accessible name “New Messages”.

When any applications are registered as using the global chat status, and the global equivalent of the status in all those applications is currently the same — for example, if one application is set to “Away” while another is “Away (on the phone)”, both mapping to “Away” — then the envelope icon, whether in its default or new-messages variant, should be overlaid with a miniature of the color icon for the current status. That status should also be appended in brackets to the accessible label, ''e.g.'' “New Messages (Busy)”.

When multiple applications are registered as using the global chat status, and they have ''different'' global equivalent statuses — for example, if one application is set to “Available” while another is “Away” — the envelope should be overlaid with a miniature “'''-'''” icon evoking the indeterminate radio marks inside the menu itself, and “(various statuses)” should be appended to the accessible label.

<<Anchor(chat)>>
==== Chat status section ====

{{attachment:im-section.png}}

The chat status section should appear only when any applications are registered to use it. The section should consist of one radio item each for “Available”, “Away”, “Busy”, “Hidden”, and “Offline”. Each item should use the standard (color) icon for that status.

As usual with radio items, if registered applications are using different statuses, the items representing each of the statuses being used should be in the '''-''' indeterminate state instead of the single '''•''' state.

<<Anchor(applications)>>
==== Application sections ====

The menu should have these sections, with separators between them:
 * in Ubuntu for Android, a section for the “Phone” application, if it is registered;
 * in Ubuntu for Android, a section for the “SMS” application, if it is registered;
 * a section for Ubuntu’s default chat client, if it is registered;
 * a section for Ubuntu’s default mail client, if it is registered;
 * a section for any other registered application, sorted alphabetically by the application `Name`.

{{attachment:application-section.png}}<<BR>>
''Erratum: minutes should be abbreviated as “min”, not “m”.''

Within each section, first should be an '''application item''' representing the application as a whole, using the application’s own icon and `Name`.

{{attachment:application-running.png}}

If the application is currently running, this should be indicated by an inward-pointing triangle at the leading edge of the application item, and an accessible name consisting of the application name plus “ (running)”, ''e.g.'' “Evolution (running)”. If the application has not provided message source items, its `count` should be shown as part of the application item, and appended in brackets to its accessible name, ''e.g.'' “Evolution (running) (46)”. And if the application has set `draw-attention`, the triangle, application name, and any count should all be the same color as the envelope (bug Bug:906043).

Activating the application 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.)
Line 84: Line 122:
Next should be presented the shortcut items for the application, if any, up to a limit of the six first items. Activating any of these menu items should (re-)launch the application with the appropriate options; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else.

If the application has provided message source sub-items, any `count` for the application as a whole should be ignored. Up to six of 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. 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`.
Next should be presented the shortcut items for the application, if any, in whatever order the application specifies, up to a limit of the six first items. Activating any of these menu items should (re-)launch the application with the appropriate options; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else.

If the application has provided message source sub-items, any `count` for the application as a whole should be ignored. Up to six of the sub-items should be presented in the menu, in whatever order the application specifies, below the application item and any shortcut items. 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`. The item’s accessible name should consist of its `name`, and its `count` or unabbreviated `time` in brackets, separated by a space: for example, “Henrietta (17 minutes ago)”.
Line 90: Line 128:
Neither the menu nor any of its items should have a tooltip.

=== Presentation of count ===

A `count` should be presented at the trailing end of the menu item.

''To do: Visual design of exact presentation.''

## as small white text, inside a lozenge with a color 20% along the RGB range 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.''
All application items should be limited to a single line of text (with non-space whitespace rendered as a space). Neither the menu nor any of its items should have a tooltip.

<<Anchor(count)>><<Anchor(time)>>
==== Sources ====

{{attachment:count.png}}

If a source has a ''non-zero'' `count`, this should be presented as a lozenge at the trailing end of the menu item, with its trailing edge horizontally aligned with the trailing edge of the menu contents area.

{{attachment:time.png}}<<BR>>
''Erratum: minutes should be abbreviated as “min”, not “m”.''

Otherwise, if the source has a `time`, that 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 min” or “58 min” (bug Bug:652845). As part of an accessible name, it should be presented as whole words — for example, “4 minutes ago” or “58 minutes ago”.

A time greater than or equal to an hour ago, but from today, should be presented as absolute hours and minutes, in either 12-hour or 24-hour format the same as chosen in [[TimeAndDate#settings|the clock settings]], but without date or seconds.

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”. As part of an accessible name, the day should be presented as a whole word — for example, “Thursday 4:11 AM” or “Saturday 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”. In an accessible name, month names should be unabbreviated.
Line 118: Line 152:
== How applications should integrate with the messaging menu ==

== Recommended behavior for e-mail clients ==

A mail client should register itself when you set up any mail accounts, and unregister itself when you remove the last account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.

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.
If a source has neither a non-zero `count` ''nor'' a `time`, it should not be shown at all.

<<Anchor(clear)>>
==== “Clear” item ====

The “Clear” item should be sensitive whenever there is at least one application with a `draw_attention` request. Activating the item should restore the menu title to the no-new-messages state, but should keep any message sources, counts, and times in the menu.

<<Anchor(integration)>>
=
== How applications should integrate with the messaging menu ===

See [[#API|the API section]] for how applications should let you specify whether they are present in the menu at all.

<<Anchor(integration-mail)>>
==
== Recommended behavior for e-mail clients ====

A mail client should register itself automatically when you set up any mail account (unless you previously turned it off), and unregister itself when you remove the last account. It should also provide settings of the form “Show {type of message} in the messaging menu” or “Show {Name of Program} in the messaging menu”.

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 sender, by folder, or by mail filters.
Line 132: Line 177:
== Recommended behavior for instant messaging clients ==

An IM client should register itself when you set up any IM accounts, and unregister itself when you remove the last account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.
<<Anchor(integration-chat)>>
==
== Recommended behavior for chat or telephony clients ====

A chat client should register itself automatically when you set up any accounts (unless you previously turned it off), and unregister itself when you remove its last account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.
Line 138: Line 184:
An IM client should provide one message source item for each person who, or group chat containing someone, who, has sent you new messages. (It should do this for all relevant people or chats even though a maximum of six will be shown, because that maximum may change in the future.) A chat client should provide one message source item for each person who, or group chat containing someone, who, has sent you new messages. (It should do this for all relevant people or chats even though a maximum of six will be shown, because that maximum may change in the future.)
Line 150: Line 196:
== Recommended behavior for feed readers and microblogging clients ==

A feed reader or microblogging client should register itself when you add any feeds or accounts, and unregister itself when you remove the last feed or account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.

For the purpose of the messaging menu, a '''new message''' is an unread item that the program discovered since the last time you (a) performed any action in the program or (b) selected the corresponding item in the messaging menu. Whether an item is important enough to include in the messaging menu may be configurable within the program.

A feed reader should provide one message source item for each feed that contains new messages. A microblogging client should provide one message source item for each account that contains new messages. (It should do this for all relevant feeds or accounts even though a maximum of six will be shown, because that maximum may change in the future.)

== Changes to default applications ==

=== Evolution ===

==== Initial setup ====

Evolution’s initial setup screen should be altered to include a “Remove From Messaging Menu” button. Activating the button should quit Evolution and blacklist it, thereby removing it from the menu.

||<style="border:none;">{{attachment:evolution-setup-before.png}}||<style="border:none;vertical-align:middle;">→||<style="border:none;">{{attachment:evolution-setup-after.jpg}}||

==== 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:<<BR>>
||<style="border:none;">{{attachment:evolution-preferences-old.png}}||<style="border:none;vertical-align:middle;">→||<style="border:none;">{{attachment:evolution-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.
 * A “Show in the messaging menu” 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 [[http://live.gnome.org/Evolution/NetbookCompatibility|design work for making Evolution netbook-compatible]].)

||<tablestyle="float: left; margin: 0 1em 1em 0; overflow: auto;"> {{attachment: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.

||<tablestyle="clear:both;" style="border:none;">||

=== 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.

Contacts who have just come online should appear as individual items in the menu (without a `time`) for 30 seconds, and should then be removed.

Empathy needs to handle "real-time" events differently, perhaps using morphing windows that close automatically if the caller hangs up without the receiver answering.

''Need to specify changes to settings ([[http://launchpad.net/bugs/516168|bug 516168]]).''

=== Gwibber ===

==== Settings ====

||<style="border:none;">{{attachment:gwibber-preferences-old.png}}||<style="border:none;vertical-align:middle;">→||<style="border:none;">{{attachment: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.

== Changes to other applications ==

=== Akregator ===
=== aMSN ===
=== Back in Time ===
Should use the menu to indicate missing backup medium, instead of ephemeral OSD bubble.
=== Balsa ===
=== Blam ===
=== cGmail ===
=== CheckGmail ===
=== choqoK ===
=== Claws Mail ===
=== Emesene ===
=== Empathy ===
=== Eva ===
=== Gajim ===
=== Gmail Notify ===
=== Gossip ===
=== Grr Feed Reader ===
=== iptux ===
=== KCheckGMail ===
=== KGmailNotifier ===
=== KMail ===
=== KMess ===
=== KNode ===
=== Kadu ===
=== Kita2 ===
=== Konversation ===
=== Kopete ===
=== Kphone ===
=== Licq x 2 ===
=== Liferea ===
=== LostIRC ===
=== LuserNET ===
=== Mailody x 2 ===
=== Mumble ===
=== Pan Newsreader ===
=== 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”.

{{attachment:pidgin-preferences-old.png}} → {{attachment:pidgin-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.

=== Psi ===
=== Quassel IRC ===
=== qutIM ===
=== Sage ===
=== Sim-IM ===
=== Smuxi ===
=== Straw ===
=== Sylpheed ===
=== TalkSoup ===
=== Thunderbird ===
 * [[http://www.omgubuntu.co.uk/2010/05/how-to-add-thunderbird-to-messaging.html|Thunderbird how-to]]
=== Twitux ===
=== XChat ===
=== XChat-Gnome ===

 * There is a new plugin for xchat-gnome for the messaging menu available at https://edge.launchpad.net/xchat-gnome-indicator
 * Probably needs a little work to conform to this spec

=== Xpn ===
=== Yarssr ===


== Risks ==

 * Having “Set Up `______`…” items in the menu forever could grate a bit.

== Unresolved issues ==

 * We need to survey messaging applications for (a) what custom items they'd want when not running ([[ApplicationShortcuts]]), and (b) what custom items they’d want when running. That way we can work out whether it is necessary to provide a separate API for custom items while running.
Telephony clients should ''not'' use the messaging menu to show incoming calls. It is not nearly noticable enough or quick enough to be accessed in time. Use a [[NotificationDesignGuidelines#Morphing_window|morphing window]] instead.

<<Anchor(integration-microblogging)>>
==== Recommended behavior for social networking clients ====

Useful messaging menu behavior for a Twitter, Facebook, or similar client depends greatly on how many messages someone receives. For a typical user, most updates are not addressed directly to them, and it would not be useful for the menu to be highlighted most of the time. So it is inappropriate to `draw-attention` on every update by default.

For example, a Twitter client might have source items for “Updates”, “Replies”, and “Direct Messages”; settings checkboxes for which of those highlight the menu; and default to highlighting the menu on replies and direct messages only.

==== Ubuntu One ====

Ubuntu One should not be in the messaging menu: while it does occasionally present file share invitations, most of the time people spend seeing or using Ubuntu One is not related to communicating with people.

Instead, it should be in the [[SyncMenu|sync menu]] if it exists, or its own application indicator menu otherwise.

=== Session variations ===

''This is a summary only; the specifications of individual items are authoritative.''

In the '''guest session''' and the '''live session''', the indicator and menu should be present as normal.

In the '''standalone installer session''' and the '''login screen''', the indicator should not be present at all.

=== Unresolved issues ===

 * We need to survey messaging applications for (a) what custom items they'd want when not running ([[http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s08.html|Desktop Entry Specification]]), and (b) what custom items they’d want when running. That way we can work out whether it is necessary to provide a separate API for custom items while running.
Line 309: Line 224:
 * Should there limitations enforced in the Messaging Menu on how draw-attention is used?  * Should the menu try to enforce limitations on how `draw-attention` is used?
Line 311: Line 226:
 * How to distinguish visually between applications that are running and not?
== Phone ==

On the phone, the header for the menu should be “Incoming”.

Designed by MatthewPaulThomas

messaging-menu.png

The messaging menu provides quick access to global messaging status and individual messaging applications. On the PC, its title should show current messaging and chat status. Inside, there should be a section for global chat status, and/or sections for individual applications, and finally an item for clearing the menu. This specification covers the menu itself, as well as suggestions for applications on integrating with it.

Anyone is welcome to fix bugs and make other improvements. The messaging menu is hosted on Launchpad, and bugs are reported there too.

Rationale

The messaging menu exists to simplify communication for people using Ubuntu. It does this first by letting you set chat status quickly and across chat applications; and secondly by providing quick 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.

PC

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.

Migration

In any version of Ubuntu that installs this version of the messaging menu:

  • the Me menu (indicator-me) should not be installed by default

  • the installer slide show should not mention the Me menu
  • the only help page mentioning the Me menu should explain that it is no longer present; you can now use Gwibber or similar to post to Twitter etc, the messaging menu to change your IM status, and System Settings to change your password and account details.

API

An application may be registered to show in the messaging menu. If so, it may be registered to use the global chat status items too.

Registration

An application is registered to show in the menu if both of these are true:

  • $HOME/.config/indicators/messages/applications-blacklist/ does not contain a text file that contains the pathname of the application’s .desktop file;

  • $HOME/.config/indicators/messages/applications/ contains a text file that contains the pathname of the application’s .desktop file, that .desktop file exists, and the program the .desktop file refers to also exists.

You should be able to manually show or hide a messaging application in the menu using a checkbox in the application’s settings. If you check the checkbox, the application should remove the blacklist file, if it is present, and update the datestamp of the $HOME/.config/indicators/messages/applications/application file. Should this have a convenience API?

An application should automatically register itself only if, and as long as, you have an account or analogous configuration set up in that application (for example, an e-mail account or a feed subscription), and you have not already indicated that you don’t want the application in the menu (for example, by turning it off after setting up a previous account). This avoids the problem where you cannot remove an application installed by another user from your own messaging menu without having to learn its configuration interface (when in the worst case, the application might not even be available in a language you can read).

An application is registered to use the global chat status if… what?

How should an application set the global chat status?

Shortcut actions

In the .desktop file itself, an application may specify shortcut actions that can be invoked regardless of whether the program is running. The syntax of these actions is defined in Desktop Entry Specification.

Counts and sources

While running, a registered application can also provide either a single count of new messages, or a set of separate message sources (for example, mail folders or syndicated feeds) with their own counts or times. 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 message sources, each source item should have up to 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 count is mutually exclusive with time, though 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. A string not in ISO 8601 format (e.g. “connected”) will be accepted, but not rendered as a time. (Currently time is mutually exclusive with count, though this may change in future.)

  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 application 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.

Presentation

The messaging menu should be present whenever you are logged in (that is, not in the standalone installer session or at the login screen) and any applications are registered.

Test case: Log in to a guest session; the messaging menu should not be present. In Thunderbird, set up an e-mail account; the menu should immediately appear, containing Thunderbird but no chat status items or other applications. Launch Empathy, but close it before setting up an account; the menu should not contain Empathy or chat status items. Relaunch Empathy, and set up an account; the chat status items and Empathy should both be present. Uninstall Empathy; neither the chat status items nor Empathy should be present. Reinstall Empathy; the chat status items and Empathy should reappear in the menu.

title-icons.png

Title

By default, the title of the menu should be a monochrome open envelope icon (indicator-messages), with the accessible name “Messages”.

If any registered application has set draw-attention, that application has not had any of its windows focused since, and you have not subsequently chosen “Clear”, the menu title should instead be a closed and highlighted envelope icon (indicator-messages-new), with the accessible name “New Messages”.

When any applications are registered as using the global chat status, and the global equivalent of the status in all those applications is currently the same — for example, if one application is set to “Away” while another is “Away (on the phone)”, both mapping to “Away” — then the envelope icon, whether in its default or new-messages variant, should be overlaid with a miniature of the color icon for the current status. That status should also be appended in brackets to the accessible label, e.g. “New Messages (Busy)”.

When multiple applications are registered as using the global chat status, and they have different global equivalent statuses — for example, if one application is set to “Available” while another is “Away” — the envelope should be overlaid with a miniature “-” icon evoking the indeterminate radio marks inside the menu itself, and “(various statuses)” should be appended to the accessible label.

Chat status section

im-section.png

The chat status section should appear only when any applications are registered to use it. The section should consist of one radio item each for “Available”, “Away”, “Busy”, “Hidden”, and “Offline”. Each item should use the standard (color) icon for that status.

As usual with radio items, if registered applications are using different statuses, the items representing each of the statuses being used should be in the - indeterminate state instead of the single state.

Application sections

The menu should have these sections, with separators between them:

  • in Ubuntu for Android, a section for the “Phone” application, if it is registered;
  • in Ubuntu for Android, a section for the “SMS” application, if it is registered;
  • a section for Ubuntu’s default chat client, if it is registered;
  • a section for Ubuntu’s default mail client, if it is registered;
  • a section for any other registered application, sorted alphabetically by the application Name.

application-section.png
Erratum: minutes should be abbreviated as “min”, not “m”.

Within each section, first should be an application item representing the application as a whole, using the application’s own icon and Name.

application-running.png

If the application is currently running, this should be indicated by an inward-pointing triangle at the leading edge of the application item, and an accessible name consisting of the application name plus “ (running)”, e.g. “Evolution (running)”. If the application has not provided message source items, its count should be shown as part of the application item, and appended in brackets to its accessible name, e.g. “Evolution (running) (46)”. And if the application has set draw-attention, the triangle, application name, and any count should all be the same color as the envelope (bug 906043).

Activating the application 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.)

All other items (“non-launcher items”) in an application section should be indented such that the leading edge of all non-launcher items in the menu are both lined up with each other, and lined up with the leading edge of the text of every launcher item in the menu.

Next should be presented the shortcut items for the application, if any, in whatever order the application specifies, up to a limit of the six first items. Activating any of these menu items should (re-)launch the application with the appropriate options; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else.

If the application has provided message source sub-items, any count for the application as a whole should be ignored. Up to six of the sub-items should be presented in the menu, in whatever order the application specifies, below the application item and any shortcut items. 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. The item’s accessible name should consist of its name, and its count or unabbreviated time in brackets, separated by a space: for example, “Henrietta (17 minutes ago)”.

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

All application items should be limited to a single line of text (with non-space whitespace rendered as a space). Neither the menu nor any of its items should have a tooltip.

Sources

count.png

If a source has a non-zero count, this should be presented as a lozenge at the trailing end of the menu item, with its trailing edge horizontally aligned with the trailing edge of the menu contents area.

time.png
Erratum: minutes should be abbreviated as “min”, not “m”.

Otherwise, if the source has a time, that 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 min” or “58 min” (bug 652845). As part of an accessible name, it should be presented as whole words — for example, “4 minutes ago” or “58 minutes ago”.

A time greater than or equal to an hour ago, but from today, should be presented as absolute hours and minutes, in either 12-hour or 24-hour format the same as chosen in the clock settings, but without date or seconds.

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”. As part of an accessible name, the day should be presented as a whole word — for example, “Thursday 4:11 AM” or “Saturday 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”. In an accessible name, month names should be unabbreviated.

A time that is not a timestamp, e.g. “connected”, should be presented verbatim.

If a source has neither a non-zero count nor a time, it should not be shown at all.

“Clear” item

The “Clear” item should be sensitive whenever there is at least one application with a draw_attention request. Activating the item should restore the menu title to the no-new-messages state, but should keep any message sources, counts, and times in the menu.

How applications should integrate with the messaging menu

See the API section for how applications should let you specify whether they are present in the menu at all.

A mail client should register itself automatically when you set up any mail account (unless you previously turned it off), and unregister itself when you remove the last account. It should also provide settings of the form “Show {type of message} in the messaging menu” or “Show {Name of Program} in the messaging menu”.

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 sender, by folder, or by mail filters.

A mail program should provide one message source item for each mailbox that contains new messages concerning you. (It should do this for all mailboxes even though a maximum of six will be shown, because that maximum may change in the future.)

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.

A chat client should register itself automatically when you set up any accounts (unless you previously turned it off), and unregister itself when you remove its last account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.

For the purpose of the messaging menu, 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).

A chat client should provide one message source item for each person who, or group chat containing someone, who, has sent you new messages. (It should do this for all relevant people or chats even though a maximum of six will be shown, because that maximum may change in the future.)

Optionally, it may also provide a message source item for each person in your contact list who has not sent you new messages, but who has connected in the past minute and is still online. It should not do this unless it is also configured to display a notification bubble notifying you that the person has connected.

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. For someone who has connected in the past minute but not sent you new messages, time should be set to “connected”.

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.

Telephony clients should not use the messaging menu to show incoming calls. It is not nearly noticable enough or quick enough to be accessed in time. Use a morphing window instead.

Useful messaging menu behavior for a Twitter, Facebook, or similar client depends greatly on how many messages someone receives. For a typical user, most updates are not addressed directly to them, and it would not be useful for the menu to be highlighted most of the time. So it is inappropriate to draw-attention on every update by default.

For example, a Twitter client might have source items for “Updates”, “Replies”, and “Direct Messages”; settings checkboxes for which of those highlight the menu; and default to highlighting the menu on replies and direct messages only.

Ubuntu One

Ubuntu One should not be in the messaging menu: while it does occasionally present file share invitations, most of the time people spend seeing or using Ubuntu One is not related to communicating with people.

Instead, it should be in the sync menu if it exists, or its own application indicator menu otherwise.

Session variations

This is a summary only; the specifications of individual items are authoritative.

In the guest session and the live session, the indicator and menu should be present as normal.

In the standalone installer session and the login screen, the indicator should not be present at all.

Unresolved issues

  • We need to survey messaging applications for (a) what custom items they'd want when not running (Desktop Entry Specification), and (b) what custom items they’d want when running. That way we can work out whether it is necessary to provide a separate API for custom items while running.

  • [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 ??
  • Should the menu try to enforce limitations 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?

Phone

On the phone, the header for the menu should be “Incoming”.

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