[PATCH] Add a ignoretags rule

This commit is contained in:
Julien Pivotto 2011-01-03 21:49:25 +01:00
parent 47a68568fe
commit abf71d99b9
4 changed files with 15 additions and 9 deletions

View File

@ -1081,6 +1081,9 @@ client_set_rules(Client *c)
if(conf.rule[i].free) if(conf.rule[i].free)
c->flags |= FreeFlag; c->flags |= FreeFlag;
if(conf.rule[i].ignoretags)
c->tag = MAXTAG + 1;
if(conf.rule[i].max) if(conf.rule[i].max)
{ {
client_maximize(c); client_maximize(c);
@ -1093,7 +1096,8 @@ client_set_rules(Client *c)
client_focus(NULL); client_focus(NULL);
} }
tags[c->screen][c->tag].layout.func(c->screen); if(! conf.rule[i].ignoretags)
tags[c->screen][c->tag].layout.func(c->screen);
} }
} }
} }

View File

@ -623,13 +623,14 @@ conf_rule_section(void)
for(i = 0; i < conf.nrule; ++i) for(i = 0; i < conf.nrule; ++i)
{ {
conf.rule[i].class = fetch_opt_first(rule[i], "", "class").str; conf.rule[i].class = fetch_opt_first(rule[i], "", "class").str;
conf.rule[i].instance = fetch_opt_first(rule[i], "", "instance").str; conf.rule[i].instance = fetch_opt_first(rule[i], "", "instance").str;
conf.rule[i].role = fetch_opt_first(rule[i], "", "role").str; conf.rule[i].role = fetch_opt_first(rule[i], "", "role").str;
conf.rule[i].screen = fetch_opt_first(rule[i], "-1", "screen").num; conf.rule[i].screen = fetch_opt_first(rule[i], "-1", "screen").num;
conf.rule[i].tag = fetch_opt_first(rule[i], "-1", "tag").num; conf.rule[i].tag = fetch_opt_first(rule[i], "-1", "tag").num;
conf.rule[i].free = fetch_opt_first(rule[i], "false", "free").bool; conf.rule[i].free = fetch_opt_first(rule[i], "false", "free").bool;
conf.rule[i].max = fetch_opt_first(rule[i], "false", "max").bool; conf.rule[i].max = fetch_opt_first(rule[i], "false", "max").bool;
conf.rule[i].ignoretags = fetch_opt_first(rule[i], "false", "ignoretags").bool;
} }
free(rule); free(rule);

View File

@ -231,7 +231,7 @@ infobar_draw_taglist(int sc)
is_occupied[i] = False; is_occupied[i] = False;
for(c = clients; c; c = c->next) for(c = clients; c; c = c->next)
if(c->screen == sc) if(c->screen == sc && c->tag != MAXTAG + 1)
is_occupied[c->tag] = True; is_occupied[c->tag] = True;
for(i = 1, x = 0; i < conf.ntag[sc] + 1; ++i) for(i = 1, x = 0; i < conf.ntag[sc] + 1; ++i)

View File

@ -363,6 +363,7 @@ typedef struct
int tag; int tag;
Bool free; Bool free;
Bool max; Bool max;
Bool ignoretags;
} Rule; } Rule;
/* Configuration structure */ /* Configuration structure */