return CurrentTime;
}
gboolean sn_get_desktop(gchar *id, guint *desktop) { return FALSE; }
-gchar **sn_get_spawn_environment(char *program, Time time)
+gchar **sn_get_spawn_environment(char *program, char *name,
+ char *icon_name, Time time)
{
return g_strdupv(environ);
}
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;
return FALSE; /* don't repeat */
}
-gchar **sn_get_spawn_environment(char *program, Time time)
+gchar **sn_get_spawn_environment(char *program, char *name,
+ char *icon_name, Time time)
{
gchar **env, *desc;
guint len;
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);
sn_launcher_context_initiate(sn_launcher, "openbox", program, time);
id = sn_launcher_context_get_startup_id(sn_launcher);