X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fstartupnotify.c;h=8bc38da2c7d59a8712bbfcb81e92f02dbe787641;hb=6a8a8531bad25c148b4c62263d16c0996a21ca6e;hp=002bd2dc0521991af7dd9b9b73d9f2de06003eba;hpb=556eb7b7fb20b3b0db03b6d92259ad3bb16dccde;p=chaz%2Fopenbox diff --git a/openbox/startupnotify.c b/openbox/startupnotify.c index 002bd2dc..8bc38da2 100644 --- a/openbox/startupnotify.c +++ b/openbox/startupnotify.c @@ -28,7 +28,7 @@ void sn_startup(gboolean reconfig) {} void sn_shutdown(gboolean reconfig) {} gboolean sn_app_starting() { return FALSE; } -Time sn_app_started(const gchar *id, const gchar *wmclass) +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name) { return CurrentTime; } @@ -58,10 +58,14 @@ static void sn_event_func(SnMonitorEvent *event, gpointer data); void sn_startup(gboolean reconfig) { + gchar *s; + if (reconfig) return; /* unset this so we don't pass it on unknowingly */ - unsetenv("DESKTOP_STARTUP_ID"); + s = g_strdup("DESKTOP_STARTUP_ID"); + putenv(s); + g_free(s); sn_display = sn_display_new(ob_display, NULL, NULL); sn_context = sn_monitor_context_new(sn_display, ob_screen, @@ -165,7 +169,7 @@ static void sn_event_func(SnMonitorEvent *ev, gpointer data) screen_set_root_cursor(); } -Time sn_app_started(const gchar *id, const gchar *wmclass) +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name) { GSList *it; Time t = CurrentTime; @@ -189,13 +193,22 @@ Time sn_app_started(const gchar *id, const gchar *wmclass) found = TRUE; } else { seqclass = sn_startup_sequence_get_wmclass(seq); - seqname = sn_startup_sequence_get_name(seq); seqbin = sn_startup_sequence_get_binary_name(seq); - if ((seqname && !g_ascii_strcasecmp(seqname, wmclass)) || + /* seqclass = "a string to match against the "resource name" or + "resource class" hints. These are WM_CLASS[0] and WM_CLASS[1]" + - from the startup-notification spec + */ + if ((seqclass && !strcmp(seqclass, wmclass)) || + (seqclass && !strcmp(seqclass, name)) || + /* Check the binary name against the class and name hints + as well, to help apps that don't have the class set + correctly */ (seqbin && !g_ascii_strcasecmp(seqbin, wmclass)) || - (seqclass && !strcmp(seqclass, wmclass))) + (seqbin && !g_ascii_strcasecmp(seqbin, name))) + { found = TRUE; + } } if (found) { @@ -259,7 +272,7 @@ void sn_setup_spawn_environment(gchar *program, gchar *name, g_direct_equal, (GDestroyNotify)sn_launcher_context_unref); - setenv("DESKTOP_STARTUP_ID", id, TRUE); + putenv(g_strdup_printf("DESKTOP_STARTUP_ID=%s", id)); g_free(desc); }