X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fstartupnotify.c;h=51e78e261da6d0e1fbbb37a6b0460c44b3318377;hb=58be283e94c062377c86e23beb4d3ac51dc57fb8;hp=5db9bd48fd09542f83dcd59fa77a0ff0da5248d0;hpb=923e0edfa80dbfe7e9fa90bee8f6bb2dfb2f9907;p=chaz%2Fopenbox diff --git a/openbox/startupnotify.c b/openbox/startupnotify.c index 5db9bd48..51e78e26 100644 --- a/openbox/startupnotify.c +++ b/openbox/startupnotify.c @@ -20,7 +20,7 @@ #include "startupnotify.h" #include "gettext.h" -extern gchar **environ; +#include #ifndef USE_LIBSN @@ -32,10 +32,8 @@ Time sn_app_started(const gchar *id, const gchar *wmclass) return CurrentTime; } gboolean sn_get_desktop(gchar *id, guint *desktop) { return FALSE; } -gchar **sn_get_spawn_environment(char *program, Time time) -{ - return g_strdupv(environ); -} +void sn_setup_spawn_environment(gchar *program, gchar *name, + gchar *icon_name, gint desktop, Time time) {} void sn_spawn_cancel() {} #else @@ -225,10 +223,11 @@ static gboolean sn_launch_wait_timeout(gpointer data) return FALSE; /* don't repeat */ } -gchar **sn_get_spawn_environment(char *program, Time time) +void sn_setup_spawn_environment(gchar *program, gchar *name, + gchar *icon_name, gint desktop, + Time time) { - gchar **env, *desc; - guint len; + gchar *desc; const char *id; desc = g_strdup_printf(_("Running %s\n"), program); @@ -238,10 +237,12 @@ gchar **sn_get_spawn_environment(char *program, Time time) sn_launcher = sn_launcher_context_new(sn_display, ob_screen); } - sn_launcher_context_set_name(sn_launcher, program); + sn_launcher_context_set_name(sn_launcher, name ? name : program); sn_launcher_context_set_description(sn_launcher, desc); - sn_launcher_context_set_icon_name(sn_launcher, program); + 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); @@ -251,15 +252,9 @@ gchar **sn_get_spawn_environment(char *program, Time time) sn_launch_wait_timeout, sn_launcher, (GDestroyNotify)sn_launcher_context_unref); - env = g_strdupv(environ); - len = g_strv_length(env); /* includes last null */ - env = g_renew(gchar*, env, ++len); /* add one spot */ - env[len-2] = g_strdup_printf("DESKTOP_STARTUP_ID=%s", id); - env[len-1] = NULL; + setenv("DESKTOP_STARTUP_ID", id, TRUE); g_free(desc); - - return env; } void sn_spawn_cancel()