Merge branch 'backport' into work
[dana/openbox.git] / openbox / actions / execute.c
index 51bcaac..ff73bf2 100644 (file)
@@ -2,8 +2,13 @@
 #include "openbox/event.h"
 #include "openbox/startupnotify.h"
 #include "openbox/screen.h"
+#include "obt/paths.h"
 #include "gettext.h"
 
+#ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+#endif
+
 typedef struct {
     gchar   *cmd;
     gboolean sn;
@@ -39,19 +44,19 @@ static gpointer setup_func(xmlNodePtr node)
         (n = obt_parse_find_node(node, "execute")))
     {
         gchar *s = obt_parse_node_string(n);
-        o->cmd = parse_expand_tilde(s);
+        o->cmd = obt_paths_expand_tilde(s);
         g_free(s);
     }
 
     if ((n = obt_parse_find_node(node, "startupnotify"))) {
         xmlNodePtr m;
-        if ((m = obt_parse_find_node(n->xmlChildrenNode, "enabled")))
+        if ((m = obt_parse_find_node(n->children, "enabled")))
             o->sn = obt_parse_node_bool(m);
-        if ((m = obt_parse_find_node(n->xmlChildrenNode, "name")))
+        if ((m = obt_parse_find_node(n->children, "name")))
             o->sn_name = obt_parse_node_string(m);
-        if ((m = obt_parse_find_node(n->xmlChildrenNode, "icon")))
+        if ((m = obt_parse_find_node(n->children, "icon")))
             o->sn_icon = obt_parse_node_string(m);
-        if ((m = obt_parse_find_node(n->xmlChildrenNode, "wmclass")))
+        if ((m = obt_parse_find_node(n->children, "wmclass")))
             o->sn_wmclass = obt_parse_node_string(m);
     }
     return o;
@@ -81,7 +86,7 @@ static gboolean run_func(ObActionsData *data, gpointer options)
     if (!o->cmd) return FALSE;
     cmd = g_filename_from_utf8(o->cmd, -1, NULL, NULL, NULL);
     if (!cmd) {
-        g_message(_("Failed to convert the path '%s' from utf8"), o->cmd);
+        g_message(_("Failed to convert the path \"%s\" from utf8"), o->cmd);
         return FALSE;
     }
 
@@ -90,7 +95,7 @@ static gboolean run_func(ObActionsData *data, gpointer options)
     event_cancel_all_key_grabs();
 
     if (!g_shell_parse_argv(cmd, NULL, &argv, &e)) {
-        g_message(_("Failed to execute '%s': %s"), o->cmd, e->message);
+        g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message);
         g_error_free(e);
     }
     else {
@@ -100,6 +105,7 @@ static gboolean run_func(ObActionsData *data, gpointer options)
             program = g_path_get_basename(argv[0]);
             /* sets up the environment */
             sn_setup_spawn_environment(program, o->sn_name, o->sn_icon,
+                                       o->sn_wmclass,
                                        /* launch it on the current desktop */
                                        screen_desktop);
         }
@@ -108,7 +114,7 @@ static gboolean run_func(ObActionsData *data, gpointer options)
                            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);
+            g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message);
             g_error_free(e);
 
             if (o->sn)