]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
for startup notification, use the left ptr+watch if it is available, and fall back...
[chaz/openbox] / openbox / config.c
index 66c836ea16d0238e0178e47a68bc1c9f7e44442e..6a45005d81f31d6b6fb11099a62d2fcf23e50ea3 100644 (file)
@@ -2,7 +2,7 @@
 
    config.c for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
 
    config.c for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@
 #include "screen.h"
 #include "parser/parse.h"
 #include "openbox.h"
 #include "screen.h"
 #include "parser/parse.h"
 #include "openbox.h"
+#include "gettext.h"
 
 gboolean config_focus_new;
 gboolean config_focus_follow;
 
 gboolean config_focus_new;
 gboolean config_focus_follow;
@@ -37,15 +38,16 @@ ObPlacePolicy config_place_policy;
 
 gchar   *config_theme;
 gboolean config_theme_keepborder;
 
 gchar   *config_theme;
 gboolean config_theme_keepborder;
-gboolean config_theme_hidedisabled;
 
 gchar   *config_title_layout;
 
 gchar   *config_title_layout;
-gboolean config_title_number;
+
+gboolean config_animate_iconify;
 
 RrFont *config_font_activewindow;
 RrFont *config_font_inactivewindow;
 RrFont *config_font_menuitem;
 RrFont *config_font_menutitle;
 
 RrFont *config_font_activewindow;
 RrFont *config_font_inactivewindow;
 RrFont *config_font_menuitem;
 RrFont *config_font_menutitle;
+RrFont *config_font_osd;
 
 gint    config_desktops_num;
 GSList *config_desktops_names;
 
 gint    config_desktops_num;
 GSList *config_desktops_names;
@@ -76,7 +78,6 @@ gint config_mouse_threshold;
 gint config_mouse_dclicktime;
 
 gboolean config_menu_warppointer;
 gint config_mouse_dclicktime;
 
 gboolean config_menu_warppointer;
-gboolean config_menu_xorstyle;
 guint    config_menu_hide_delay;
 gboolean config_menu_middle;
 guint    config_submenu_show_delay;
 guint    config_menu_hide_delay;
 gboolean config_menu_middle;
 guint    config_submenu_show_delay;
@@ -86,7 +87,6 @@ GSList *config_menu_files;
 
 gint     config_resist_win;
 gint     config_resist_edge;
 
 gint     config_resist_win;
 gint     config_resist_edge;
-gboolean config_resist_layers_below;
 
 GSList *config_per_app_settings;
 
 
 GSList *config_per_app_settings;
 
@@ -100,22 +100,23 @@ GSList *config_per_app_settings;
       <position>
         <x>700</x>
         <y>0</y>
       <position>
         <x>700</x>
         <y>0</y>
+        <monitor>1</monitor>
       </position>
       </position>
-      <head>1</head>
+      .. there is a lot more settings available
     </application>
   </applications>
 */
 
 /* Manages settings for individual applications.
     </application>
   </applications>
 */
 
 /* Manages settings for individual applications.
-   Some notes: head is the screen number in a multi monitor
+   Some notes: monitor is the screen number in a multi monitor
    (Xinerama) setup (starting from 0) or mouse, meaning the
    (Xinerama) setup (starting from 0) or mouse, meaning the
-   head the pointer is on. Default: mouse.
+   monitor the pointer is on. Default: mouse.
    Layer can be three values, above (Always on top), below
    (Always on bottom) and everything else (normal behaviour).
    Positions can be an integer value or center, which will
    Layer can be three values, above (Always on top), below
    (Always on bottom) and everything else (normal behaviour).
    Positions can be an integer value or center, which will
-   center the window in the specified axis. Position is relative
-   from head, so <position><x>center</x></position><head>1</head>
-   will center the window on the second head.
+   center the window in the specified axis. Position is within
+   the monitor, so <position><x>center</x></position><monitor>2</monitor>
+   will center the window on the second monitor.
 */
 static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                                    xmlNodePtr node, gpointer d)
 */
 static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                                    xmlNodePtr node, gpointer d)
@@ -149,108 +150,124 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
 
             settings->decor = -1;
             if ((n = parse_find_node("decor", app->children)))
 
             settings->decor = -1;
             if ((n = parse_find_node("decor", app->children)))
-                settings->decor = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->decor = parse_bool(doc, n);
 
             settings->shade = -1;
             if ((n = parse_find_node("shade", app->children)))
 
             settings->shade = -1;
             if ((n = parse_find_node("shade", app->children)))
-                settings->shade = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->shade = parse_bool(doc, n);
 
             settings->position.x = settings->position.y = 0;
             settings->pos_given = FALSE;
             if ((n = parse_find_node("position", app->children))) {
 
             settings->position.x = settings->position.y = 0;
             settings->pos_given = FALSE;
             if ((n = parse_find_node("position", app->children))) {
-                if ((c = parse_find_node("x", n->children))) {
-                    gchar *s = parse_string(doc, c);
-                    if (!strcmp(s, "center")) {
-                        settings->center_x = TRUE;
-                        x_pos_given = TRUE;
-                    } else {
-                        settings->position.x = parse_int(doc, c);
-                        x_pos_given = TRUE;
+                if ((c = parse_find_node("x", n->children)))
+                    if (!parse_contains("default", doc, c)) {
+                        gchar *s = parse_string(doc, c);
+                        if (!strcmp(s, "center")) {
+                            settings->center_x = TRUE;
+                            x_pos_given = TRUE;
+                        } else {
+                            settings->position.x = parse_int(doc, c);
+                            x_pos_given = TRUE;
+                        }
+                        g_free(s);
                     }
                     }
-                    g_free(s);
-                }
 
 
-                if (x_pos_given && (c = parse_find_node("y", n->children))) {
-                    gchar *s = parse_string(doc, c);
-                    if (!strcmp(s, "center")) {
-                        settings->center_y = TRUE;
-                        settings->pos_given = TRUE;
-                    } else {
-                        settings->position.y = parse_int(doc, c);
-                        settings->pos_given = TRUE;
+                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")) {
+                            settings->center_y = TRUE;
+                            settings->pos_given = TRUE;
+                        } else {
+                            settings->position.y = parse_int(doc, c);
+                            settings->pos_given = TRUE;
+                        }
+                        g_free(s);
+                    }
+
+                if (settings->pos_given &&
+                    (c = parse_find_node("monitor", n->children)))
+                    if (!parse_contains("default", doc, c)) {
+                        gchar *s = parse_string(doc, c);
+                        if (!strcmp(s, "mouse"))
+                            settings->monitor = 0;
+                        else
+                            settings->monitor = parse_int(doc, c) + 1;
+                        g_free(s);
                     }
                     }
-                    g_free(s);
-                }
             }
 
             settings->focus = -1;
             if ((n = parse_find_node("focus", app->children)))
             }
 
             settings->focus = -1;
             if ((n = parse_find_node("focus", app->children)))
-                settings->focus = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->focus = parse_bool(doc, n);
 
             if ((n = parse_find_node("desktop", app->children))) {
 
             if ((n = parse_find_node("desktop", app->children))) {
-                gchar *s = parse_string(doc, n);
-                if (!strcmp(s, "all"))
-                    settings->desktop = DESKTOP_ALL;
-                else
-                    settings->desktop = parse_int(doc, n);
-                g_free(s);
-            } else
-                settings->desktop = DESKTOP_ALL - 1; /* lets hope the user
-                                                      * doesn't have 2^32
-                                                      * desktops */
-
-            if ((n = parse_find_node("head", app->children))) {
-                gchar *s = parse_string(doc, n);
-                if (!strcmp(s, "mouse"))
-                    settings->head = -1;
-                else
-                    settings->head = parse_int(doc, n);
-                g_free(s);
+                if (!parse_contains("default", doc, n)) {
+                    gchar *s = parse_string(doc, n);
+                    if (!strcmp(s, "all"))
+                        settings->desktop = DESKTOP_ALL;
+                    else {
+                        gint i = parse_int(doc, n);
+                        if (i > 0)
+                            settings->desktop = i;
+                    }
+                    g_free(s);
+                } else
+                    settings->desktop = 0;
             }
 
             settings->layer = -2;
             }
 
             settings->layer = -2;
-            if ((n = parse_find_node("layer", app->children))) {
-                gchar *s = parse_string(doc, n);
-                if (!strcmp(s, "above"))
-                    settings->layer = 1;
-                else if (!strcmp(s, "below"))
-                    settings->layer = -1;
-                else
-                    settings->layer = 0;
-                g_free(s);
-            }
+            if ((n = parse_find_node("layer", app->children)))
+                if (!parse_contains("default", doc, n)) {
+                    gchar *s = parse_string(doc, n);
+                    if (!strcmp(s, "above"))
+                        settings->layer = 1;
+                    else if (!strcmp(s, "below"))
+                        settings->layer = -1;
+                    else
+                        settings->layer = 0;
+                    g_free(s);
+                }
 
             settings->iconic = -1;
             if ((n = parse_find_node("iconic", app->children)))
 
             settings->iconic = -1;
             if ((n = parse_find_node("iconic", app->children)))
-                settings->iconic = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->iconic = parse_bool(doc, n);
 
             settings->skip_pager = -1;
             if ((n = parse_find_node("skip_pager", app->children)))
 
             settings->skip_pager = -1;
             if ((n = parse_find_node("skip_pager", app->children)))
-                settings->skip_pager = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->skip_pager = parse_bool(doc, n);
 
             settings->skip_taskbar = -1;
             if ((n = parse_find_node("skip_taskbar", app->children)))
 
             settings->skip_taskbar = -1;
             if ((n = parse_find_node("skip_taskbar", app->children)))
-                settings->skip_taskbar = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->skip_taskbar = parse_bool(doc, n);
 
             settings->fullscreen = -1;
             if ((n = parse_find_node("fullscreen", app->children)))
 
             settings->fullscreen = -1;
             if ((n = parse_find_node("fullscreen", app->children)))
-                settings->fullscreen = parse_bool(doc, n);
+                if (!parse_contains("default", doc, n))
+                    settings->fullscreen = parse_bool(doc, n);
 
             settings->max_horz = -1;
             settings->max_vert = -1;
 
             settings->max_horz = -1;
             settings->max_vert = -1;
-            if ((n = parse_find_node("maximized", app->children))) {
-                gchar *s = parse_string(doc, n);
-                if (!strcmp(s, "horizontal")) {
-                    settings->max_horz = TRUE;
-                    settings->max_vert = FALSE;
-                } else if (!strcmp(s, "vertical")) {
-                    settings->max_horz = FALSE;
-                    settings->max_vert = TRUE;
-                } else
-                    settings->max_horz = settings->max_vert =
-                        parse_bool(doc, n);
-                g_free(s);
-            }
+            if ((n = parse_find_node("maximized", app->children)))
+                if (!parse_contains("default", doc, n)) {
+                    gchar *s = parse_string(doc, n);
+                    if (!strcmp(s, "horizontal")) {
+                        settings->max_horz = TRUE;
+                        settings->max_vert = FALSE;
+                    } else if (!strcmp(s, "vertical")) {
+                        settings->max_horz = FALSE;
+                        settings->max_vert = TRUE;
+                    } else
+                        settings->max_horz = settings->max_vert =
+                            parse_bool(doc, n);
+                    g_free(s);
+                }
 
             config_per_app_settings = g_slist_append(config_per_app_settings,
                                               (gpointer) settings);
 
             config_per_app_settings = g_slist_append(config_per_app_settings,
                                               (gpointer) settings);
@@ -274,47 +291,60 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                       GList *keylist)
 {
     gchar *key;
                       GList *keylist)
 {
     gchar *key;
-    ObAction *action;
-    xmlNodePtr n, nact;
-    GList *it;
+    xmlNodePtr n;
+    gboolean is_chroot = FALSE;
 
 
-    if ((n = parse_find_node("chainQuitKey", node))) {
-        key = parse_string(doc, n);
-        translate_key(key, &config_keyboard_reset_state,
-                      &config_keyboard_reset_keycode);
-        g_free(key);
-    }
+    if (!parse_attr_string("key", node, &key))
+        return;
 
 
-    n = parse_find_node("keybind", node);
-    while (n) {
-        if (parse_attr_string("key", n, &key)) {
-            keylist = g_list_append(keylist, key);
+    parse_attr_bool("chroot", node, &is_chroot);
 
 
-            parse_key(i, doc, n->children, keylist);
+    keylist = g_list_append(keylist, key);
 
 
-            it = g_list_last(keylist);
-            g_free(it->data);
-            keylist = g_list_delete_link(keylist, it);
+    if ((n = parse_find_node("keybind", node->children))) {
+        while (n) {
+            parse_key(i, doc, n, keylist);
+            n = parse_find_node("keybind", n->next);
         }
         }
-        n = parse_find_node("keybind", n->next);
     }
     }
-    if (keylist) {
-        nact = parse_find_node("action", node);
-        while (nact) {
-            if ((action = action_parse(i, doc, nact,
-                                       OB_USER_ACTION_KEYBOARD_KEY)))
+    else if ((n = parse_find_node("action", node->children))) {
+        while (n) {
+            ObAction *action;
+            
+            action = action_parse(i, doc, n, OB_USER_ACTION_KEYBOARD_KEY);
+            if (action)
                 keyboard_bind(keylist, action);
                 keyboard_bind(keylist, action);
-            nact = parse_find_node("action", nact->next);
+            n = parse_find_node("action", n->next);
         }
     }
         }
     }
+
+    if (is_chroot)
+        keyboard_chroot(keylist);
+
+    g_free(key);
+    keylist = g_list_delete_link(keylist, g_list_last(keylist));
 }
 
 static void parse_keyboard(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                            gpointer d)
 {
 }
 
 static void parse_keyboard(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                            gpointer d)
 {
+    xmlNodePtr n;
+    gchar *key;
+
     keyboard_unbind_all();
 
     keyboard_unbind_all();
 
-    parse_key(i, doc, node->children, NULL);
+    if ((n = parse_find_node("chainQuitKey", node->children))) {
+        key = parse_string(doc, n);
+        translate_key(key, &config_keyboard_reset_state,
+                      &config_keyboard_reset_keycode);
+        g_free(key);
+    }
+
+    if ((n = parse_find_node("keybind", node->children)))
+        while (n) {
+            parse_key(i, doc, n, NULL);
+            n = parse_find_node("keybind", n->next);
+        }
 }
 
 /*
 }
 
 /*
@@ -434,15 +464,20 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         g_free(c);
     }
     if ((n = parse_find_node("titleLayout", node))) {
         g_free(c);
     }
     if ((n = parse_find_node("titleLayout", node))) {
+        gchar *c, *d;
+
         g_free(config_title_layout);
         config_title_layout = parse_string(doc, n);
         g_free(config_title_layout);
         config_title_layout = parse_string(doc, n);
+
+        /* replace duplicates with spaces */
+        for (c = config_title_layout; *c != '\0'; ++c)
+            for (d = c+1; *d != '\0'; ++d)
+                if (*c == *d) *d = ' ';
     }
     }
-    if ((n = parse_find_node("titleNumber", node)))
-        config_title_number = parse_bool(doc, n);
     if ((n = parse_find_node("keepBorder", node)))
         config_theme_keepborder = parse_bool(doc, n);
     if ((n = parse_find_node("keepBorder", node)))
         config_theme_keepborder = parse_bool(doc, n);
-    if ((n = parse_find_node("hideDisabled", node)))
-        config_theme_hidedisabled = parse_bool(doc, n);
+    if ((n = parse_find_node("animateIconify", node)))
+        config_animate_iconify = parse_bool(doc, n);
 
     n = parse_find_node("font", node);
     while (n) {
 
     n = parse_find_node("font", node);
     while (n) {
@@ -452,18 +487,17 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         gint         size = RrDefaultFontSize;
         RrFontWeight weight = RrDefaultFontWeight;
         RrFontSlant  slant = RrDefaultFontSlant;
         gint         size = RrDefaultFontSize;
         RrFontWeight weight = RrDefaultFontWeight;
         RrFontSlant  slant = RrDefaultFontSlant;
-        gboolean     shadow = RrDefaultFontShadow;
-        gint         offset = RrDefaultFontShadowOffset;
-        gchar        tint = RrDefaultFontShadowTint;
 
         if (parse_attr_contains("ActiveWindow", n, "place"))
             font = &config_font_activewindow;
         else if (parse_attr_contains("InactiveWindow", n, "place"))
             font = &config_font_inactivewindow;
 
         if (parse_attr_contains("ActiveWindow", n, "place"))
             font = &config_font_activewindow;
         else if (parse_attr_contains("InactiveWindow", n, "place"))
             font = &config_font_inactivewindow;
-        else if (parse_attr_contains("MenuTitle", n, "place"))
+        else if (parse_attr_contains("MenuHeader", n, "place"))
             font = &config_font_menutitle;
         else if (parse_attr_contains("MenuItem", n, "place"))
             font = &config_font_menuitem;
             font = &config_font_menutitle;
         else if (parse_attr_contains("MenuItem", n, "place"))
             font = &config_font_menuitem;
+        else if (parse_attr_contains("OnScreenDisplay", n, "place"))
+            font = &config_font_osd;
         else
             goto next_font;
 
         else
             goto next_font;
 
@@ -489,18 +523,8 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                 slant = RR_FONTSLANT_OBLIQUE;
             g_free(s);
         }
                 slant = RR_FONTSLANT_OBLIQUE;
             g_free(s);
         }
-        if ((fnode = parse_find_node("shadow", n->children)))
-            shadow = parse_bool(doc, fnode);
-        if ((fnode = parse_find_node("shadowoffset", n->children)))
-            offset = parse_int(doc, fnode);
-        if ((fnode = parse_find_node("shadowtint", n->children))) {
-            tint = parse_int(doc, fnode);
-            if (tint > 100) tint = 100;
-            else if (tint < -100) tint = -100;
-        }
 
 
-        *font = RrFontOpen(ob_rr_inst, name, size, weight, slant,
-                           shadow, offset, tint);
+        *font = RrFontOpen(ob_rr_inst, name, size, weight, slant);
         g_free(name);
     next_font:
         n = parse_find_node("font", n->next);
         g_free(name);
     next_font:
         n = parse_find_node("font", n->next);
@@ -551,8 +575,6 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     
     if ((n = parse_find_node("drawContents", node)))
         config_resize_redraw = parse_bool(doc, n);
     
     if ((n = parse_find_node("drawContents", node)))
         config_resize_redraw = parse_bool(doc, n);
-    if ((n = parse_find_node("fourCorner", node)))
-        config_resize_four_corners = parse_bool(doc, n);
     if ((n = parse_find_node("popupShow", node))) {
         config_resize_popup_show = parse_int(doc, n);
         if (parse_contains("Always", doc, n))
     if ((n = parse_find_node("popupShow", node))) {
         config_resize_popup_show = parse_int(doc, n);
         if (parse_contains("Always", doc, n))
@@ -616,11 +638,11 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_dock_nostrut = parse_bool(doc, n);
     }
     if ((n = parse_find_node("stacking", node))) {
             config_dock_nostrut = parse_bool(doc, n);
     }
     if ((n = parse_find_node("stacking", node))) {
-        if (parse_contains("top", doc, n))
+        if (parse_contains("above", doc, n))
             config_dock_layer = OB_STACKING_LAYER_ABOVE;
         else if (parse_contains("normal", doc, n))
             config_dock_layer = OB_STACKING_LAYER_NORMAL;
             config_dock_layer = OB_STACKING_LAYER_ABOVE;
         else if (parse_contains("normal", doc, n))
             config_dock_layer = OB_STACKING_LAYER_NORMAL;
-        else if (parse_contains("bottom", doc, n))
+        else if (parse_contains("below", doc, n))
             config_dock_layer = OB_STACKING_LAYER_BELOW;
     }
     if ((n = parse_find_node("direction", node))) {
             config_dock_layer = OB_STACKING_LAYER_BELOW;
     }
     if ((n = parse_find_node("direction", node))) {
@@ -642,7 +664,7 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_dock_app_move_button = b;
             config_dock_app_move_modifiers = s;
         } else {
             config_dock_app_move_button = b;
             config_dock_app_move_modifiers = s;
         } else {
-            g_warning("invalid button '%s'", str);
+            g_message(_("Invalid button '%s' specified in config file"), str);
         }
         g_free(str);
     }
         }
         g_free(str);
     }
@@ -661,17 +683,13 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                                                parse_expand_tilde(c));
             g_free(c);
         }
                                                parse_expand_tilde(c));
             g_free(c);
         }
-        if ((n = parse_find_node("warpPointer", node)))
-            config_menu_warppointer = parse_bool(doc, n);
-        if ((n = parse_find_node("xorStyle", node)))
-            config_menu_xorstyle = parse_bool(doc, n);
         if ((n = parse_find_node("hideDelay", node)))
             config_menu_hide_delay = parse_int(doc, n);
         if ((n = parse_find_node("middle", node)))
             config_menu_middle = parse_bool(doc, n);
         if ((n = parse_find_node("submenuShowDelay", node)))
             config_submenu_show_delay = parse_int(doc, n);
         if ((n = parse_find_node("hideDelay", node)))
             config_menu_hide_delay = parse_int(doc, n);
         if ((n = parse_find_node("middle", node)))
             config_menu_middle = parse_bool(doc, n);
         if ((n = parse_find_node("submenuShowDelay", node)))
             config_submenu_show_delay = parse_int(doc, n);
-        if ((n = parse_find_node("desktopMenuIcons", node)))
+        if ((n = parse_find_node("applicationIcons", node)))
             config_menu_client_list_icons = parse_bool(doc, n);
     }
 }
             config_menu_client_list_icons = parse_bool(doc, n);
     }
 }
@@ -686,8 +704,6 @@ static void parse_resistance(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         config_resist_win = parse_int(doc, n);
     if ((n = parse_find_node("screen_edge_strength", node)))
         config_resist_edge = parse_int(doc, n);
         config_resist_win = parse_int(doc, n);
     if ((n = parse_find_node("screen_edge_strength", node)))
         config_resist_edge = parse_int(doc, n);
-    if ((n = parse_find_node("edges_hit_layers_below", node)))
-        config_resist_layers_below = parse_bool(doc, n);
 }
 
 typedef struct
 }
 
 typedef struct
@@ -732,7 +748,7 @@ static void bind_default_mouse()
         { "Middle", "Desktop", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Right", "Desktop", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "Titlebar", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Middle", "Desktop", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Right", "Desktop", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "Titlebar", OB_MOUSE_ACTION_PRESS, "Focus" },
-        { "Left", "Handle", OB_MOUSE_ACTION_PRESS, "Focus" },
+        { "Left", "Bottom", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "BLCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "BRCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "TLCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "BLCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "BRCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
         { "Left", "TLCorner", OB_MOUSE_ACTION_PRESS, "Focus" },
@@ -746,7 +762,6 @@ static void bind_default_mouse()
         { "Left", "Client", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "Titlebar", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Middle", "Titlebar", OB_MOUSE_ACTION_CLICK, "Lower" },
         { "Left", "Client", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "Titlebar", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Middle", "Titlebar", OB_MOUSE_ACTION_CLICK, "Lower" },
-        { "Left", "Handle", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "BLCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "BRCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "TLCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "BLCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "BRCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "TLCorner", OB_MOUSE_ACTION_CLICK, "Raise" },
@@ -809,10 +824,9 @@ void config_startup(ObParseInst *i)
 
     config_theme = NULL;
 
 
     config_theme = NULL;
 
+    config_animate_iconify = TRUE;
     config_title_layout = g_strdup("NLIMC");
     config_title_layout = g_strdup("NLIMC");
-    config_title_number = TRUE;
     config_theme_keepborder = TRUE;
     config_theme_keepborder = TRUE;
-    config_theme_hidedisabled = FALSE;
 
     config_font_activewindow = NULL;
     config_font_inactivewindow = NULL;
 
     config_font_activewindow = NULL;
     config_font_inactivewindow = NULL;
@@ -865,12 +879,10 @@ void config_startup(ObParseInst *i)
 
     config_resist_win = 10;
     config_resist_edge = 20;
 
     config_resist_win = 10;
     config_resist_edge = 20;
-    config_resist_layers_below = FALSE;
 
     parse_register(i, "resistance", parse_resistance, NULL);
 
     config_menu_warppointer = TRUE;
 
     parse_register(i, "resistance", parse_resistance, NULL);
 
     config_menu_warppointer = TRUE;
-    config_menu_xorstyle = TRUE;
     config_menu_hide_delay = 250;
     config_menu_middle = FALSE;
     config_submenu_show_delay = 0;
     config_menu_hide_delay = 250;
     config_menu_middle = FALSE;
     config_submenu_show_delay = 0;
This page took 0.036378 seconds and 4 git commands to generate.