all repos — openbox @ 26cd4d19d46280cc71c61dae35c0175ba95977fa

openbox fork - make it a bit more like ryudo

move some code around in the execute action
Dana Jansens danakj@orodu.net
commit

26cd4d19d46280cc71c61dae35c0175ba95977fa

parent

94d41260a065d96776335ecb8ff0b7784238b8ee

1 files changed, 15 insertions(+), 10 deletions(-)

jump to
M openbox/actions/execute.copenbox/actions/execute.c

@@ -108,7 +108,7 @@

/* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { - GError *e = NULL; + GError *e; gchar **argv = NULL; gchar *cmd; Options *o = options;

@@ -205,12 +205,14 @@ /* If there is a keyboard grab going on then we need to cancel

it so the application can grab things */ event_cancel_all_key_grabs(); + e = NULL; if (!g_shell_parse_argv(cmd, NULL, &argv, &e)) { g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message); g_error_free(e); } else { gchar *program = NULL; + gboolean ok; if (o->sn) { program = g_path_get_basename(argv[0]);

@@ -221,18 +223,21 @@ /* launch it on the current desktop */

screen_desktop); } - if (!g_spawn_async(NULL, argv, NULL, - G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, - NULL, NULL, NULL, &e)) - { - g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message); + e = NULL; + ok = g_spawn_async(NULL, argv, NULL, + G_SPAWN_SEARCH_PATH | + G_SPAWN_DO_NOT_REAP_CHILD, + NULL, NULL, NULL, &e); + if (!ok) { + g_message(_("Failed to execute \"%s\": %s"), + o->cmd, e->message); g_error_free(e); + } - if (o->sn) - sn_spawn_cancel(); + if (o->sn) { + if (!ok) sn_spawn_cancel(); + unsetenv("DESKTOP_STARTUP_ID"); } - if (o->sn) - unsetenv("DESKTOP_STARTUP_ID"); g_free(program); g_strfreev(argv);