summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-22 00:05:28 +0000
committerDana Jansens <danakj@orodu.net>2007-05-22 00:05:28 +0000
commit44be67844a5568e8b1ad87327b0815f8667151c0 (patch)
tree2b623ff4c7d3870eaaf79c6da19f1c8213a8af75
parentb8f207892a11b53365c47b4828254269fca5c8e9 (diff)
don't reload the session on restart
-rw-r--r--openbox/openbox.c12
-rw-r--r--openbox/openbox.h1
-rw-r--r--openbox/session.c8
3 files changed, 16 insertions, 5 deletions
diff --git a/openbox/openbox.c b/openbox/openbox.c
index f66f6a76..b69f2c1e 100644
--- a/openbox/openbox.c
+++ b/openbox/openbox.c
@@ -92,6 +92,7 @@ gboolean ob_replace_wm = FALSE;
gboolean ob_sm_use = TRUE;
gchar *ob_sm_id = NULL;
gchar *ob_sm_save_file = NULL;
+gboolean ob_sm_restore = TRUE;
gboolean ob_debug_xinerama = FALSE;
static ObState state;
@@ -396,12 +397,13 @@ gint main(gint argc, gchar **argv)
}
}
- /* we remove the session arguments from argv, so put them back */
+ /* we remove the session arguments from argv, so put them back,
+ also don't restore the session on restart */
if (ob_sm_save_file != NULL || ob_sm_id != NULL) {
gchar **nargv;
gint i, l;
- l = argc +
+ l = argc + 1 +
(ob_sm_save_file != NULL ? 2 : 0) +
(ob_sm_id != NULL ? 2 : 0);
nargv = g_new0(gchar*, l+1);
@@ -416,6 +418,7 @@ gint main(gint argc, gchar **argv)
nargv[i++] = g_strdup("--sm-client-id");
nargv[i++] = ob_sm_id;
}
+ nargv[i++] = g_strdup("--sm-no-load");
g_assert(i == l);
argv = nargv;
}
@@ -572,6 +575,11 @@ static void parse_args(gint *argc, gchar **argv)
else if (!strcmp(argv[i], "--sm-disable")) {
ob_sm_use = FALSE;
}
+ else if (!strcmp(argv[i], "--sm-no-load")) {
+ ob_sm_restore = FALSE;
+ remove_args(argc, argv, i, 1);
+ --i; /* this arg was removed so go back */
+ }
else {
/* this is a memleak.. oh well.. heh */
gchar *err = g_strdup_printf
diff --git a/openbox/openbox.h b/openbox/openbox.h
index e258d31e..460de0b4 100644
--- a/openbox/openbox.h
+++ b/openbox/openbox.h
@@ -45,6 +45,7 @@ extern gchar *ob_sm_id;
/* This save_file will get pass to ourselves if we restart too! So we won't
make a new file every time, yay. */
extern gchar *ob_sm_save_file;
+extern gboolean ob_sm_restore;
extern gboolean ob_replace_wm;
extern gboolean ob_debug_xinerama;
diff --git a/openbox/session.c b/openbox/session.c
index d0db0717..dcb3fcef 100644
--- a/openbox/session.c
+++ b/openbox/session.c
@@ -102,9 +102,11 @@ void session_startup(gint argc, gchar **argv)
}
if (ob_sm_save_file != NULL) {
- ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
- ob_sm_save_file);
- session_load_file(ob_sm_save_file);
+ if (ob_sm_restore) {
+ ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
+ ob_sm_save_file);
+ session_load_file(ob_sm_save_file);
+ }
} else {
gchar *filename;