diff --git a/gnome/src/config/hooks-config.c b/gnome/src/config/hooks-config.c
index cfbc79e44d4a2d766132089f63c85e2a8370784f..5a8ee8b292fb804d604440a16d06f5885255fa3a 100644
--- a/gnome/src/config/hooks-config.c
+++ b/gnome/src/config/hooks-config.c
@@ -32,11 +32,12 @@
 #include "gtk2_wrappers.h"
 #include "str_utils.h"
 #include "hooks-config.h"
+#include "eel-gconf-extensions.h"
 #include "dbus.h"
 
 URLHook_Config *_urlhook_config;
 
-GtkWidget *field, *command, *prefix;
+GtkWidget *field, *command, *prefix, *url;
 
 void hooks_load_parameters(URLHook_Config** settings)
 {
@@ -94,6 +95,8 @@ void hooks_save_parameters(void)
     // Decrement the reference count
     g_hash_table_unref(params);
 
+    eel_gconf_set_string(MESSAGING_URL_COMMAND, gtk_entry_get_text(GTK_ENTRY(url)));
+
 }
 
 static void sip_enabled_cb(GtkWidget *widget)
@@ -193,6 +196,21 @@ GtkWidget* create_hooks_settings()
     gtk_entry_set_text(GTK_ENTRY(prefix), _urlhook_config->phone_number_prefix);
     gtk_widget_set_sensitive(GTK_WIDGET(prefix), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widg)));
     gtk_table_attach(GTK_TABLE(table), prefix, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10);
+    
+    gnome_main_section_new_with_table(_("Messaging"), &frame, &table, 4, 2);
+    gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
+    gtk_widget_show(frame);
+    
+    label = gtk_label_new_with_mnemonic(_("Open URL in"));
+    url   = gtk_entry_new();
+    gchar *url_command = eel_gconf_get_string(MESSAGING_URL_COMMAND);
+    if (strlen(url_command))
+        gtk_entry_set_text(GTK_ENTRY(url),url_command);
+    else
+        gtk_entry_set_text(GTK_ENTRY(url), "xdg-open");
+    gtk_label_set_mnemonic_widget(GTK_LABEL(label), url);
+    gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10);
+    gtk_table_attach(GTK_TABLE(table), url  , 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10);
 
     gtk_widget_show_all(ret);
 
diff --git a/gnome/src/eel-gconf-extensions.h b/gnome/src/eel-gconf-extensions.h
index 40eab1ccfdbdbc294d00ce3170e64323297fd7b4..43422018d36c128a7cb55f61b4ab91dace10be05 100644
--- a/gnome/src/eel-gconf-extensions.h
+++ b/gnome/src/eel-gconf-extensions.h
@@ -54,6 +54,7 @@ BEGIN_EXTERN_C
 #define POPUP_ON_CALL				CONF_PREFIX "/state/popup"
 #define HISTORY_ENABLED				CONF_PREFIX "/state/history"
 #define INSTANT_MESSAGING_ENABLED               CONF_PREFIX "/state/instant_messaging"
+#define MESSAGING_URL_COMMAND               CONF_PREFIX "/hook/url_command"
 
 
 #define EEL_GCONF_UNDEFINED_CONNECTION 0
diff --git a/gnome/src/messaging/Makefile.am b/gnome/src/messaging/Makefile.am
index 6ed62c990d8e0510ba7f06dae9319a0e4073ef77..e5f558ba18c9042f1b86ba8caf9a1cda9680ed9a 100644
--- a/gnome/src/messaging/Makefile.am
+++ b/gnome/src/messaging/Makefile.am
@@ -4,8 +4,8 @@ noinst_LTLIBRARIES = libmessaging.la
 
 libmessaging_la_SOURCES = message_tab.c message_tab.h
 
-libmessaging_la_LDFLAGS =
+libmessaging_la_LDFLAGS = $(GCONF_LDFLAGS) $(GTK_LDFLAGS)  $(GLIB_LDFLAGS) $(DBUSGLIB_LDFLAGS)
 
-libmessaging_la_LIBADD = @GTK_LIBS@ @GLIB_LIBS@
+libmessaging_la_LIBADD = @GTK_LIBS@ @GLIB_LIBS@ $(GCONF_LIBS) $(DBUSGLIB_LIBS)
 
-libmessaging_la_CFLAGS = @GTK_CFLAGS@ @GLIB_CFLAGS@ @DBUSGLIB_CFLAGS@
+libmessaging_la_CFLAGS = @GTK_CFLAGS@ @GLIB_CFLAGS@ @DBUSGLIB_CFLAGS@ $(GCONF_CFLAGS)
diff --git a/gnome/src/messaging/message_tab.c b/gnome/src/messaging/message_tab.c
index 71884793177651a0759fc65d7554fde76f7b1097..9e1bc98ed937a2361ced5ad2c599dd6f2df6da80 100644
--- a/gnome/src/messaging/message_tab.c
+++ b/gnome/src/messaging/message_tab.c
@@ -32,6 +32,7 @@
 #include "../dbus/dbus.h"
 #include <glib.h>
 #include "../mainwindow.h"
+#include "eel-gconf-extensions.h"
 #include <string.h>
 
 static GtkWidget  *tab_box    = NULL ;
@@ -195,8 +196,11 @@ on_clicked(GtkTextBuffer *textbuffer UNUSED, GtkTextIter *location UNUSED, GtkTe
        start_link = NULL;
        end_link = NULL;
        if (strlen(text)) {
-         const gchar* argv[3] = {"x-www-browser",text,(char*)NULL};
-         g_spawn_async(NULL,(gchar**)argv,NULL,G_SPAWN_SEARCH_PATH|G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL,NULL,NULL,NULL,NULL);
+           gchar* url_command = eel_gconf_get_string(MESSAGING_URL_COMMAND);
+           if (!strlen(url_command))
+               url_command = "xdg-open";
+           const gchar* argv[3] = {url_command,text,(char*)NULL};
+           g_spawn_async(NULL,(gchar**)argv,NULL,G_SPAWN_SEARCH_PATH|G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL,NULL,NULL,NULL,NULL);
        }
    }
 }