X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fopenbox.c;h=4b248a0c4d561ff0c10b241baedf4e822e47627e;hb=d03c1afac676c612c2d70584ceb4101607ac4c7e;hp=55f3d0420444aaf161346902e6d5b33ebba95904;hpb=ec908528cf2abad9d2b968db9c8f7287ef5f54fe;p=chaz%2Fopenbox diff --git a/openbox/openbox.c b/openbox/openbox.c index 55f3d042..4b248a0c 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -59,15 +59,15 @@ RrInstance *ob_rr_inst; RrTheme *ob_rr_theme; Display *ob_display; gint ob_screen; -Window ob_root; -ObState ob_state; -Cursor ob_cursors[OB_NUM_CURSORS]; -KeyCode ob_keys[OB_NUM_KEYS]; +gboolean ob_replace_wm; -static gboolean sync; +static ObState state; +static gboolean xsync; static gboolean shutdown; static gboolean restart; static char *restart_path; +static Cursor cursors[OB_NUM_CURSORS]; +static KeyCode keys[OB_NUM_KEYS]; static void signal_handler(const ObEvent *e, void *data); static void parse_args(int argc, char **argv); @@ -92,7 +92,7 @@ int main(int argc, char **argv) xmlDocPtr doc; xmlNodePtr node; - ob_state = OB_STATE_STARTING; + state = OB_STATE_STARTING; /* initialize the locale */ if (!setlocale(LC_ALL, "")) @@ -147,7 +147,6 @@ int main(int argc, char **argv) #endif ob_screen = DefaultScreen(ob_display); - ob_root = RootWindow(ob_display, ob_screen); ob_rr_inst = RrInstanceNew(ob_display, ob_screen); if (ob_rr_inst == NULL) @@ -155,7 +154,7 @@ int main(int argc, char **argv) /* XXX fork self onto other screens */ - XSynchronize(ob_display, sync); + XSynchronize(ob_display, xsync); /* check for locale support */ if (!XSupportsLocale()) @@ -171,41 +170,41 @@ int main(int argc, char **argv) putenv(g_strdup_printf("DISPLAY=%s", DisplayString(ob_display))); /* create available cursors */ - ob_cursors[OB_CURSOR_POINTER] = + cursors[OB_CURSOR_POINTER] = XCreateFontCursor(ob_display, XC_left_ptr); - ob_cursors[OB_CURSOR_BUSY] = + cursors[OB_CURSOR_BUSY] = XCreateFontCursor(ob_display, XC_watch); - ob_cursors[OB_CURSOR_MOVE] = + cursors[OB_CURSOR_MOVE] = XCreateFontCursor(ob_display, XC_fleur); - ob_cursors[OB_CURSOR_NORTH] = + cursors[OB_CURSOR_NORTH] = XCreateFontCursor(ob_display, XC_top_side); - ob_cursors[OB_CURSOR_NORTHEAST] = + cursors[OB_CURSOR_NORTHEAST] = XCreateFontCursor(ob_display, XC_top_right_corner); - ob_cursors[OB_CURSOR_EAST] = + cursors[OB_CURSOR_EAST] = XCreateFontCursor(ob_display, XC_right_side); - ob_cursors[OB_CURSOR_SOUTHEAST] = + cursors[OB_CURSOR_SOUTHEAST] = XCreateFontCursor(ob_display, XC_bottom_right_corner); - ob_cursors[OB_CURSOR_SOUTH] = + cursors[OB_CURSOR_SOUTH] = XCreateFontCursor(ob_display, XC_bottom_side); - ob_cursors[OB_CURSOR_SOUTHWEST] = + cursors[OB_CURSOR_SOUTHWEST] = XCreateFontCursor(ob_display, XC_bottom_left_corner); - ob_cursors[OB_CURSOR_WEST] = + cursors[OB_CURSOR_WEST] = XCreateFontCursor(ob_display, XC_left_side); - ob_cursors[OB_CURSOR_NORTHWEST] = + cursors[OB_CURSOR_NORTHWEST] = XCreateFontCursor(ob_display, XC_top_left_corner); /* create available keycodes */ - ob_keys[OB_KEY_RETURN] = + keys[OB_KEY_RETURN] = XKeysymToKeycode(ob_display, XStringToKeysym("Return")); - ob_keys[OB_KEY_ESCAPE] = + keys[OB_KEY_ESCAPE] = XKeysymToKeycode(ob_display, XStringToKeysym("Escape")); - ob_keys[OB_KEY_LEFT] = + keys[OB_KEY_LEFT] = XKeysymToKeycode(ob_display, XStringToKeysym("Left")); - ob_keys[OB_KEY_RIGHT] = + keys[OB_KEY_RIGHT] = XKeysymToKeycode(ob_display, XStringToKeysym("Right")); - ob_keys[OB_KEY_UP] = + keys[OB_KEY_UP] = XKeysymToKeycode(ob_display, XStringToKeysym("Up")); - ob_keys[OB_KEY_DOWN] = + keys[OB_KEY_DOWN] = XKeysymToKeycode(ob_display, XStringToKeysym("Down")); prop_startup(); /* get atoms values for the display */ @@ -245,7 +244,6 @@ int main(int argc, char **argv) if (ob_rr_theme == NULL) exit_with_error("Unable to load a theme."); - frame_startup(); moveresize_startup(); screen_startup(); group_startup(); @@ -258,10 +256,10 @@ int main(int argc, char **argv) /* get all the existing windows */ client_manage_all(); - ob_state = OB_STATE_RUNNING; + state = OB_STATE_RUNNING; while (!shutdown) event_loop(); - ob_state = OB_STATE_EXITING; + state = OB_STATE_EXITING; dock_remove_all(); client_unmanage_all(); @@ -273,7 +271,6 @@ int main(int argc, char **argv) screen_shutdown(); focus_shutdown(); moveresize_shutdown(); - frame_shutdown(); menu_shutdown(); window_shutdown(); grab_shutdown(); @@ -507,6 +504,8 @@ static void print_help() g_print(" --sm-client-id ID Specify session management ID\n"); g_print(" --sm-disable Disable connection to session manager\n"); #endif + g_print(" --replace Replace the currently running window " + "manager\n"); g_print(" --help Display this help and exit\n"); g_print(" --version Display the version and exit\n"); g_print(" --sync Run in synchronous mode (this is slow and\n" @@ -525,8 +524,12 @@ static void parse_args(int argc, char **argv) } else if (!strcmp(argv[i], "--help")) { print_help(); exit(0); + } else if (!strcmp(argv[i], "--g-fatal-warnings")) { + g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL); + } else if (!strcmp(argv[i], "--replace")) { + ob_replace_wm = TRUE; } else if (!strcmp(argv[i], "--sync")) { - sync = TRUE; + xsync = TRUE; #ifdef USE_SM } else if (!strcmp(argv[i], "--sm-client-id")) { if (i == argc - 1) /* no args left */ @@ -544,15 +547,6 @@ static void parse_args(int argc, char **argv) } } -gboolean ob_pointer_pos(int *x, int *y) -{ - Window w; - int i; - guint u; - - return !!XQueryPointer(ob_display, ob_root, &w, &w, x, y, &i, &i, &u); -} - #ifdef USE_SM static void sm_save_yourself(SmcConn conn, SmPointer data, int save_type, Bool shutdown, int interact_style, Bool fast) @@ -605,11 +599,16 @@ void ob_exit() Cursor ob_cursor(ObCursor cursor) { g_assert(cursor < OB_NUM_CURSORS); - return ob_cursors[cursor]; + return cursors[cursor]; } KeyCode ob_keycode(ObKey key) { g_assert(key < OB_NUM_KEYS); - return ob_keys[key]; + return keys[key]; +} + +ObState ob_state() +{ + return state; }