all repos — openbox @ 6a8a8531bad25c148b4c62263d16c0996a21ca6e

openbox fork - make it a bit more like ryudo

check them startupnotify-provided wmclass against both parts of a window's wm_class hint, as the spec doth say so.
Dana Jansens danakj@orodu.net
commit

6a8a8531bad25c148b4c62263d16c0996a21ca6e

parent

2c6240fd2f3e50fca76bb3f4df172eb745982b79

3 files changed, 20 insertions(+), 8 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -313,7 +313,7 @@ /* now we have all of the window's information so we can set this up */

client_setup_decor_and_functions(self, FALSE); /* tell startup notification that this app started */ - launch_time = sn_app_started(self->startup_id, self->class); + launch_time = sn_app_started(self->startup_id, self->class, self->name); /* do this after we have a frame.. it uses the frame to help determine the WM_STATE to apply. */
M openbox/startupnotify.copenbox/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; }

@@ -169,7 +169,7 @@ if (change)

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;

@@ -193,13 +193,22 @@ if (!strcmp(seqid, id))

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) {
M openbox/startupnotify.hopenbox/startupnotify.h

@@ -27,8 +27,11 @@ void sn_shutdown(gboolean reconfig);

gboolean sn_app_starting(); -/*! Notify that an app has started */ -Time sn_app_started(const gchar *id, const gchar *wmclass); +/*! Notify that an app has started + @param wmclass the WM_CLASS[1] hint + @param name the WM_CLASS[0] hint + */ +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name); /*! Get the desktop requested via the startup-notiication protocol if one was requested */