]> Dogcows Code - chaz/openbox/blobdiff - openbox/openbox.c
look mom, I made an openbox toolkit
[chaz/openbox] / openbox / openbox.c
index db14afb099731a00aabea13e04d544f9215bfa4b..c768bdf431c709ee73b64408f080bf4d20b38554 100644 (file)
@@ -35,7 +35,6 @@
 #include "focus_cycle_indicator.h"
 #include "focus_cycle_popup.h"
 #include "moveresize.h"
-#include "composite.h"
 #include "frame.h"
 #include "keyboard.h"
 #include "mouse.h"
 #include "menuframe.h"
 #include "grab.h"
 #include "group.h"
-#include "propwin.h"
 #include "config.h"
+#include "ping.h"
 #include "mainloop.h"
 #include "gettext.h"
 #include "parser/parse.h"
 #include "render/render.h"
 #include "render/theme.h"
+#include "obt/obt.h"
 
 #ifdef HAVE_FCNTL_H
 #  include <fcntl.h>
 #include <X11/Xlib.h>
 #include <X11/keysym.h>
 
-
-RrInstance *ob_rr_inst;
-RrTheme    *ob_rr_theme;
-ObMainLoop *ob_main_loop;
-Display    *ob_display;
-gint        ob_screen;
-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;
+ObtInstance *obt_inst;
+RrInstance  *ob_rr_inst;
+RrTheme     *ob_rr_theme;
+ObMainLoop  *ob_main_loop;
+Display     *ob_display;
+gint         ob_screen;
+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;
 static gboolean  xsync = FALSE;
@@ -130,7 +130,7 @@ gint main(gint argc, gchar **argv)
     if (chdir(g_get_home_dir()) == -1)
         g_message(_("Unable to change to home directory '%s': %s"),
                   g_get_home_dir(), g_strerror(errno));
-     
+
     /* parse the command line args, which can change the argv[0] */
     parse_args(&argc, argv);
     /* parse the environment variables */
@@ -145,22 +145,20 @@ gint main(gint argc, gchar **argv)
         session_startup(argc, argv);
     }
 
-
-    ob_display = XOpenDisplay(NULL);
-    if (ob_display == NULL)
+    obt_inst = obt_instance_new(NULL);
+    if (obt_inst == NULL)
         ob_exit_with_error(_("Failed to open the display from the DISPLAY environment variable."));
-    if (fcntl(ConnectionNumber(ob_display), F_SETFD, 1) == -1)
-        ob_exit_with_error("Failed to set display as close-on-exec");
+    ob_display = obt_display(obt_inst);
 
     if (remote_control) {
         prop_startup();
 
         /* Send client message telling the OB process to:
-         * remote_control = 1 -> reconfigure 
+         * remote_control = 1 -> reconfigure
          * remote_control = 2 -> restart */
         PROP_MSG(RootWindow(ob_display, ob_screen),
                  ob_control, remote_control, 0, 0, 0);
-        XCloseDisplay(ob_display);
+        obt_instance_unref(obt_inst);
         exit(EXIT_SUCCESS);
     }
 
@@ -240,10 +238,10 @@ gint main(gint argc, gchar **argv)
                    of the rc */
                 i = parse_startup();
 
-                /* start up config which sets up with the parser */
-                config_startup(i);
                 /* register all the available actions */
                 actions_startup(reconfigure);
+                /* start up config which sets up with the parser */
+                config_startup(i);
 
                 /* parse/load user options */
                 if (parse_load_rc(NULL, &doc, &node)) {
@@ -294,17 +292,16 @@ gint main(gint argc, gchar **argv)
             event_startup(reconfigure);
             /* focus_backup is used for stacking, so this needs to come before
                anything that calls stacking_add */
+            sn_startup(reconfigure);
+            window_startup(reconfigure);
             focus_startup(reconfigure);
             focus_cycle_startup(reconfigure);
             focus_cycle_indicator_startup(reconfigure);
             focus_cycle_popup_startup(reconfigure);
-            window_startup(reconfigure);
-            sn_startup(reconfigure);
             screen_startup(reconfigure);
-            composite_startup(reconfigure);
             grab_startup(reconfigure);
-            propwin_startup(reconfigure);
             group_startup(reconfigure);
+            ping_startup(reconfigure);
             client_startup(reconfigure);
             dock_startup(reconfigure);
             moveresize_startup(reconfigure);
@@ -364,20 +361,19 @@ gint main(gint argc, gchar **argv)
             moveresize_shutdown(reconfigure);
             dock_shutdown(reconfigure);
             client_shutdown(reconfigure);
+            ping_shutdown(reconfigure);
             group_shutdown(reconfigure);
-            propwin_shutdown(reconfigure);
             grab_shutdown(reconfigure);
-            composite_shutdown(reconfigure);
             screen_shutdown(reconfigure);
             focus_cycle_popup_shutdown(reconfigure);
             focus_cycle_indicator_shutdown(reconfigure);
             focus_cycle_shutdown(reconfigure);
             focus_shutdown(reconfigure);
-            sn_shutdown(reconfigure);
             window_shutdown(reconfigure);
+            sn_shutdown(reconfigure);
             event_shutdown(reconfigure);
-            actions_shutdown(reconfigure);
             config_shutdown();
+            actions_shutdown(reconfigure);
             modkeys_shutdown(reconfigure);
         } while (reconfigure);
     }
@@ -389,7 +385,7 @@ gint main(gint argc, gchar **argv)
 
     session_shutdown(being_replaced);
 
-    XCloseDisplay(ob_display);
+    obt_instance_unref(obt_inst);
 
     parse_paths_shutdown();
 
@@ -446,7 +442,7 @@ gint main(gint argc, gchar **argv)
     g_free(ob_sm_save_file);
     g_free(ob_sm_id);
     g_free(program_name);
-     
+
     return exitcode;
 }
 
@@ -459,7 +455,7 @@ static void signal_handler(gint signal, gpointer data)
         break;
     case SIGUSR2:
         ob_debug("Caught signal %d. Reconfiguring.\n", signal);
-        ob_reconfigure(); 
+        ob_reconfigure();
         break;
     case SIGCHLD:
         /* reap children */
@@ -476,9 +472,9 @@ static void print_version()
 {
     g_print("Openbox %s\n", PACKAGE_VERSION);
     g_print(_("Copyright (c)"));
-    g_print(" 2007        Mikael Magnusson\n");
+    g_print(" 2008        Mikael Magnusson\n");
     g_print(_("Copyright (c)"));
-    g_print(" 2003-2007   Dana Jansens\n\n");
+    g_print(" 2003-2006   Dana Jansens\n\n");
     g_print("This program comes with ABSOLUTELY NO WARRANTY.\n");
     g_print("This is free software, and you are welcome to redistribute it\n");
     g_print("under certain conditions. See the file COPYING for details.\n\n");
@@ -495,6 +491,7 @@ static void print_help()
     g_print(_("\nPassing messages to a running Openbox instance:\n"));
     g_print(_("  --reconfigure       Reload Openbox's configuration\n"));
     g_print(_("  --restart           Restart Openbox\n"));
+    g_print(_("  --exit              Exit Openbox\n"));
     g_print(_("\nDebugging options:\n"));
     g_print(_("  --sync              Run in synchronous mode\n"));
     g_print(_("  --debug             Display debugging output\n"));
@@ -517,7 +514,9 @@ static void remove_args(gint *argc, gchar **argv, gint index, gint num)
 static void parse_env()
 {
     /* unset this so we don't pass it on unknowingly */
-    unsetenv("DESKTOP_STARTUP_ID");
+    gchar *s = g_strdup("DESKTOP_STARTUP_ID");
+    putenv(s);
+    g_free(s);
 }
 
 static void parse_args(gint *argc, gchar **argv)
@@ -560,9 +559,13 @@ static void parse_args(gint *argc, gchar **argv)
         }
         else if (!strcmp(argv[i], "--reconfigure")) {
             remote_control = 1;
-        } else if (!strcmp(argv[i], "--restart")) {
+        }
+        else if (!strcmp(argv[i], "--restart")) {
             remote_control = 2;
         }
+        else if (!strcmp(argv[i], "--exit")) {
+            remote_control = 3;
+        }
         else if (!strcmp(argv[i], "--sm-save-file")) {
             if (i == *argc - 1) /* no args left */
                 /* not translated cuz it's sekret */
This page took 0.030642 seconds and 4 git commands to generate.