X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fopenbox.c;h=0f9fb1793825342bbb2adf6821239d563ce0cfd6;hb=096dad0c6c027100494ede811b33cb8558d32e25;hp=3f286092cfd70ec9607c66bd21c09d91932e918a;hpb=d78ae0546dae17eda6084a1bd33e63637ba802e5;p=chaz%2Fopenbox diff --git a/openbox/openbox.c b/openbox/openbox.c index 3f286092..0f9fb179 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -42,14 +42,13 @@ #include "config.h" #include "ping.h" #include "prompt.h" -#include "hooks.h" #include "gettext.h" -#include "render/render.h" -#include "render/theme.h" +#include "obrender/render.h" +#include "obrender/theme.h" #include "obt/display.h" #include "obt/prop.h" #include "obt/keyboard.h" -#include "obt/parse.h" +#include "obt/xml.h" #ifdef HAVE_FCNTL_H # include @@ -81,9 +80,6 @@ #include #endif -#include -#include - RrInstance *ob_rr_inst; RrImageCache *ob_rr_icons; RrTheme *ob_rr_theme; @@ -102,7 +98,6 @@ static gboolean reconfigure = FALSE; static gboolean restart = FALSE; static gchar *restart_path = NULL; static Cursor cursors[OB_NUM_CURSORS]; -static KeyCode keys[OB_NUM_KEYS]; static gint exitcode = 0; static guint remote_control = 0; static gboolean being_replaced = FALSE; @@ -167,6 +162,8 @@ gint main(gint argc, gchar **argv) obt_main_loop_signal_add(ob_main_loop, SIGHUP, signal_handler, NULL,NULL); obt_main_loop_signal_add(ob_main_loop, SIGPIPE, signal_handler, NULL,NULL); obt_main_loop_signal_add(ob_main_loop, SIGCHLD, signal_handler, NULL,NULL); + obt_main_loop_signal_add(ob_main_loop, SIGTTIN, signal_handler, NULL,NULL); + obt_main_loop_signal_add(ob_main_loop, SIGTTOU, signal_handler, NULL,NULL); ob_screen = DefaultScreen(obt_display); @@ -216,37 +213,26 @@ gint main(gint argc, gchar **argv) if (reconfigure) obt_keyboard_reload(); - /* get the keycodes for keys we use */ - 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); - keys[OB_KEY_TAB] = obt_keyboard_keysym_to_keycode(XK_Tab); - keys[OB_KEY_SPACE] = obt_keyboard_keysym_to_keycode(XK_space); - { - ObtParseInst *i; + ObtXmlInst *i; /* startup the parsing so everything can register sections of the rc */ - i = obt_parse_instance_new(); + i = obt_xml_instance_new(); /* register all the available actions */ actions_startup(reconfigure); - hooks_startup(reconfigure); /* start up config which sets up with the parser */ config_startup(i); /* parse/load user options */ if ((config_file && - obt_parse_load_file(i, config_file, "openbox_config")) || - obt_parse_load_config_file(i, "openbox", "rc.xml", - "openbox_config")) + obt_xml_load_file(i, config_file, "openbox_config")) || + obt_xml_load_config_file(i, "openbox", "rc.xml", + "openbox_config")) { - obt_parse_tree_from_root(i); - obt_parse_close(i); + obt_xml_tree_from_root(i); + obt_xml_close(i); } else { g_message(_("Unable to find a valid config file, using some simple defaults")); @@ -265,7 +251,7 @@ gint main(gint argc, gchar **argv) OBT_PROP_ERASE(obt_root(ob_screen), OB_CONFIG_FILE); /* we're done with parsing now, kill it */ - obt_parse_instance_unref(i); + obt_xml_instance_unref(i); } /* load the theme specified in the rc file */ @@ -276,7 +262,8 @@ gint main(gint argc, gchar **argv) config_font_inactivewindow, config_font_menutitle, config_font_menuitem, - config_font_osd))) + config_font_activeosd, + config_font_inactiveosd))) { RrThemeFree(ob_rr_theme); ob_rr_theme = theme; @@ -401,7 +388,6 @@ gint main(gint argc, gchar **argv) sn_shutdown(reconfigure); event_shutdown(reconfigure); config_shutdown(); - hooks_shutdown(reconfigure); actions_shutdown(reconfigure); } while (reconfigure); } @@ -417,6 +403,7 @@ gint main(gint argc, gchar **argv) obt_display_close(); if (restart) { + ob_debug_shutdown(); if (restart_path != NULL) { gint argcp; gchar **argvp; @@ -470,7 +457,8 @@ gint main(gint argc, gchar **argv) g_free(ob_sm_id); g_free(program_name); - ob_debug_shutdown(); + if (!restart) + ob_debug_shutdown(); return exitcode; } @@ -490,6 +478,10 @@ static void signal_handler(gint signal, gpointer data) /* reap children */ while (waitpid(-1, NULL, WNOHANG) > 0); break; + case SIGTTIN: + case SIGTTOU: + ob_debug("Caught signal %d. Ignoring.", signal); + break; default: ob_debug("Caught signal %d. Exiting.", signal); /* TERM and INT return a 0 code */ @@ -529,7 +521,7 @@ static void print_help(void) g_print(_(" --sync Run in synchronous mode\n")); g_print(_(" --debug Display debugging output\n")); g_print(_(" --debug-focus Display debugging output for focus handling\n")); - g_print(_(" --debug-session Display debugging output for session managment\n")); + g_print(_(" --debug-session Display debugging output for session management\n")); g_print(_(" --debug-xinerama Split the display into fake xinerama screens\n")); g_print(_("\nPlease report bugs at %s\n"), PACKAGE_BUGREPORT); } @@ -547,8 +539,21 @@ static void remove_args(gint *argc, gchar **argv, gint index, gint num) static void parse_env(void) { + const gchar *id; + /* unset this so we don't pass it on unknowingly */ unsetenv("DESKTOP_STARTUP_ID"); + + /* this is how gnome-session passes in a session client id */ + id = g_getenv("DESKTOP_AUTOSTART_ID"); + if (id) { + unsetenv("DESKTOP_AUTOSTART_ID"); + if (ob_sm_id) g_free(ob_sm_id); + ob_sm_id = g_strdup(id); + ob_debug_type(OB_DEBUG_SM, + "DESKTOP_AUTOSTART_ID %s supercedes --sm-client-id\n", + ob_sm_id); + } } static void parse_args(gint *argc, gchar **argv) @@ -580,13 +585,9 @@ static void parse_args(gint *argc, gchar **argv) ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE); } else if (!strcmp(argv[i], "--debug-focus")) { - ob_debug_enable(OB_DEBUG_NORMAL, TRUE); - ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE); ob_debug_enable(OB_DEBUG_FOCUS, TRUE); } else if (!strcmp(argv[i], "--debug-session")) { - ob_debug_enable(OB_DEBUG_NORMAL, TRUE); - ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE); ob_debug_enable(OB_DEBUG_SM, TRUE); } else if (!strcmp(argv[i], "--debug-xinerama")) { @@ -609,7 +610,7 @@ static void parse_args(gint *argc, gchar **argv) what we want */ config_file = argv[i+1]; ++i; /* skip the argument */ - ob_debug("--config-file %s\n", config_file); + ob_debug("--config-file %s", config_file); } } else if (!strcmp(argv[i], "--sm-save-file")) { @@ -666,7 +667,7 @@ static Cursor load_cursor(const gchar *name, guint fontval) void ob_exit_with_error(const gchar *msg) { - g_message(msg); + g_message("%s", msg); session_shutdown(TRUE); exit(EXIT_FAILURE); } @@ -708,12 +709,6 @@ Cursor ob_cursor(ObCursor cursor) return cursors[cursor]; } -KeyCode ob_keycode(ObKey key) -{ - g_assert(key < OB_NUM_KEYS); - return keys[key]; -} - ObState ob_state(void) { return state;