A protocol has a mime type: x-scheme-handler/<protocol>. To associate with http, you need to associate with the mime type x-scheme-handler/http.<div><br></div><div>It is up to the implementation to detect the mime type out of that protocol (eg. image/png out of <a href="http://example.com/foo.png">http://example.com/foo.png</a>), but on a practical level, file:// is special-cased to detect the mime type, and the rest is usually left to DEs with things like KIO and such. Correct me if I'm wrong on this one.<br>
<div><br clear="all">J. Leclanche<br>
<br><br><div class="gmail_quote">On Sat, Sep 29, 2012 at 8:22 PM, Yfrwlf <span dir="ltr"><<a href="mailto:yfrwlf@gmail.com" target="_blank">yfrwlf@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
The association of applications to file types and URLs are handled
in different ways by different desktop environments (DEs)
currently. It is understandable as to how this system evolved,
because you want <a>file://</a> to be associated with Dolphin in KDE, and
with Nautilus in Gnome. However, this leaves programs broken which
try to register with specific DEs which the user doesn't use.
Developers are not able to work with every DE's proprietary
registration system because doing so is impossible. This helps
create a detrimental environment for the open source ecosystem.
There should be standards for setting default applications for file
and URL handlers if none currently exist, and they need to address
the issue of DE-specific needs as well as default settings for all
DEs.<br>
<br>
Does anyone know if such standards exist yet? If not, we need to
create them. Here is an example of the logic that could be used.
The first two columns specify what application is the <b>default/primary</b>
application to run when the user calls a certain file or URL type,
and the 3rd column gives the corresponding action that should be
used to decide which one to run.<br>
<br>
<table border="1" cellpadding="2" cellspacing="2" width="100%">
<tbody>
<tr>
<td bgcolor="#ffcccc">DE-Wide</td>
<td bgcolor="#ffcccc" valign="top">DE-Specific<br>
</td>
<td bgcolor="#ffcccc" valign="top">Resulting Selection while
running Specific DE<br>
</td>
<td bgcolor="#ffcccc" valign="top">Action upon installing<br>
</td>
</tr>
<tr>
<td valign="top">none specified<br>
</td>
<td valign="top">none specified</td>
<td valign="top">prompt user for program or do nothing<br>
</td>
<td valign="top">Change both DE-Wide and DE-Specific<br>
</td>
</tr>
<tr>
<td valign="top">nautilus<br>
</td>
<td valign="top">none specified</td>
<td valign="top">run nautilus<br>
</td>
<td valign="top">Change only DE-Specific<br>
</td>
</tr>
<tr>
<td valign="top">none specified</td>
<td valign="top">nautilus<br>
</td>
<td valign="top">run nautilus<br>
</td>
<td valign="top">Could prompt user, change DE-Wide<br>
</td>
</tr>
<tr>
<td valign="top">nautilus<br>
</td>
<td valign="top">dolphin<br>
</td>
<td valign="top">run dolphin<br>
</td>
<td valign="top">Could prompt user<br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
The "Action upon installing" column refers to when a program is
being installed or run for the first time and attempts update the
association. If a program finds an existing setting, it could
either ask the user if they want to change it or make the change
anyway or do nothing. In turn, that choice could, ideally, depend
on a DE or global setting as well so that users could avoid all
prompts like that in order to further create a uniform desktop
experience. Regardless, the installer/program would always at least
add itself to a list of applications which can be used to handle
that file type or URL, so there would be a default app setting and a
path to that app as well as a list of all apps capable of handling
the request.<br>
<br>
Examples:<br>
When installing applications such as torrent clients, they should
register <a>"magnet://"</a> to call them, no matter the DE.<br>
When installing web browsers, "url://" should be associated to them,
no matter the DE.<br>
When installing a chat client, programs should register themselves
for each "aim://", "yahoo://", "xmpp://" etc URL type, and possibly
prompt user for changing the defaults for those if one already
exists.<br>
<br>
Implementation:<br>
What would be the best way to implement this standard? What
existing standards are being used for these types of things, if
any? I know that Gnome has gconf and has what amounts to basically
a registry for Gnome, but the problem is that it is just for Gnome
and so not a true standard that all DEs and programs can use.
Perhaps if Gnome's registry is done well, a similar system could be
placed in ~/.config, which seems to be the standard for all user
configuration data which many apps are currently choosing to use.<br>
<br>
Thoughts, ideas, and suggestions please!<br>
</div>
<br>_______________________________________________<br>
xdg mailing list<br>
<a href="mailto:xdg@lists.freedesktop.org">xdg@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/xdg" target="_blank">http://lists.freedesktop.org/mailman/listinfo/xdg</a><br>
<br></blockquote></div><br></div></div>