don't reload the session on restart
Dana Jansens danakj@orodu.net
3 files changed,
16 insertions(+),
5 deletions(-)
M
openbox/openbox.c
→
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 @@ g_error_free(err);
} } - /* 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 @@ if (ob_sm_id != NULL) {
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; }@@ -571,6 +574,11 @@ }
} 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 */
M
openbox/openbox.h
→
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;
M
openbox/session.c
→
openbox/session.c
@@ -102,9 +102,11 @@ dir, g_strerror(errno));
} 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;