diff -up gnome-settings-daemon-2.23.1.1/plugins/keybindings/gsd-keybindings-manager.c.orig gnome-settings-daemon-2.23.1.1/plugins/keybindings/gsd-keybindings-manager.c
--- gnome-settings-daemon-2.23.1.1/plugins/keybindings/gsd-keybindings-manager.c.orig 2008-05-30 11:21:48.439899078 +0100
+++ gnome-settings-daemon-2.23.1.1/plugins/keybindings/gsd-keybindings-manager.c 2008-05-30 11:29:17.844005810 +0100
@@ -48,6 +48,9 @@
#define GSD_KEYBINDINGS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_KEYBINDINGS_MANAGER, GsdKeybindingsManagerPrivate))
+extern gboolean gnome_desktop_tsol_is_multi_label_session (void);
+extern void gnome_desktop_tsol_proxy_app_launch (gchar *);
+
typedef struct {
char *binding_str;
char *action;
@@ -346,11 +349,19 @@ keybindings_filter (GdkXEvent
{
XEvent *xevent = (XEvent *) gdk_xevent;
GSList *li;
+ int screen_num = 0;
+ GdkScreen* screen;
if (xevent->type != KeyPress) {
return GDK_FILTER_CONTINUE;
}
+ if ( event != NULL ) {
+ screen = gdk_event_get_screen( event );
+ screen_num = gdk_screen_get_number( screen );
+ }
+
+
for (li = manager->priv->binding_list; li != NULL; li = li->next) {
Binding *binding = (Binding *) li->data;
@@ -368,8 +379,17 @@ keybindings_filter (GdkXEvent
return GDK_FILTER_CONTINUE;
}
+
envp = get_exec_environment (xevent);
+
+ if (gnome_desktop_tsol_is_multi_label_session ()) {
+ gchar *tsolcmd = g_strdup_printf ("%d:%s", screen_num, argv[0]);
+ gnome_desktop_tsol_proxy_app_launch (tsolcmd);
+ g_free (tsolcmd);
+ return GDK_FILTER_CONTINUE;
+ }
+
retval = g_spawn_async (NULL,
argv,
envp,
diff -up gnome-settings-daemon-2.21.5/plugins/media-keys/gsd-media-keys-manager.c.orig gnome-settings-daemon-2.21.5/plugins/media-keys/gsd-media-keys-manager.c
--- gnome-settings-daemon-2.21.5/plugins/media-keys/gsd-media-keys-manager.c.orig 2008-01-22 11:44:21.000000000 +0000
+++ gnome-settings-daemon-2.21.5/plugins/media-keys/gsd-media-keys-manager.c 2008-01-22 14:50:33.883843000 +0000
@@ -108,6 +108,8 @@ G_DEFINE_TYPE (GsdMediaKeysManager, gsd_
static gpointer manager_object = NULL;
+extern gboolean gnome_desktop_tsol_is_multi_label_session (void);
+extern void gnome_desktop_tsol_proxy_app_launch (gchar *);
static void
init_screens (GsdMediaKeysManager *manager)
@@ -196,6 +198,15 @@ execute (GsdMediaKeysManager *manager,
char *exec;
char *term = NULL;
+ if (gnome_desktop_tsol_is_multi_label_session ()) {
+ gchar *tsolcmd;
+ /* FIXME: assume the screen 0 since ACME does not support multi-head */
+ tsolcmd = g_strdup_printf ("0:%s", cmd);
+ gnome_desktop_tsol_proxy_app_launch (tsolcmd);
+ g_free (tsolcmd);
+ return;
+ }
+
retval = FALSE;
if (need_term) {