summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
Diffstat (limited to 'openbox')
-rw-r--r--openbox/action.c7
-rw-r--r--openbox/config.c15
-rw-r--r--openbox/menu.c2
-rw-r--r--openbox/openbox.c10
-rw-r--r--openbox/openbox.h2
5 files changed, 21 insertions, 15 deletions
diff --git a/openbox/action.c b/openbox/action.c
index d24e81e6..7d06f12e 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -730,8 +730,11 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
if (parse_attr_string("name", node, &actname)) {
if ((act = action_from_string(actname))) {
if (act->func == action_execute || act->func == action_restart) {
- if ((n = parse_find_node("execute", node->xmlChildrenNode)))
- act->data.execute.path = parse_string(doc, n);
+ if ((n = parse_find_node("execute", node->xmlChildrenNode))) {
+ gchar *s = parse_string(doc, n);
+ act->data.execute.path = expand_tilde(s);
+ g_free(s);
+ }
} else if (act->func == action_showmenu) {
if ((n = parse_find_node("menu", node->xmlChildrenNode)))
act->data.showmenu.name = parse_string(doc, n);
diff --git a/openbox/config.c b/openbox/config.c
index 24da3060..21f03d3e 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -4,6 +4,7 @@
#include "prop.h"
#include "translate.h"
#include "parser/parse.h"
+#include "openbox.h"
gboolean config_focus_new;
gboolean config_focus_follow;
@@ -39,16 +40,6 @@ GSList *config_menu_files;
gint config_resist_win;
gint config_resist_edge;
-gchar *expand_tilde(const gchar *f)
-{
- if (!f)
- return NULL;
- else if (f[0] != '~')
- return g_strdup(f);
- else
- return g_strconcat(g_get_home_dir(), f+1, NULL);
-}
-
/*
<keybind key="C-x">
@@ -228,7 +219,7 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
g_free(config_theme);
c = parse_string(doc, n);
- config_theme = expand_tilde(c);
+ config_theme = ob_expand_tilde(c);
g_free(c);
}
if ((n = parse_find_node("titleLayout", node))) {
@@ -343,7 +334,7 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
c = parse_string(doc, node);
config_menu_files = g_slist_append(config_menu_files,
- expand_tilde(c));
+ ob_expand_tilde(c));
g_free(c);
}
}
diff --git a/openbox/menu.c b/openbox/menu.c
index cf405720..8cc1c872 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -203,7 +203,7 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
if ((menu = menu_new(name, title, NULL))) {
if (parse_attr_string("execute", node, &script)) {
- menu->execute = g_strdup(script);
+ menu->execute = ob_expand_tilde(script);
} else {
state->menus = g_slist_prepend(state->menus, menu);
parse_tree(i, doc, node->xmlChildrenNode);
diff --git a/openbox/openbox.c b/openbox/openbox.c
index 52146960..21f3a606 100644
--- a/openbox/openbox.c
+++ b/openbox/openbox.c
@@ -414,3 +414,13 @@ ObState ob_state()
{
return state;
}
+
+gchar *ob_expand_tilde(const gchar *f)
+{
+ if (!f)
+ return NULL;
+ else if (f[0] != '~')
+ return g_strdup(f);
+ else
+ return g_strconcat(g_get_home_dir(), f+1, NULL);
+}
diff --git a/openbox/openbox.h b/openbox/openbox.h
index 2f325dff..a01e792c 100644
--- a/openbox/openbox.h
+++ b/openbox/openbox.h
@@ -48,4 +48,6 @@ Cursor ob_cursor(ObCursor cursor);
KeyCode ob_keycode(ObKey key);
+gchar *ob_expand_tilde(const gchar *f);
+
#endif