all repos — openbox @ e72a1232fa73450c4bfefef5657971ecbacb8f70

openbox fork - make it a bit more like ryudo

if this works i will be a bit amazed, add class matching, and allow to match either name or class or both
Mikael Magnusson mikachu@comhem.se
commit

e72a1232fa73450c4bfefef5657971ecbacb8f70

parent

d4b734045463b38ef61f259a14227e0f9768c470

2 files changed, 25 insertions(+), 5 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -213,7 +213,12 @@

while (a) { ObAppSettings *app = (ObAppSettings *) a->data; - if (!strcmp(app->name, client->name)) { + if ( + (app->name && && !app->class && !strcmp(app->name, client->name)) + || (app->class && !app->name && !strcmp(app->class, client->class)) + || (app->class && app->name && !strcmp(app->class, client->class) + && !strcmp(app->name, client->name)) + ) { ob_debug("Window matching: %s\n", app->name); /* Match if no role was specified in the per app setting, or if the string * matches the beginning of the role, since apps like to set the role to
M openbox/config.copenbox/config.c

@@ -115,14 +115,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;

@@ -810,6 +824,7 @@ for (it = config_per_app_settings; it; it = g_slist_next(it)) {

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);