launch things on the desktop where you ran it.
authorDana Jansens <danakj@orodu.net>
Wed, 21 Mar 2007 16:19:06 +0000 (16:19 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 21 Mar 2007 16:19:06 +0000 (16:19 +0000)
also: kde apps move themselves to the current desktop when they open. what the heck?

openbox/action.c
openbox/startupnotify.c
openbox/startupnotify.h

index e89502f..4fd86d3 100644 (file)
@@ -1109,6 +1109,9 @@ void action_execute(union ActionData *data)
                 env = sn_get_spawn_environment(program,
                                                data->execute.name,
                                                data->execute.icon_name,
+                                               /* launch it on the current
+                                                  desktop */
+                                               screen_desktop,
                                                data->execute.any.time);
                 if (!g_spawn_async(NULL, argv, env, G_SPAWN_SEARCH_PATH |
                                    G_SPAWN_DO_NOT_REAP_CHILD,
index 954b9d4..b9bbab7 100644 (file)
@@ -33,7 +33,7 @@ Time sn_app_started(const gchar *id, const gchar *wmclass)
 }
 gboolean sn_get_desktop(gchar *id, guint *desktop) { return FALSE; }
 gchar **sn_get_spawn_environment(char *program, char *name,
-                                 char *icon_name, Time time)
+                                 char *icon_name, gint desktop, Time time)
 {
     return g_strdupv(environ);
 }
@@ -227,7 +227,8 @@ static gboolean sn_launch_wait_timeout(gpointer data)
 }
 
 gchar **sn_get_spawn_environment(char *program, char *name,
-                                 char *icon_name, Time time)
+                                 char *icon_name, gint desktop,
+                                 Time time)
 {
     gchar **env, *desc;
     guint len;
@@ -244,6 +245,8 @@ gchar **sn_get_spawn_environment(char *program, char *name,
     sn_launcher_context_set_description(sn_launcher, desc);
     sn_launcher_context_set_icon_name(sn_launcher, icon_name ? icon_name : program);
     sn_launcher_context_set_binary_name(sn_launcher, program);
+    if (desktop >= 0 && (unsigned) desktop < screen_num_desktops)
+        sn_launcher_context_set_workspace(sn_launcher, (signed) desktop);
     sn_launcher_context_initiate(sn_launcher, "openbox", program, time);
     id = sn_launcher_context_get_startup_id(sn_launcher);
 
index 850f39a..87b17f9 100644 (file)
@@ -36,7 +36,8 @@ gboolean sn_get_desktop(gchar *id, guint *desktop);
 
 /* Get the environment to run the program in, with startup notification */
 gchar **sn_get_spawn_environment(char *program, char *name,
-                                 char *icon_name, Time time);
+                                 char *icon_name, gint desktop,
+                                 Time time);
 
 /* Tell startup notification we're not actually running the program we
    told it we were