[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