make the mainloop not depend on an X display, and make it uses the obt_display automa...
[dana/openbox.git] / openbox / openbox.c
index 24d05f8..8aefd76 100644 (file)
@@ -21,7 +21,6 @@
 #include "openbox.h"
 #include "session.h"
 #include "dock.h"
-#include "modkeys.h"
 #include "event.h"
 #include "menu.h"
 #include "client.h"
 #include "ping.h"
 #include "mainloop.h"
 #include "gettext.h"
-#include "parser/parse.h"
 #include "render/render.h"
 #include "render/theme.h"
 #include "obt/display.h"
 #include "obt/prop.h"
+#include "obt/keyboard.h"
+#include "obt/parse.h"
 
 #ifdef HAVE_FCNTL_H
 #  include <fcntl.h>
@@ -135,11 +135,8 @@ gint main(gint argc, gchar **argv)
     program_name = g_path_get_basename(argv[0]);
     g_set_prgname(program_name);
 
-    if (!remote_control) {
-        parse_paths_startup();
-
+    if (!remote_control)
         session_startup(argc, argv);
-    }
 
     if (!obt_display_open(NULL))
         ob_exit_with_error(_("Failed to open the display from the DISPLAY environment variable."));
@@ -154,7 +151,7 @@ gint main(gint argc, gchar **argv)
         exit(EXIT_SUCCESS);
     }
 
-    ob_main_loop = obt_main_loop_new(obt_display);
+    ob_main_loop = obt_main_loop_new();
 
     /* set up signal handler */
     obt_main_loop_signal_add(ob_main_loop, SIGUSR1, signal_handler, NULL,NULL);
@@ -204,24 +201,22 @@ gint main(gint argc, gchar **argv)
 
     if (screen_annex()) { /* it will be ours! */
         do {
-            modkeys_startup(reconfigure);
+            if (reconfigure) obt_keyboard_reload();
 
             /* get the keycodes for keys we use */
-            keys[OB_KEY_RETURN] = modkeys_sym_to_code(XK_Return);
-            keys[OB_KEY_ESCAPE] = modkeys_sym_to_code(XK_Escape);
-            keys[OB_KEY_LEFT] = modkeys_sym_to_code(XK_Left);
-            keys[OB_KEY_RIGHT] = modkeys_sym_to_code(XK_Right);
-            keys[OB_KEY_UP] = modkeys_sym_to_code(XK_Up);
-            keys[OB_KEY_DOWN] = modkeys_sym_to_code(XK_Down);
+            keys[OB_KEY_RETURN] = obt_keyboard_keysym_to_keycode(XK_Return);
+            keys[OB_KEY_ESCAPE] = obt_keyboard_keysym_to_keycode(XK_Escape);
+            keys[OB_KEY_LEFT] = obt_keyboard_keysym_to_keycode(XK_Left);
+            keys[OB_KEY_RIGHT] = obt_keyboard_keysym_to_keycode(XK_Right);
+            keys[OB_KEY_UP] = obt_keyboard_keysym_to_keycode(XK_Up);
+            keys[OB_KEY_DOWN] = obt_keyboard_keysym_to_keycode(XK_Down);
 
             {
-                ObParseInst *i;
-                xmlDocPtr doc;
-                xmlNodePtr node;
+                ObtParseInst *i;
 
                 /* startup the parsing so everything can register sections
                    of the rc */
-                i = parse_startup();
+                i = obt_parse_instance_new();
 
                 /* register all the available actions */
                 actions_startup(reconfigure);
@@ -229,9 +224,11 @@ gint main(gint argc, gchar **argv)
                 config_startup(i);
 
                 /* parse/load user options */
-                if (parse_load_rc(NULL, &doc, &node)) {
-                    parse_tree(i, doc, node->xmlChildrenNode);
-                    parse_close(doc);
+                if (obt_parse_load_config_file(i, "openbox", "rc.xml",
+                                               "openbox_config"))
+                {
+                    obt_parse_tree_from_root(i);
+                    obt_parse_close(i);
                 } else
                     g_message(_("Unable to find a valid config file, using some simple defaults"));
 
@@ -242,7 +239,7 @@ gint main(gint argc, gchar **argv)
 */
 
                 /* we're done with parsing now, kill it */
-                parse_shutdown(i);
+                obt_parse_instance_unref(i);
             }
 
             /* load the theme specified in the rc file */
@@ -262,7 +259,7 @@ gint main(gint argc, gchar **argv)
                     ob_exit_with_error(_("Unable to load a theme."));
 
                 OBT_PROP_SETS(RootWindow(obt_display, ob_screen),
-                              OB_THEME, ob_rr_theme->name);
+                              OB_THEME, utf8, ob_rr_theme->name);
             }
 
             if (reconfigure) {
@@ -359,7 +356,6 @@ gint main(gint argc, gchar **argv)
             event_shutdown(reconfigure);
             config_shutdown();
             actions_shutdown(reconfigure);
-            modkeys_shutdown(reconfigure);
         } while (reconfigure);
     }
 
@@ -372,8 +368,6 @@ gint main(gint argc, gchar **argv)
 
     obt_display_close(obt_display);
 
-    parse_paths_shutdown();
-
     if (restart) {
         if (restart_path != NULL) {
             gint argcp;