X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=0d6efc9250e5d83ef790b94accd2a38c5988906b;hb=fe825d1dd274ca1fdafdca333df6d6689ec039c6;hp=96f3ba8afdeedc6520554fa52145195e16a77ed3;hpb=97792a403a52c12c2601a7b2caebdea197f0b5f0;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 96f3ba8a..0d6efc92 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -39,6 +39,8 @@ gboolean config_focus_under_mouse; ObPlacePolicy config_place_policy; gboolean config_place_center; +StrutPartial config_margins; + gchar *config_theme; gboolean config_theme_keepborder; @@ -187,7 +189,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if (class_set || name_set) { xmlNodePtr n, c; ObAppSettings *settings = config_create_app_settings();; - + if (name_set) settings->name = g_pattern_spec_new(name); @@ -209,7 +211,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if ((c = parse_find_node("x", n->children))) if (!parse_contains("default", doc, c)) { gchar *s = parse_string(doc, c); - if (!strcmp(s, "center")) { + if (!g_ascii_strcasecmp(s, "center")) { settings->center_x = TRUE; x_pos_given = TRUE; } else { @@ -227,7 +229,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if (x_pos_given && (c = parse_find_node("y", n->children))) if (!parse_contains("default", doc, c)) { gchar *s = parse_string(doc, c); - if (!strcmp(s, "center")) { + if (!g_ascii_strcasecmp(s, "center")) { settings->center_y = TRUE; settings->pos_given = TRUE; } else { @@ -246,7 +248,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, (c = parse_find_node("monitor", n->children))) if (!parse_contains("default", doc, c)) { gchar *s = parse_string(doc, c); - if (!strcmp(s, "mouse")) + if (!g_ascii_strcasecmp(s, "mouse")) settings->monitor = 0; else settings->monitor = parse_int(doc, c) + 1; @@ -261,7 +263,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if ((n = parse_find_node("desktop", app->children))) { if (!parse_contains("default", doc, n)) { gchar *s = parse_string(doc, n); - if (!strcmp(s, "all")) + if (!g_ascii_strcasecmp(s, "all")) settings->desktop = DESKTOP_ALL; else { gint i = parse_int(doc, n); @@ -275,9 +277,9 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if ((n = parse_find_node("layer", app->children))) if (!parse_contains("default", doc, n)) { gchar *s = parse_string(doc, n); - if (!strcmp(s, "above")) + if (!g_ascii_strcasecmp(s, "above")) settings->layer = 1; - else if (!strcmp(s, "below")) + else if (!g_ascii_strcasecmp(s, "below")) settings->layer = -1; else settings->layer = 0; @@ -303,10 +305,10 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, if ((n = parse_find_node("maximized", app->children))) if (!parse_contains("default", doc, n)) { gchar *s = parse_string(doc, n); - if (!strcmp(s, "horizontal")) { + if (!g_ascii_strcasecmp(s, "horizontal")) { settings->max_horz = TRUE; settings->max_vert = FALSE; - } else if (!strcmp(s, "vertical")) { + } else if (!g_ascii_strcasecmp(s, "vertical")) { settings->max_horz = FALSE; settings->max_vert = TRUE; } else @@ -318,7 +320,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, config_per_app_settings = g_slist_append(config_per_app_settings, (gpointer) settings); } - + app = parse_find_node("application", app->next); } @@ -360,7 +362,7 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, else if ((n = parse_find_node("action", node->children))) { while (n) { ObActionsAct *action; - + action = actions_parse(i, doc, n); if (action) keyboard_bind(keylist, action); @@ -399,7 +401,7 @@ static void parse_keyboard(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, /* - + @@ -418,7 +420,7 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, mouse_unbind_all(); node = node->children; - + if ((n = parse_find_node("dragThreshold", node))) config_mouse_threshold = parse_int(doc, n); if ((n = parse_find_node("doubleClickTime", node))) @@ -470,7 +472,7 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, xmlNodePtr n; node = node->children; - + if ((n = parse_find_node("focusNew", node))) config_focus_new = parse_bool(doc, n); if ((n = parse_find_node("followMouse", node))) @@ -491,7 +493,7 @@ static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, xmlNodePtr n; node = node->children; - + if ((n = parse_find_node("policy", node))) if (parse_contains("UnderMouse", doc, n)) config_place_policy = OB_PLACE_POLICY_MOUSE; @@ -499,6 +501,23 @@ static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, config_place_center = parse_bool(doc, n); } +static void parse_margins(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, + gpointer d) +{ + xmlNodePtr n; + + node = node->children; + + if ((n = parse_find_node("top", node))) + config_margins.top = MAX(0, parse_int(doc, n)); + if ((n = parse_find_node("left", node))) + config_margins.left = MAX(0, parse_int(doc, n)); + if ((n = parse_find_node("right", node))) + config_margins.right = MAX(0, parse_int(doc, n)); + if ((n = parse_find_node("bottom", node))) + config_margins.bottom = MAX(0, parse_int(doc, n)); +} + static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, gpointer d) { @@ -588,7 +607,7 @@ static void parse_desktops(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, xmlNodePtr n; node = node->children; - + if ((n = parse_find_node("number", node))) { gint d = parse_int(doc, n); if (d > 0) @@ -623,7 +642,7 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, xmlNodePtr n; node = node->children; - + if ((n = parse_find_node("drawContents", node))) config_resize_redraw = parse_bool(doc, n); if ((n = parse_find_node("popupShow", node))) { @@ -744,8 +763,8 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, config_menu_client_list_icons = parse_bool(doc, n); } } - -static void parse_resistance(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, + +static void parse_resistance(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, gpointer d) { xmlNodePtr n; @@ -763,6 +782,21 @@ typedef struct const gchar *actname; } ObDefKeyBind; +static void bind_default_keyboard() +{ + ObDefKeyBind *it; + ObDefKeyBind binds[] = { + { "A-Tab", "NextWindow" }, + { "S-A-Tab", "PreviousWindow" }, + { "A-F4", "Close" }, + { NULL, NULL } + }; + for (it = binds; it->key; ++it) { + GList *l = g_list_append(NULL, g_strdup(it->key)); + keyboard_bind(l, actions_parse_string(it->actname)); + } +} + typedef struct { const gchar *button; @@ -807,14 +841,18 @@ static void bind_default_mouse() { "Left", "AllDesktops", OB_MOUSE_ACTION_CLICK, "Raise" }, { "Left", "Shade", OB_MOUSE_ACTION_CLICK, "Raise" }, { "Left", "Close", OB_MOUSE_ACTION_CLICK, "Close" }, - { "Left", "Maximize", OB_MOUSE_ACTION_CLICK, "Maximize" }, + { "Left", "Maximize", OB_MOUSE_ACTION_CLICK, "ToggleMaximize" }, { "Left", "Iconify", OB_MOUSE_ACTION_CLICK, "Iconify" }, - { "Left", "AllDesktops", OB_MOUSE_ACTION_CLICK, "Omnipresent" }, - { "Left", "Shade", OB_MOUSE_ACTION_CLICK, "Shade" }, + { "Left", "AllDesktops", OB_MOUSE_ACTION_CLICK, "ToggleOmnipresent" }, + { "Left", "Shade", OB_MOUSE_ACTION_CLICK, "ToggleShade" }, { "Left", "TLCorner", OB_MOUSE_ACTION_MOTION, "Resize" }, { "Left", "TRCorner", OB_MOUSE_ACTION_MOTION, "Resize" }, { "Left", "BLCorner", OB_MOUSE_ACTION_MOTION, "Resize" }, { "Left", "BRCorner", OB_MOUSE_ACTION_MOTION, "Resize" }, + { "Left", "Top", OB_MOUSE_ACTION_MOTION, "Resize" }, + { "Left", "Bottom", OB_MOUSE_ACTION_MOTION, "Resize" }, + { "Left", "Left", OB_MOUSE_ACTION_MOTION, "Resize" }, + { "Left", "Right", OB_MOUSE_ACTION_MOTION, "Resize" }, { "Left", "Titlebar", OB_MOUSE_ACTION_MOTION, "Move" }, { "A-Left", "Frame", OB_MOUSE_ACTION_MOTION, "Move" }, { "A-Middle", "Frame", OB_MOUSE_ACTION_MOTION, "Resize" }, @@ -842,6 +880,10 @@ void config_startup(ObParseInst *i) parse_register(i, "placement", parse_placement, NULL); + STRUT_PARTIAL_SET(config_margins, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + + parse_register(i, "margins", parse_margins, NULL); + config_theme = NULL; config_animate_iconify = TRUE; @@ -886,6 +928,8 @@ void config_startup(ObParseInst *i) translate_key("C-g", &config_keyboard_reset_state, &config_keyboard_reset_keycode); + bind_default_keyboard(); + parse_register(i, "keyboard", parse_keyboard, NULL); config_mouse_threshold = 8;