all repos — openbox @ 923e0edfa80dbfe7e9fa90bee8f6bb2dfb2f9907

openbox fork - make it a bit more like ryudo

look for more things to cancel startup notification on, from the wmclass. if the wmclass is related to the name or the binary name, then it will cancel it also. this is so that oldschool stuff doesn't thing its opening forever.
Dana Jansens danakj@orodu.net
commit

923e0edfa80dbfe7e9fa90bee8f6bb2dfb2f9907

parent

2c98204dfedafcf3d2fa010c1b6ac72110256c8c

1 files changed, 25 insertions(+), 4 deletions(-)

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

@@ -167,14 +167,35 @@ {

GSList *it; Time t = CurrentTime; + if (!id && !wmclass) + return t; + for (it = sn_waits; it; it = g_slist_next(it)) { SnStartupSequence *seq = it->data; - const gchar *seqid, *seqclass; + gboolean found = FALSE; + const gchar *seqid, *seqclass, *seqname, *seqbin; seqid = sn_startup_sequence_get_id(seq); seqclass = sn_startup_sequence_get_wmclass(seq); - if ((seqid && id && !strcmp(seqid, id)) || - (seqclass && wmclass && !strcmp(seqclass, wmclass))) - { + seqname = sn_startup_sequence_get_name(seq); + seqbin = sn_startup_sequence_get_binary_name(seq); + + if (id && seqid) { + /* if the app has a startup id, then look for that for highest + accuracy */ + 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)) || + (seqbin && !g_ascii_strcasecmp(seqbin, wmclass)) || + (seqclass && !strcmp(seqclass, wmclass))) + found = TRUE; + } + + if (found) { sn_startup_sequence_complete(seq); t = sn_startup_sequence_get_timestamp(seq); break;