Add $IBUS_SESSION_ID in socket path.
authorPeng Huang <shawn.p.huang@gmail.com>
Wed, 15 Apr 2009 02:15:10 +0000 (10:15 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Wed, 15 Apr 2009 02:15:10 +0000 (10:15 +0800)
bus/server.c
ibus/common.py
src/ibusbus.c
src/ibusshare.c
src/ibusshare.h

index 425dd860c7520f7bde888d16eae3a67162dab6b0..41bf3e1158fc5d68753d86d8404f90c6fa7b5f41 100644 (file)
@@ -89,7 +89,7 @@ bus_server_listen (BusServer *server)
     gchar *path;
     gboolean retval;
 
-    path = g_strdup_printf("/tmp/ibus-%s", ibus_get_user_name ());
+    path = ibus_get_socket_folder ();
     mkdir (path, 0700);
     chmod (path, 0700);
 
index 527d3a51dcd1e4137c632134af76b5e8d983e111..571ebaaa8f3503a97e7d398933c8b13fbfaba4ec 100644 (file)
@@ -67,7 +67,12 @@ if not __username:
 if not __username:
     __username = os.getenv ("USERNAME")
 
-IBUS_ADDR = "unix:path=/tmp/ibus-%s/ibus-%s-%s" % (__username, __hostname, __display_number)
+__session_id = os.getenv ("IBUS_SESSION_ID")
+
+IBUS_ADDR = "unix:path=/tmp/ibus-%s%s/ibus-%s-%s" % (__username,
+                                                     "-" + __session_id if __session_id else "",
+                                                     __hostname,
+                                                     __display_number)
 # IBUS_ADDR  = "tcp:host=localhost,port=7799"
 
 IBUS_IFACE_IBUS     = "org.freedesktop.IBus"
index 373e5d48de70faf60949a82daa78c3431bb06cef..d4ba0410fcc510d5fd742d14d0e54eaf7e5b968f 100644 (file)
@@ -220,7 +220,7 @@ ibus_bus_init (IBusBus *bus)
 
     ibus_bus_connect (bus);
 
-    path = g_strdup_printf ("/tmp/ibus-%s/", ibus_get_user_name ());
+    path = ibus_get_socket_folder ();
     file = g_file_new_for_path (path);
     priv->monitor = g_file_monitor_directory (file, 0, NULL, NULL);
 
index c7aa1fed50434a69b6d4541081d4e45c8182974a..4893f19c79015e16f8239c340621203cb22a6a72 100644 (file)
@@ -68,6 +68,31 @@ ibus_get_user_name (void)
     return username;
 }
 
+const gchar *
+ibus_get_session_id (void)
+{
+    return g_getenv("IBUS_SESSION_ID");
+}
+
+const gchar *
+ibus_get_socket_folder (void)
+{
+    static gchar *folder = NULL;
+
+    if (folder == NULL) {
+        const gchar *session = ibus_get_session_id ();
+        if (session && session[0] != '\0') {
+            folder = g_strdup_printf ("/tmp/ibus-%s-%s",
+                ibus_get_user_name (), session);
+        }
+        else {
+            folder = g_strdup_printf ("/tmp/ibus-%s",
+                ibus_get_user_name ());
+        }
+    }
+    return folder;
+}
+
 const gchar *
 ibus_get_socket_path (void)
 {
index f3b34c45f3c053bab4edcd5790f4ca0105e87a2f..4c0c645c7db8876768a9f83a6b65dc3903e5d249 100644 (file)
@@ -49,6 +49,7 @@ void             ibus_set_display       (const gchar    *display);
 const gchar     *ibus_get_address       (void);
 const gchar     *ibus_get_user_name     (void);
 const gchar     *ibus_get_socket_path   (void);
+const gchar     *ibus_get_socket_folder (void);
 
 const gchar     *ibus_keyval_name       (guint           keyval);
 guint            ibus_keyval_from_name  (const gchar    *keyval_name);