<p>I love upstream. </p>
<p>Is this a viable option for our first release? It all sounds simple enough except for the mc plugin. I have no idea how hard that is.</p>
<p>You said the applet should take the bus name. Can we expose this via the data engine somehow?</p>
<div class="gmail_quote">On 15 Apr 2011 18:55, &quot;George Goldberg&quot; &lt;<a href="mailto:grundleborg@googlemail.com">grundleborg@googlemail.com</a>&gt; wrote:<br type="attribution">&gt; <a href="https://bugs.kde.org/show_bug.cgi?id=270675">https://bugs.kde.org/show_bug.cgi?id=270675</a><br>
&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; --- Comment #1 from George Goldberg &lt;grundleborg googlemail com&gt;  2011-04-15 17:47:38 ---<br>&gt; The solution lies upstream :)<br>&gt; <br>&gt; It should be done as follows: <br>
&gt; <br>&gt; 1) Every UI capable of changing presence (defined as able to set accounts to<br>&gt; offline) registers for a unique DBus busname (with the queue flag set).<br>&gt; 2) Mission Control checks that this bus name is not belonging to &quot;nobody&quot;.<br>
&gt; 3) When this changes to &quot;nobody&quot; MC takes the accounts offline.<br>&gt; <br>&gt; The result is that all accounts are taken offline when the user has no UI to<br>&gt; set them offline anymore.<br>&gt; <br>&gt; To implement this the following is needed:<br>
&gt; 1) SPEC update to detail this, along with the busname that presence UI&#39;s should<br>&gt; try and take<br>&gt; 2) Plasma applet and COntact List should take the busname.<br>&gt; 3) MC plugin to take accounts offline when necessary.<br>
&gt; <br>&gt; IRC Logs<br>&gt; ========<br>&gt; [16:38:43] &lt;barisione&gt; grundleborg: I dislike the idea of being online if there<br>&gt; is no running presence ui or contact list<br>&gt; [16:38:52] &lt;grundleborg&gt; barisione: exactly<br>
&gt; [16:39:17] &lt;grundleborg&gt; barisione: but we want to find a way to implement it<br>&gt; withough having to say &quot;YOU MUST USE PRESENCE UI $X and when you quit it, you<br>&gt; will go offline&quot;<br>&gt; [16:40:28] &lt;smcv&gt; grundleborg: have all presence UIs (including contact lists)<br>
&gt; take a particular bus name, setting the &quot;I don&#39;t mind queueing&quot; flag; if that<br>&gt; name has no owner, go offline?<br>&gt; [16:41:04] &lt;grundleborg&gt; smcv: intriguing - I didn&#39;t know this was possible<br>
&gt; [16:41:16] &lt;smcv&gt; that would lead to the UI being &quot;if I have no way to ask to<br>&gt; be offline, then put me offline&quot;<br>&gt; [16:41:33] &lt;grundleborg&gt; smcv: i guess we&#39;d have to agree this with all<br>
&gt; presence apps, not just KDE ones though. perhaps part of telepathy-spec?<br>&gt; [16:41:41] &lt;grundleborg&gt; smcv: that&#39;s the desired affect, I think<br>&gt; [16:42:20] &lt;smcv&gt; grundleborg: yeah, in GNOME-land I think Empathy and GNOME<br>
&gt; Shell would be the things that tried to claim the name<br>&gt; [16:42:33] &lt;smcv&gt; one thing to watch out for: dbus-daemon allows atomic<br>&gt; replacement<br>&gt; [16:42:57] &lt;smcv&gt; so if Empathy owns the name, and quits, and GNOME Shell is in<br>
&gt; the queue, the owner can flip straight from Empathy to Shell without ever being<br>&gt; &quot;nobody&quot;<br>&gt; [16:43:12] &lt;grundleborg&gt; smcv: would that be a problem?<br>&gt; [16:43:37] &lt;smcv&gt; but it wouldn&#39;t surprise me if some client APIs &quot;simplified&quot;<br>
&gt; that to &quot;owner changes to nobody, then Shell picks it up&quot;<br>&gt; [16:44:01] &lt;smcv&gt; the atomic replacement thing is necessary for the<br>&gt; implementation I suggested<br>&gt; [16:44:23] &lt;grundleborg&gt; oh i see<br>
&gt; [16:44:42] &lt;oggis_&gt; smcv: oh, is the &quot;I don&#39;t mind queueing&quot; implemented by the<br>&gt; client binding starting to wait for NameOwnerChanged to nothing?<br>&gt; [16:44:47] &lt;smcv&gt; g_bus_watch_name() makes that similification, for instance<br>
&gt; [16:44:54] &lt;smcv&gt; oggis_: no, dbus-daemon contains a queue<br>&gt; [16:45:29] &lt;smcv&gt; the thing that would put accounts offline when no more UIs<br>&gt; existed (presumably MC or a plugin) wouldn&#39;t be able to use a &quot;simplified&quot; API<br>
&gt; like g_bus_watch_name though<br>&gt; [16:45:32] &lt;sjoerd&gt; gnome-shell isn&#39;t a great presence monitor btw, it doesn&#39;t<br>&gt; tell whether any accounts are actually online or if there are which ones<br>&gt; [16:45:33] &lt;oggis_&gt; smcv: thought so - then is there a problem? surely the bus<br>
&gt; daemon would only give the name to the first one in the queue<br>&gt; [16:45:38] &lt;smcv&gt; they&#39;d have to use something that exposed atomic changes<br>&gt; [16:45:55] &lt;sjoerd&gt; It&#39;s just a, you told me your available/busy, it doesn&#39;t<br>
&gt; show any IM state<br>&gt; [16:46:04] &lt;smcv&gt; sjoerd: yeah, bad example then<br>&gt; [16:46:21] &lt;smcv&gt; in Ubuntu, either Empathy or the Unity messaging menu would<br>&gt; count, maybe<br>&gt; [16:46:36] &lt;smcv&gt; but Shell probably shouldn&#39;t, unless it makes it a little<br>
&gt; more obvious that you&#39;re online<br>&gt; [16:47:07] &lt;smcv&gt; perhaps the right rule of thumb is &quot;if it has a &#39;go offline&#39;<br>&gt; option then it&#39;s a good enough presence UI&quot;, which would rule out current Shell<br>
&gt; [16:47:11] &lt;grundleborg&gt; smcv: so should I read that as your solution is not<br>&gt; actually possible beacuse of the DBus client API&#39;s?<br>&gt; [16:47:26] &lt;smcv&gt; grundleborg: oh it&#39;s possible, you just have to be a little<br>
&gt; careful<br>&gt; [16:47:34] &lt;grundleborg&gt; right<br>&gt; [16:47:37] &lt;oggis_&gt; smcv: if you queued for the name when starting, and when<br>&gt; exiting first released the name, then checked by a separate GetNameOwner call<br>
&gt; (not by watching listening to NameOwnerChanged on the well-known name) and if<br>&gt; there is no owner, disconnect, wouldn&#39;t it work despite any client-side<br>&gt; simplifications?<br>&gt; [16:47:54] &lt;oggis_&gt; -watching<br>
&gt; [16:48:00] &lt;smcv&gt; the MC plugin or whatever would have to avoid<br>&gt; g_dbus_watch_name and go directly to the D-Bus-level signal<br>&gt; [16:48:11] &lt;grundleborg&gt; smcv: and are you suggesting that MC be modified to do<br>
&gt; this &quot;setting offline if that bus name is not taken&quot;, or are you saying it<br>&gt; should be done somewhere else?<br>&gt; [16:48:15] &lt;grundleborg&gt; ah<br>&gt; [16:48:15] &lt;smcv&gt; oggis_: oh I see, so make the disconnecting cooperative<br>
&gt; between all the UIs?<br>&gt; [16:48:20] &lt;grundleborg&gt; you answered my question already<br>&gt; [16:48:38] &lt;oggis_&gt; smcv: that&#39;d work, and there aren&#39;t that many presence UIs<br>&gt; to cooperate with so it could be the way to go<br>
&gt; [16:48:45] &lt;smcv&gt; grundleborg: I was assuming MC would do it (because that way,<br>&gt; if all your presence UIs crash, you aren&#39;t secretly online after all)<br>&gt; [16:49:01] &lt;oggis_&gt; umm, yes, them crashing is one thing.<br>
&gt; [16:49:02] &lt;grundleborg&gt; oggis_: it&#39;d still think it&#39;s simpler to do in MC if<br>&gt; possible<br>&gt; [16:49:13] &lt;oggis_&gt; grundleborg: yes<br>&gt; [16:49:31] &lt;smcv&gt; it could work either way<br>
&gt; [16:49:46] &lt;grundleborg&gt; excellent... sounds like we have a viable solution :)<br>&gt; [16:50:44] &lt;oggis_&gt; I like the MC solution more as well though<br>&gt; [16:50:50] &lt;oggis_&gt; now that I think of it<br>
&gt; [16:51:13] &lt;oggis_&gt; that way the only thing the presence UIs need to cooperate<br>&gt; on is that specific service name and queueing for it<br>&gt; [16:51:34] &lt;oggis_&gt; not the correct sequence of checking whether they need to<br>
&gt; disconnect the accounts on exit<br>&gt; <br>&gt; -- <br>&gt; Configure bugmail: <a href="https://bugs.kde.org/userprefs.cgi?tab=email">https://bugs.kde.org/userprefs.cgi?tab=email</a><br>&gt; ------- You are receiving this mail because: -------<br>
&gt; You are the assignee for the bug.<br>&gt; _______________________________________________<br>&gt; KDE-Telepathy mailing list<br>&gt; <a href="mailto:KDE-Telepathy@kde.org">KDE-Telepathy@kde.org</a><br>&gt; <a href="https://mail.kde.org/mailman/listinfo/kde-telepathy">https://mail.kde.org/mailman/listinfo/kde-telepathy</a><br>
</div>