X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=097eaf8d165db736d3acea1b3a146c7c8cc5a85d;hb=9ca05545076ffc4c5165ce12de47173b044b57e0;hp=7d41d71262695866648e600b621443eece8f593d;hpb=19b480058e869a588ea20be5e29017ae2052e967;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 7d41d712..097eaf8d 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -929,6 +929,15 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, act->data.execute.path = parse_expand_tilde(s); g_free(s); } + if ((n = parse_find_node("startupnotify", node->xmlChildrenNode))) { + xmlNodePtr m; + if ((m = parse_find_node("enabled", n->xmlChildrenNode))) + act->data.execute.startupnotify = parse_bool(doc, m); + if ((m = parse_find_node("name", n->xmlChildrenNode))) + act->data.execute.name = parse_string(doc, m); + if ((m = parse_find_node("icon", n->xmlChildrenNode))) + act->data.execute.icon_name = parse_string(doc, m); + } } else if (act->func == action_showmenu) { if ((n = parse_find_node("menu", node->xmlChildrenNode))) act->data.showmenu.name = parse_string(doc, n); @@ -995,8 +1004,6 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, act->func == action_raiselower || act->func == action_shadelower || act->func == action_unshaderaise) { - if ((n = parse_find_node("group", node->xmlChildrenNode))) - act->data.stacking.group = parse_bool(doc, n); } INTERACTIVE_LIMIT(act, uact); } @@ -1095,11 +1102,13 @@ void action_execute(union ActionData *data) g_warning("failed to execute '%s': %s", cmd, e->message); g_error_free(e); - } else { + } else if (data->execute.startupnotify) { gchar **env, *program; program = g_path_get_basename(argv[0]); env = sn_get_spawn_environment(program, + data->execute.name, + data->execute.icon_name, data->execute.any.time); if (!g_spawn_async(NULL, argv, env, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, @@ -1112,6 +1121,16 @@ void action_execute(union ActionData *data) g_strfreev(env); g_free(program); g_strfreev(argv); + } else { + if (!g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH | + G_SPAWN_DO_NOT_REAP_CHILD, + NULL, NULL, NULL, &e)) + { + g_warning("failed to execute '%s': %s", + cmd, e->message); + g_error_free(e); + } + g_strfreev(argv); } g_free(cmd); } else { @@ -1200,7 +1219,7 @@ void action_raiselower(union ActionData *data) void action_raise(union ActionData *data) { client_action_start(data); - stacking_raise(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group); + stacking_raise(CLIENT_AS_WINDOW(data->client.any.c)); client_action_end(data); } @@ -1223,7 +1242,7 @@ void action_shadelower(union ActionData *data) void action_lower(union ActionData *data) { client_action_start(data); - stacking_lower(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group); + stacking_lower(CLIENT_AS_WINDOW(data->client.any.c)); client_action_end(data); }