As an application developer, calling a shell script inside an application to do something is really bad. For example, my application needs open url or local file by external applications, currently there is only way to do it: execute xdg-open shell script by using system() or exec() system call. But this approach has many limitations, such as, it&#39;s impossible to know if and when the application is started successfully. And it might has security issues.<br>
<br>Using dbus approach, any applications can invoke the methods and get feedback in native code very easily. And as dbus is already a freedesktop standard, every modern Linux distributions (even OpenSolaris) bundle dbus by default. I don&#39;t think it&#39;s over-killed here.<br>
<br>Remember, dbus is not only for GNOME and KDE.<br><br>Regards<br>James Su<br><br><div class="gmail_quote">2008/11/11 洪任諭 <span dir="ltr">&lt;<a href="http://pcman.tw">pcman.tw</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Shouldn&#39;t dbus being slightly over-kill here?<br>
If simple scripts can do it, using dbus here only brings complexity.<br>
Besides, currently there are many &quot;org.gnome.xxxx&quot; services which I<br>
don&#39;t think KDE will adopt.<br>
Moreover, if we choose this approach, that means, all desktop<br>
environments which want to be compatible with <a href="http://freedesktop.org/portland" target="_blank">freedesktop.org/portland</a><br>
will have to depend on dbus and create dbus services.<br>
I don&#39;t think most of the authors of lightweight desktops will agree<br>
on this, hence this can inhibit the spreading of <a href="http://freedesktop.org" target="_blank">freedesktop.org</a><br>
specs.<br>
Cross-desktop doesn&#39;t means &quot;making GNOME and KDE talk to each other&quot;.<br>
There are still many other desktop environments for different needs.<br>
GNOME + KDE != all desktop environments.<br>
<br>
Please keep this in mind when making specs.<br>
<div><div></div><div class="Wj3C7c"><br>
On Tue, Nov 11, 2008 at 1:41 PM, Zhe Su &lt;<a href="http://james.su" target="_blank">james.su</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt; wrote:<br>
&gt; I&#39;m wondering if it&#39;s possible to design a set of standard dbus interface<br>
&gt; for xdg-utils, then different desktop environments can implement their own<br>
&gt; dbus services to provide identical functionalities through dbus interface.<br>
&gt;<br>
&gt; Regards<br>
&gt; James Su<br>
&gt;<br>
&gt; On Tue, Nov 11, 2008 at 12:13 PM, 洪任諭 &lt;<a href="http://pcman.tw" target="_blank">pcman.tw</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello the authors/maintainers of xdg-utils,<br>
&gt;&gt; I&#39;m the lead developer of LXDE. &lt; <a href="http://lxde.org/" target="_blank">http://lxde.org/</a> &gt;<br>
&gt;&gt; I have some thoughts regarding to some limitations of current xdg-utils.<br>
&gt;&gt; Here are some proposals to rework it and make it totally extensible.<br>
&gt;&gt;<br>
&gt;&gt; Limitations of current implementation:<br>
&gt;&gt; 1. It only recognize gnome, xfce, and kde and is far from being truely<br>
&gt;&gt; cross-desktop.<br>
&gt;&gt; 2. Authors of new desktop environment need to hack xdg-utils to support<br>
&gt;&gt; their<br>
&gt;&gt; desktop environments, and hope someday Portland project will include<br>
&gt;&gt; their patch.<br>
&gt;&gt; 3. The number of desktop environments is still increasing, and in this<br>
&gt;&gt; way,<br>
&gt;&gt; xdg-utils will finally become very complicated and full of dirty hacks.<br>
&gt;&gt; 4. Even if I only get xfce installed on my distro, xdg-utils still<br>
&gt;&gt; needs to check all the others.<br>
&gt;&gt; 5. Portland project is hard to participate. I sent mails to the<br>
&gt;&gt; mailing list, and they just got ignored.<br>
&gt;&gt;<br>
&gt;&gt; Easy and backward-compatible solution for all the preceding problems -<br>
&gt;&gt; Let desktop environments install their own scripts.<br>
&gt;&gt;<br>
&gt;&gt; Implementation Details (Advantages and disadvantages are listed later<br>
&gt;&gt; in this mail)<br>
&gt;&gt; Taking xdg-utils for example, it should work like this:<br>
&gt;&gt;<br>
&gt;&gt; Looking for scripts in &quot;/usr/share/xdg-utils/xdg-open.d&quot; (or other<br>
&gt;&gt; places are ok).<br>
&gt;&gt; Scripts from various desktop environments can be installed there.<br>
&gt;&gt; 50-gnome<br>
&gt;&gt; 50-kde<br>
&gt;&gt; 60-kde3<br>
&gt;&gt; 50-xfce<br>
&gt;&gt; 99-generic<br>
&gt;&gt; The numbers means &quot;priority&quot;. The generic one, of course, has the<br>
&gt;&gt; lowest priority.<br>
&gt;&gt; This is common practice on UNIX systems.<br>
&gt;&gt; Then, run the scripts installed by various desktop environments one by<br>
&gt;&gt; one.<br>
&gt;&gt; Every script in that dir checks if current desktop session is theirs.<br>
&gt;&gt; If it is, the script opens the file/url with their own mechanism, and<br>
&gt;&gt; returns 0.<br>
&gt;&gt; Otherwise, it returns an error codes.<br>
&gt;&gt; Once failed, the next script with lower priority will be tried.<br>
&gt;&gt;<br>
&gt;&gt; Advantages:<br>
&gt;&gt; 1. Highly extensible.<br>
&gt;&gt; 2. Won&#39;t break any compatibility with current implementation.<br>
&gt;&gt; 3. Easy to maintain. (The scripts are all maintained by authors from<br>
&gt;&gt; respective desktop environments, not you guys from Portland)<br>
&gt;&gt; It&#39;s impossible for Portland developers to maintain hacks for all kinds of<br>
&gt;&gt; desktop environment and constantly fix them for future versions of those<br>
&gt;&gt; desktop environment. It&#39;s quite inefficient and hard to get things right.<br>
&gt;&gt; 4. Don&#39;t need to hard code detection for all kinds of desktop<br>
&gt;&gt; environments in one<br>
&gt;&gt; very large and complicated xdg-* script.<br>
&gt;&gt; 5. Only the desktop environments *really* installed on the system are<br>
&gt;&gt; checked since those scripts are provided by the DEs themselves. So you&#39;ll<br>
&gt;&gt; never always try to find gnome or kde, like the current xdg-utils,<br>
&gt;&gt; even if they are not installed.<br>
&gt;&gt;<br>
&gt;&gt; Disadvantages:<br>
&gt;&gt; 1. The performance is slightly worse. (Since this command won&#39;t be<br>
&gt;&gt; executed continuously in a large loop, it&#39;s not a real issue.)<br>
&gt;&gt; 2. Potential conflicts between scripts installed by various desktops.<br>
&gt;&gt; (This is not possible if those scripts are well-written)<br>
&gt;&gt;<br>
&gt;&gt; For xdg-mime and others, the same method can be used.<br>
&gt;&gt;<br>
&gt;&gt; This can solve all of the problems in current implementation.<br>
&gt;&gt; Any comments? Is it possible to get this new design into Portland<br>
&gt;&gt; xdg-utils?<br>
&gt;&gt;<br>
&gt;&gt; Thank you all in advance.<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Portland mailing list<br>
&gt;&gt; <a href="mailto:Portland@lists.freedesktop.org">Portland@lists.freedesktop.org</a><br>
&gt;&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/portland" target="_blank">http://lists.freedesktop.org/mailman/listinfo/portland</a><br>
&gt;<br>
&gt;<br>
_______________________________________________<br>
Portland mailing list<br>
<a href="mailto:Portland@lists.freedesktop.org">Portland@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/portland" target="_blank">http://lists.freedesktop.org/mailman/listinfo/portland</a><br>
</div></div></blockquote></div><br>