[Telepathy] Improved chandler/filter system for MC

Xavier Claessens xclaesse at gmail.com
Tue Oct 9 12:54:55 PDT 2007


Le mardi 09 octobre 2007 à 21:02 +0200, Alban Crequy a écrit :
> 5) a) I can write documents with Abiword through a tube and the tube's
> service is "abicollab". Say that others write processors start to
> implement the abicollab protocol and OOo is now able to handle the
> "abicollab" service. I see the status icon blinking, and when I click
> on it, I want to be able to choose between Abiword and OOo for this
> specific session.
> 
> Is it possible? Which priority will have the status icon, OOo, and Abiword?

> b) Or maybe I want to configure my desktop to always use OOo.
> 
> In this case, do we want to save this setup in gconf, or use
> alternatives to install/remove .service files?

Good point! It's the same problem if I install Empathy and kopette
(let's says KDE will use MC too), when MC gets a Text channel should he
start kopette or Empathy?

I think we should manage that in gnome-default-applications-properties
but I don't know how... How does GNOME chooses between epiphany or
firefox when I click on a URL? Can we do the same kind of thing here?

> 6) When a text channel opens up, the status icon blinks, but I prefer
> to see the first few words of the chat on OSD. And if I am interested
> to follow the chat now, I click on the status icon, and the chat
> client appears.
> 
> The OSD program must have access to the content of the messages. I
> guess OSD has to accept the channel. Can the chat program accept the
> channel if it has been already accepted by a higher priority service
> (the OSD program)?

That's not a problem. For example in Empathy the StatusIcon chandler has
a higher priority for text channels than the chat program. So status
icon receives the channel and can get messages pending on it without
acking them. So it can popup a libnotify bubble with the first message
for example. Once the user click on the icon or the bubble the status
icon chandler tells MC to dispatch the channel to lower level chandlers
and the chat program gets started, status icon didn't ack messages so
they are still pending and the chat program can show them.

Another example is the logger that have the highest priority, it takes
the channel and directly tells MC that it can be dispatched to lower
priority chandlers. But the logger keeps the channel and get all
messages without acking them, and write them in log files.

That's the power of TP's spec, many processes can use one channel in the
same time.

> 7) a) I am currently in a meeting and I use Abicollab + voice call for
> working. A friend bothers me because he try to start a gtetrinet
> session with me. Because I don't want the status icon blinking nor the
> gtetrinet client opens up, I want to disable all games services during
> the meeting.

We can make a "filter" chandler with a higher priority than the status
icon. Each time it gets a channel or tube it checks if the user wants
that channel, and close the channel if the user don't want it. We need
some policy to accept/reject channels, using for example some gconf keys
to black-list some tube services, and some UI to modify those keys. Or
that chandler can popup a window asking the user "You get a tetrinet
service tube, do you want to play the game?
Yes/No/No-and-dont-ask-again"

It may be tricky to get it easy for the user but I think there is no
technical problem here.

> b) Or maybe I want to disable gtetrinet for this specific contact.
> 
> Do my contacts know if I am available for chatting, and abicollab, but
> I don't want to be disturbed by tetrinet-x? Maybe I want a different
> presence for each service. How to keep it simple to the user?

Hum, I don't know how we can tell contacts which kind of tube/channel
you can/want to accept. Can we use the Capabilities interface for that?

Thanks,
Xavier Claessens.




More information about the Telepathy mailing list