[Telepathy] Telepathy/Empathy improvements for Gnome Shell
Will Thompson
will.thompson at collabora.co.uk
Thu Nov 11 14:15:30 PST 2010
Hi folks,
At the Boston GNOME Summit this weekend just gone, Rob McQueen and I
chatted to some of the Gnome Shell team about its Telepathy integration.
There are a few tweaks to Empathy, and one slight semantic tweak to the
spec, that we decided would make things more awesome. Apologies for
people who know how the shell works for length. tl;dr:
• Document that one handler can call HandleChannels() on another to
transfer the channel, and add helper API to TpBaseClient to make it easy
and do the Client.Handler.HandledChannels bookkeeping;
• hide the tray icon if the shell is running and no channels need approving;
• don't approve 1-1 Text channels if the shell is running;
• make Empathy change the user's presence based on the session state;
• rename Empathy Internet Messaging to Chat in the .desktop file.
When you mouse to the bottom-right of the screen, a tray fades in from
the bottom which contains transient notification icons and the avatars
of contacts with whom we have ongoing conversations, or we recently
spoke to but aren't talking to currently. If you click an avatar, a
little bubble appears out of it with the conversation so far plus a text
entry. You can chat with the contact right there; or, you can click
anywhere in the bubble (except the text entry) to spawn or focus the
corresponding Empathy window; or you can hit escape to dismiss it. When
the tray's hidden and a new message arrives, a notification appears at
the bottom of the screen for a few seconds with the sender's name and
the first line of the message; you can click the notification to show
the same inline-quick-reply bubble.
First up, credit: this feature is really, really addictive. It's handy
to be able to rattle off a quick reply while I'm doing something else,
and later get easy access to the full chat window.
At a Telepathy level, the shell needs to be an Approver: incoming
channels shouldn't be dispatched to the handler before the user clicks
on the bubble. It also needs to be an Observer, to watch ongoing
conversations and see when they've ended.
To support the case where we don't have an open channel to a contact the
user clicks on, it also has to be a Handler to avoid Empathy being
invoked for the channel request. But now we need a way to transfer that
channel to Empathy. I think the Shell could actually just call
HandleChannels() on Empathy itself. If so, we should document this, and
add convenience API to telepathy-glib.
Empathy's notification bubbles for incoming messages and other events
need dealing with, but this is a matter for another mail.
Currently, Empathy's tray icon shows up in the bottom-right corner, and
flashes continuously while the user is using the mini-chat view on
unapproved text channels. We should hide the tray icon when the shell is
in use, and only show it when channels need approving. Also, we should
not be an approver for 1-1 text channels while the shell is running.
Unrelated to conversations: there's a presence picker in the menu that
appears when you click your name. It doesn't offer the full range of IM
presences: it's for general desktop presence. If you're Available,
notifications get shown to you etc etc; if you're Busy, they hide until
you mouse to the corner. The general opinion seems to be that if Empathy
is running the user should be signed in (unless they pick Offline,
obviously) and if it's not, they shouldn't. So Empathy would listen to
the session's state change notifications (between Available and Busy,
and the implicit change to/from Away) and update your Telepathy status
accordingly. If the user picks Invisible or Away or whatever in Empathy,
then this should take priority over the session state.
Finally, Empathy's full name in its desktop file should be changed to
Chat. The design is that applications that are part of the desktop
platform (like File Browser, Calculator, etc.) should always have
unbranded names, and applications that sit on top (such as Firefox, for
instance) should have branded names. Empathy is considered part of the
desktop.
Regards,
--
Will
More information about the telepathy
mailing list