summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-03-21 16:19:06 +0000
committerDana Jansens <danakj@orodu.net>2007-03-21 16:19:06 +0000
commitba161e967b8f994e9c786d65c70318571fbf032b (patch)
tree705443127d52e4ecbcfe9979d3726866e6b93453 /openbox
parentc4446bebff57d6e1bc9185d1f03aa5cc1995ddae (diff)
launch things on the desktop where you ran it.
also: kde apps move themselves to the current desktop when they open. what the heck?
Diffstat (limited to 'openbox')
-rw-r--r--openbox/action.c3
-rw-r--r--openbox/startupnotify.c7
-rw-r--r--openbox/startupnotify.h3
3 files changed, 10 insertions, 3 deletions
diff --git a/openbox/action.c b/openbox/action.c
index e89502f0..4fd86d30 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -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,
diff --git a/openbox/startupnotify.c b/openbox/startupnotify.c
index 954b9d4a..b9bbab72 100644
--- a/openbox/startupnotify.c
+++ b/openbox/startupnotify.c
@@ -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);
diff --git a/openbox/startupnotify.h b/openbox/startupnotify.h
index 850f39a7..87b17f90 100644
--- a/openbox/startupnotify.h
+++ b/openbox/startupnotify.h
@@ -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