Index: src/terminal-util.c
===================================================================
--- src/terminal-util.c	(revision 3110)
+++ src/terminal-util.c	(working copy)
@@ -228,6 +228,7 @@
 	uri = g_strdup (orig_url);
       break;
     case FLAVOR_VOIP_CALL:
+  case FLAVOR_XMPP:
     case FLAVOR_AS_IS:
       uri = g_strdup (orig_url);
       break;
Index: src/terminal-screen.c
===================================================================
--- src/terminal-screen.c	(revision 3110)
+++ src/terminal-screen.c	(working copy)
@@ -167,6 +167,7 @@
   { SCHEME "//(?:" USERPASS "\\@)?" HOST PORT "(?:" URLPATH ")?", FLAVOR_AS_IS, G_REGEX_CASELESS },
   { "(?:www|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT "(?:" URLPATH ")?", FLAVOR_DEFAULT_TO_HTTP, G_REGEX_CASELESS  },
   { "(?:callto:|h323:|sip:)" USERCHARS_CLASS "[" USERCHARS ".]*(?:" PORT "/[a-z0-9]+)?\\@" HOST, FLAVOR_VOIP_CALL, G_REGEX_CASELESS  },
+  { "(?:xmpp:)" USERCHARS_CLASS "[" USERCHARS ".]*\\@" HOSTCHARS_CLASS "+\\." HOST, FLAVOR_XMPP, G_REGEX_CASELESS  },
   { "(?:mailto:)?" USERCHARS_CLASS "[" USERCHARS ".]*\\@" HOSTCHARS_CLASS "+\\." HOST, FLAVOR_EMAIL, G_REGEX_CASELESS  },
   { "news:[[:alnum:]\\Q^_{|}~!\"#$%&'()*+,./;:=?`\\E]+", FLAVOR_AS_IS, G_REGEX_CASELESS  },
 };
Index: src/terminal-screen.h
===================================================================
--- src/terminal-screen.h	(revision 3110)
+++ src/terminal-screen.h	(working copy)
@@ -32,6 +32,7 @@
   FLAVOR_DEFAULT_TO_HTTP,
   FLAVOR_VOIP_CALL,
   FLAVOR_EMAIL,
+  FLAVOR_XMPP,
   FLAVOR_SKEY
 } TerminalURLFlavour;
 
Index: src/terminal-window.c
===================================================================
--- src/terminal-window.c	(revision 3110)
+++ src/terminal-window.c	(working copy)
@@ -1076,7 +1076,7 @@
   TerminalScreen *screen = info->screen;
   GtkWidget *popup_menu, *im_menu, *im_menu_item;
   GtkAction *action;
-  gboolean can_paste, can_paste_uris, show_link, show_email_link, show_call_link, show_input_method_menu;
+  gboolean can_paste, can_paste_uris, show_link, show_email_link, show_xmpp_link, show_call_link, show_input_method_menu;
   
   remove_popup_info (window);
 
@@ -1092,12 +1092,15 @@
   can_paste_uris = targets != NULL && gtk_targets_include_uri (targets, n_targets);
   show_link = info->string != NULL && (info->flavour == FLAVOR_AS_IS || info->flavour == FLAVOR_DEFAULT_TO_HTTP);
   show_email_link = info->string != NULL && info->flavour == FLAVOR_EMAIL;
+  show_xmpp_link = info->string != NULL && info->flavour == FLAVOR_XMPP;
   show_call_link = info->string != NULL && info->flavour == FLAVOR_VOIP_CALL;
 
   action = gtk_action_group_get_action (priv->action_group, "PopupSendEmail");
   gtk_action_set_visible (action, show_email_link);
   action = gtk_action_group_get_action (priv->action_group, "PopupCopyEmailAddress");
   gtk_action_set_visible (action, show_email_link);
+  action = gtk_action_group_get_action (priv->action_group, "PopupSendIM");
+  gtk_action_set_visible (action, show_xmpp_link);
   action = gtk_action_group_get_action (priv->action_group, "PopupCall");
   gtk_action_set_visible (action, show_call_link);
   action = gtk_action_group_get_action (priv->action_group, "PopupCopyCallAddress");
@@ -1423,6 +1426,9 @@
       { "PopupSendEmail", NULL, N_("_Send Mail To…"), NULL,
         NULL,
         G_CALLBACK (popup_open_url_callback) },
+      { "PopupSendIM", NULL, N_("_Send IM To…"), NULL,
+        NULL,
+        G_CALLBACK (popup_open_url_callback) },
       { "PopupCopyEmailAddress", NULL, N_("_Copy E-mail Address"), NULL,
         NULL,
         G_CALLBACK (popup_copy_url_callback) },
Index: src/terminal.xml
===================================================================
--- src/terminal.xml	(revision 3110)
+++ src/terminal.xml	(working copy)
@@ -57,6 +57,7 @@
 
   <popup name="Popup" action="Popup">
     <menuitem action="PopupSendEmail" />
+    <menuitem action="PopupSendIM" />
     <menuitem action="PopupCopyEmailAddress" />
     <menuitem action="PopupCall" />
     <menuitem action="PopupCopyCallAddress" />
