]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
add option titleNumber in theme section to disable the little [x] that you get after...
[chaz/openbox] / openbox / config.c
index aa903a2adde55d4db910042e1db5fe24b533b3bf..0eb602211251166c6dc55c683d741ef1ffe7a4ca 100644 (file)
@@ -23,6 +23,7 @@
 #include "prop.h"
 #include "translate.h"
 #include "client.h"
+#include "screen.h"
 #include "parser/parse.h"
 #include "openbox.h"
 
@@ -38,7 +39,8 @@ gchar   *config_theme;
 gboolean config_theme_keepborder;
 gboolean config_theme_hidedisabled;
 
-gchar *config_title_layout;
+gchar   *config_title_layout;
+gboolean config_title_number;
 
 gint    config_desktops_num;
 GSList *config_desktops_names;
@@ -71,14 +73,14 @@ 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;
 gboolean config_menu_client_list_icons;
 
 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;
@@ -114,14 +116,28 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                                    xmlNodePtr node, gpointer d)
 {
     xmlNodePtr app = parse_find_node("application", node->children);
-    gchar *name;
+    gchar *name, *class;
+    gboolean name_set, class_set;
+    gboolean x_pos_given;
 
     while (app) {
-        gboolean x_pos_given = FALSE;
-        if (parse_attr_string("name", app, &name)) {
+        name_set = class_set = x_pos_given = FALSE;
+
+        class_set = parse_attr_string("class", app, &class);
+        name_set = parse_attr_string("name", app, &name);
+        if (class_set || name_set) {
             xmlNodePtr n, c;
             ObAppSettings *settings = g_new0(ObAppSettings, 1);
-            settings->name = name;
+            
+            if (name_set)
+                settings->name = name;
+            else
+                settings->name = NULL;
+            if (class_set)
+                settings->class = class;
+            else
+                settings->class = NULL;
+
             if (!parse_attr_string("role", app, &settings->role))
                 settings->role = NULL;
 
@@ -137,7 +153,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
             settings->pos_given = FALSE;
             if ((n = parse_find_node("position", app->children))) {
                 if ((c = parse_find_node("x", n->children))) {
-                    str *s = parse_string(doc, c);
+                    gchar *s = parse_string(doc, c);
                     if (!strcmp(s, "center")) {
                         settings->center_x = TRUE;
                         x_pos_given = TRUE;
@@ -149,7 +165,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                 }
 
                 if (x_pos_given && (c = parse_find_node("y", n->children))) {
-                    str *s = parse_string(doc, c);
+                    gchar *s = parse_string(doc, c);
                     if (!strcmp(s, "center")) {
                         settings->center_y = TRUE;
                         settings->pos_given = TRUE;
@@ -166,7 +182,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                 settings->focus = parse_bool(doc, n);
 
             if ((n = parse_find_node("desktop", app->children))) {
-                str *s = parse_string(doc, n);
+                gchar *s = parse_string(doc, n);
                 if (!strcmp(s, "all"))
                     settings->desktop = DESKTOP_ALL;
                 else
@@ -178,7 +194,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                                                       * desktops */
 
             if ((n = parse_find_node("head", app->children))) {
-                str *s = parse_string(doc, n);
+                gchar *s = parse_string(doc, n);
                 if (!strcmp(s, "mouse"))
                     settings->head = -1;
                 else
@@ -188,7 +204,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
 
             settings->layer = -2;
             if ((n = parse_find_node("layer", app->children))) {
-                str *s = parse_string(doc, n);
+                gchar *s = parse_string(doc, n);
                 if (!strcmp(s, "above"))
                     settings->layer = 1;
                 else if (!strcmp(s, "below"))
@@ -217,7 +233,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
             settings->max_horz = -1;
             settings->max_vert = -1;
             if ((n = parse_find_node("maximized", app->children))) {
-                str *s = parse_string(doc, n);
+                gchar *s = parse_string(doc, n);
                 if (!strcmp(s, "horizontal")) {
                     settings->max_horz = TRUE;
                     settings->max_vert = FALSE;
@@ -415,6 +431,8 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         g_free(config_title_layout);
         config_title_layout = parse_string(doc, n);
     }
+    if ((n = parse_find_node("titleNumber", node)))
+        config_theme_hidedisabled = 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)))
@@ -581,6 +599,8 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr 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("desktopMenuIcons", node)))
@@ -722,6 +742,7 @@ void config_startup(ObParseInst *i)
     config_theme = NULL;
 
     config_title_layout = g_strdup("NLIMC");
+    config_title_number = TRUE;
     config_theme_keepborder = TRUE;
     config_theme_hidedisabled = FALSE;
 
@@ -778,6 +799,7 @@ void config_startup(ObParseInst *i)
     config_menu_warppointer = TRUE;
     config_menu_xorstyle = TRUE;
     config_menu_hide_delay = 250;
+    config_menu_middle = FALSE;
     config_submenu_show_delay = 0;
     config_menu_client_list_icons = TRUE;
     config_menu_files = NULL;
@@ -809,6 +831,7 @@ void config_shutdown()
         ObAppSettings *itd = (ObAppSettings *)it->data;
         g_free(itd->name);
         g_free(itd->role);
+        g_free(itd->class);
         g_free(it->data);
     }
     g_slist_free(config_per_app_settings);
This page took 0.03181 seconds and 4 git commands to generate.