]> Dogcows Code - chaz/openbox/blobdiff - openbox/session.c
1) translate all of openbox's output
[chaz/openbox] / openbox / session.c
index f44d3b4c949e8c8c74c9b5eee762fb8d5f971a84..1ff41519e9098de0ac433a34c23e8427d0cfcd6d 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
 
    session.c for the Openbox window manager
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 GList *session_saved_state;
 
 void session_startup(gint argc, gchar **argv) {}
-void session_shutdown() {}
+void session_shutdown(gboolean permanent) {}
 GList* session_state_find(ObClient *c) { return NULL; }
 gboolean session_state_cmp(ObSessionState *s, ObClient *c) { return FALSE; }
 void session_state_free(ObSessionState *state) {}
@@ -164,9 +164,10 @@ void session_startup(gint argc, gchar **argv)
 
     sm_sessions_path = g_build_filename(parse_xdg_data_home_path(),
                                         "openbox", "sessions", NULL);
-    if (!parse_mkdir_path(sm_sessions_path, 0700))
-        g_warning(_("Unable to make directory '%s': %s"),
+    if (!parse_mkdir_path(sm_sessions_path, 0700)) {
+        g_message(_("Unable to make directory '%s': %s"),
                   sm_sessions_path, g_strerror(errno));
+    }
 
     if (save_file)
         session_load(save_file);
@@ -257,7 +258,7 @@ void session_startup(gint argc, gchar **argv)
     }
 }
 
-void session_shutdown()
+void session_shutdown(gboolean permanent)
 {
     if (sm_disable)
         return;
@@ -268,6 +269,26 @@ void session_shutdown()
     g_free(sm_argv);
 
     if (sm_conn) {
+        /* if permanent is true then we will change our session state so that
+           the SM won't run us again */
+        if (permanent) {
+            SmPropValue val_hint;
+            SmProp prop_hint = { SmRestartStyleHint, SmCARD8, 1, };
+            SmProp *props[1];
+            gulong hint;
+
+            /* when we exit, we want to reset this to a more friendly state */
+            hint = SmRestartIfRunning;
+            val_hint.value = &hint;
+            val_hint.length = 1;
+
+            prop_hint.vals = &val_hint;
+
+            props[0] = &prop_hint;
+
+            SmcSetProperties(sm_conn, 1, props);
+        }
+
         SmcCloseConnection(sm_conn, 0, NULL);
 
         while (session_saved_state) {
@@ -319,7 +340,7 @@ static gboolean session_save()
     f = fopen(save_file, "w");
     if (!f) {
         success = FALSE;
-        g_warning("unable to save the session to %s: %s",
+        g_message(_("Unable to save the session to '%s': %s"),
                   save_file, g_strerror(errno));
     } else {
         guint stack_pos = 0;
@@ -409,7 +430,7 @@ static gboolean session_save()
 
         if (fflush(f)) {
             success = FALSE;
-            g_warning("error while saving the session to %s: %s",
+            g_message(_("Error while saving the session to '%s': %s"),
                       save_file, g_strerror(errno));
         }
         fclose(f);
This page took 0.02246 seconds and 4 git commands to generate.