Defindit Docs and Howto Home

This page last modified: Jun 08 2007
title:Firefox disable Evolution enable Thunderbird KDE
description:KDE settings can be overridden by Gnome gconfd values. This shows how to find them and fix the problem.
keywords:kde,gnome,evolution,firefox,thunderbird

How to get Firefox to use Thunderbird instead of trying to launch
Evolution.

The quick fix is to avoid messing with gconf and use Firefox's
internal config features. Use the about:config feature of Firefox. In
the URL window, enter about:config.

Right click in the blank space and create a new setting. Name the new
setting:

network.protocol-handler.app.mailto

and set its value to:

thunderbird

Do not use a %s since that is a gconf specific feature.

At this point you should be able to click a mailto: link in Firefox
and have Thunderbird launch and open an email compose window to the
specified recipient. (if Thunderbird is already open, it just opens a
compose window)

If you want to know about Firefox and gconf, read on. It is kind of
interesting.

This document applies to Fedora, and it targeted mostly at KDE people
who have to use gconfd for some config because some applications
ignore the KDE preferences.

I got all this to work at the command line with gconftool-2 (yes, the
application name has a hyphen and a digit two). After doing a bunch of
work at the command line, I installed gconf-editor. It seems pretty
nice. With KDE, gconf-editor shows up in my start menu under "System",
and is called "Configuration Editor".

yum install gconf-editor

(Of course you have to run yum as root.)

Evolution seems to be installed by default with Fedora. I don't use it
but the default configuration is for Firefox to call Evolution for
mailto: links. It is possible to remove Evolution without losing much
other functionality, but that still leaves the config problem.

Using rpm and grep, I found everything called "evolution" and removed
it. I don't need gaim since I use Gmail for chat, and I don't have any
idea what ekiga is.

yum remove evolution evolution-webcal evolution-data-server

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
 evolution               i386       2.8.3-2.fc6      installed          36 M
 evolution-data-server   i386       1.8.3-4.fc6      installed         9.9 M
 evolution-webcal        i386       2.7.1-6          installed         265 k
Removing for dependencies:
 ekiga                   i386       2.0.5-3.fc6      installed          13 M
 gaim                    i386       2:2.0.0-0.31.beta6.fc6  installed   18 M
 gnome-panel             i386       2.16.3-2.fc6     installed          10 M
 gnome-pilot             i386       2.0.15-1.fc6     installed         1.9 M

Removing Evolution saves a small amount of disk space, but is hardly
worth the effort.

Firefox (even under KDE) uses gconfd, the Gnome configuration system,
to get values. Many, many packages require gconfd, so this isn't
limited to Firefox. 

This KDE/Firefox/gconfd system is fairly convoluted, and as a result
Firefox may have behaviors which cannot be tracked down using the
about:config feature. In my instance, Firefox tried to open Evolution
for mailto: links, instead of Thunderbird. KDE's email client was set
to Thunderbird, and that was fine. Firefox has no way of answering the
question, "Why are you trying to open Evolution?"

In dealing with previous irritating gconfd issue, I found the
gconftool-2 utility. Sure enough it has a man page, and after trying a
few unsuccessful commands, I was able to get it to spew out all it's
settings:

gconftool-2 -R /desktop/gnome | less

A search for 'evol' turns up this:

  /desktop/gnome/url-handlers/mailto:
   needs_terminal = false
   command = evolution --component=mail %s
   enabled = true

Using the about:config feature in Firefox, and filtering on mail (I
think), I had managed to get Firefox to prompt before launching
mailto: links. The dialog box said it was about to launch
"evolution --component=mail %s" so that all fits.

After more reading of the man page and some trial and error, gconftool-2
gives me the full set of values for /desktop/gnome/url-handlers/mailto.

Here is a snipped of a session transcript:

[zeus ~]$ gconftool-2 -a /desktop/gnome/url-handlers/mailto
 needs_terminal = false
 command = evolution --component=mail %s
 enabled = true
[zeus ~]$ gconftool-2 --type bool --set /desktop/gnome/url-handlers/mailto/enabled false
[zeus ~]$ gconftool-2 -a /desktop/gnome/url-handlers/mailto needs_terminal = false
 needs_terminal = false
 command = evolution --component=mail %s
 enabled = false
[zeus ~]$

Setting enabled to false will disable Firefox from running
Evolution. But that's no good because now Firefox won't launch
anything for a mailto link (Firefox isn't smart enough to use the KDE
prefs).

We must enable the setting, and change the value to "thunderbird
%s". You don't need the full path as long as thunderbird is in your
default path, but you do need the %s or nothing happens. If the
setting has a space in it, you must double-quote the string.


Another session transcript:

[zeus ~]$ gconftool-2 --type string --set /desktop/gnome/url-handlers/mailto/command "thunderbird %s"
[zeus ~]$ gconftool-2 --type bool --set /desktop/gnome/url-handlers/mailto/enabled true
[zeus ~]$ gconftool-2 -a /desktop/gnome/url-handlers/mailto
 needs_terminal = false
 command = thunderbird %s
 enabled = true
[zeus ~]$ 


All done. Below are some extra notes.

You may be wondering where gconfd saves all the settings. After
looking around for 'desktop' with the "locate" utility, and then using
grep -r, I finally found this file:

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml

It is likely that editing that xml file directly will change values,
but since the gconf daemon is probably running, bad things could
happen. You could exit all applications and kill off any running gconf
daemons.

One web page mentions writing changed values to disk with the
following command, but any time I changed the setting, the change was
instantaneous.

gconftool-2 --shutdown