[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Cannot make update-alternatives do what I want



Am 2014-11-07 10:32, schrieb Ken Heard:
In my Wheezy machine I use Iceweasel 31.2.0 as my primary web
browser. I also have an Lenny version -- I think -- of Iceape
installed because I wanted a simple html composer.  Unfortunately to
have Iceape composer I must install Iceape suite which also includes a
browser.

So both browsers are mentioned in the x-www-browser section of
/etc/alternatives.  The Iceape browser is the "auto" selection, and
the Iceweasel browser is listed as a "manual" alternative.

Command "update-alternatives --config x-www-browser" ostensibly
allows me to change to the preferred "manual" browser by selecting it.
I did so but when for example I want to go to a website mentioned in
an email (I use Icedove as my email client) the Iceape browser is
still used for that purpose.  I tried exiting my user and logging in
again -- and also rebooting the machine -- to no avail.  Checking the
browser selection in alternatives is still the one I selected, namely
Iceweasel, not Iceape.

Is there something I need to do to make this change work?

Most graphical applications don't call x-www-browser to run a browser
but rather use the freedesktop.org MIME handling mechanism to select the
browser (that way the user can change their own default without having
to be root and without changing the default of other users).

If you want to set the default for all applications following the
freedesktop.org MIME specification, you should install the xdg-utils
package (if it's not already installed) and do the following (as the
user you want this to happen with):

xdg-mime default iceweasel.desktop x-scheme-handler/http \
                                   x-scheme-handler/https

This will cause all XDG compliant applications to use Iceweasel as its
default browser - but only for the user that issued that command.

The .desktop file must be either installed in your home directory under
~/.local/share/applications/ or system-wide under
/usr/share/applications.[1]

It is also possible to set a system-wide default, but to my knowledge
there is no tool available to do that directly, you should look at the
specification as for how to do that.

Note that the application that is chosen from within Iceweasel/Icedove
is random unless a default is explicitly set, because they just read in
all applications that support that mime type, and the first one they
find wins. But the first one is random because they depend on the order
the .desktop files appear in the directory.

Note also that while xdg-mime default is respected by all major desktop
environment software (KDE SC, GNOME, XFCE, Iceweasel/-dove, ...), some
graphical options of setting these things (such as Iceweasel/-dove file
associations, KDE control panel for default programs / file
associations) will only set these settings for their specific
environments, but not globally. But as I said: they will respect a
global default set by xdg-mime. (I don't know about GNOME or XFCE, maybe
those actually do set the default.)

You can find the latest versions of the relevant specifications here:

http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-latest.html
http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

For icedove specifically, you might also want to look at the following
user preferences:

network.protocol-handler.app.http
network.protocol-handler.app.https
network.protocol-handler.app.ftp
network.protocol-handler.expose.http
network.protocol-handler.expose.https
network.protocol-handler.expose.ftp

If those are explicitly set, they will override anything set in the XDG
mime database.

Christian

[1] If you want to use KDE4 applications on Wheezy, whose desktop files
are in a subdirectory of /usr/share/applications, this is a bit more
complicated; you have to prefix 'kde4-' there, for example 'xdg-mime
default kde4-konqueror.desktop x-scheme-handler/http'. But if you query
the default ('xdg-mime query default x-scheme-handler/http'), it will
only return 'konqueror.desktop', instead of the 'kde4-konqueror.desktop'
that is the actual setting. The KDE4 packages should probably have put
their .desktop files directly in /usr/share/applications...


Reply to: