Add conf part of rules
This commit is contained in:
parent
846a117352
commit
96c03505ca
45
src/config.c
45
src/config.c
@ -143,6 +143,50 @@ config_tag(void)
|
||||
free(ks);
|
||||
}
|
||||
|
||||
static void
|
||||
config_rule(void)
|
||||
{
|
||||
int i, n;
|
||||
struct conf_sec *sec, **ks;
|
||||
struct rule *r;
|
||||
struct theme *t;
|
||||
|
||||
/* [rules] */
|
||||
sec = fetch_section_first(NULL, "rules");
|
||||
ks = fetch_section(sec, "rule");
|
||||
n = fetch_section_count(ks);
|
||||
|
||||
SLIST_INIT(&W->h.rule);
|
||||
|
||||
/* [rule] */
|
||||
for(i = 0; i < n; ++i)
|
||||
{
|
||||
r = (struct rule*)xcalloc(1, sizeof(struct rule));
|
||||
|
||||
r->class = xstrdup(fetch_opt_first(ks[i], "", "class").str);
|
||||
r->instance = xstrdup(fetch_opt_first(ks[i], "", "instance").str);
|
||||
r->role = xstrdup(fetch_opt_first(ks[i], "", "role").str);
|
||||
r->name = xstrdup(fetch_opt_first(ks[i], "", "name").str);
|
||||
r->screen = fetch_opt_first(ks[i], "-1", "screen").num;
|
||||
r->tag = fetch_opt_first(ks[i], "-1", "tag").num;
|
||||
|
||||
FLAGAPPLY(r->flags, fetch_opt_first(ks[i], "false", "free").boolean, RULE_FREE);
|
||||
FLAGAPPLY(r->flags, fetch_opt_first(ks[i], "false", "max").boolean, RULE_MAX);
|
||||
FLAGAPPLY(r->flags, fetch_opt_first(ks[i], "false", "ignore_tag").boolean, RULE_IGNORE_TAG);
|
||||
|
||||
SLIST_FOREACH(t, &W->h.theme, next)
|
||||
if(!strcmp(fetch_opt_first(ks[i], "", "theme").str, t->name))
|
||||
{
|
||||
r->theme = t;
|
||||
break;
|
||||
}
|
||||
|
||||
SLIST_INSERT_HEAD(&W->h.rule, r, next);
|
||||
}
|
||||
|
||||
free(ks);
|
||||
}
|
||||
|
||||
static void
|
||||
config_keybind(void)
|
||||
{
|
||||
@ -210,6 +254,7 @@ config_init(void)
|
||||
config_keybind();
|
||||
config_tag();
|
||||
config_bars();
|
||||
config_rule();
|
||||
|
||||
free(path);
|
||||
free_conf();
|
||||
|
||||
13
src/util.h
13
src/util.h
@ -25,12 +25,13 @@
|
||||
X##t##Window(W->dpy, w); \
|
||||
} while( /* CONSTCOND */ 0);
|
||||
|
||||
#define ATOM(a) XInternAtom(W->dpy, (a), False)
|
||||
#define LEN(x) (sizeof(x) / sizeof(*x))
|
||||
#define FLAGINT(i) (1 << i)
|
||||
#define ATOI(s) strtol(s, NULL, 10)
|
||||
#define ABS(j) (j < 0 ? -j : j)
|
||||
#define INAREA(i, j, a) ((i) >= (a).x && (i) <= (a).x + (a).w && (j) >= (a).y && (j) <= (a).y + (a).h)
|
||||
#define ATOM(a) XInternAtom(W->dpy, (a), False)
|
||||
#define LEN(x) (sizeof(x) / sizeof(*x))
|
||||
#define FLAGINT(i) (1 << i)
|
||||
#define FLAGAPPLY(f, b, m) (f |= (b ? m : 0))
|
||||
#define ATOI(s) strtol(s, NULL, 10)
|
||||
#define ABS(j) (j < 0 ? -j : j)
|
||||
#define INAREA(i, j, a) ((i) >= (a).x && (i) <= (a).x + (a).w && (j) >= (a).y && (j) <= (a).y + (a).h)
|
||||
|
||||
/*
|
||||
* "#RRGGBB" -> 0xRRGGBB
|
||||
|
||||
13
src/wmfs.c
13
src/wmfs.c
@ -182,7 +182,6 @@ static void
|
||||
wmfs_scan(void)
|
||||
{
|
||||
struct geo g;
|
||||
struct tag *t;
|
||||
struct client *c;
|
||||
int i, n, rf;
|
||||
int tag = -1, screen = -1, flags = -1;
|
||||
@ -328,6 +327,7 @@ void
|
||||
wmfs_quit(void)
|
||||
{
|
||||
struct keybind *k;
|
||||
struct rule *r;
|
||||
struct theme *t;
|
||||
struct client *c;
|
||||
|
||||
@ -359,6 +359,17 @@ wmfs_quit(void)
|
||||
free(t);
|
||||
}
|
||||
|
||||
while(!SLIST_EMPTY(&W->h.rule))
|
||||
{
|
||||
r = SLIST_FIRST(&W->h.rule);
|
||||
SLIST_REMOVE_HEAD(&W->h.rule, next);
|
||||
free(r->class);
|
||||
free(r->instance);
|
||||
free(r->role);
|
||||
free(r->name);
|
||||
free(r);
|
||||
}
|
||||
|
||||
while(!SLIST_EMPTY(&W->h.keybind))
|
||||
{
|
||||
k = SLIST_FIRST(&W->h.keybind);
|
||||
|
||||
16
src/wmfs.h
16
src/wmfs.h
@ -215,6 +215,21 @@ struct theme
|
||||
SLIST_ENTRY(theme) next;
|
||||
};
|
||||
|
||||
#define RULE_FREE 0x01
|
||||
#define RULE_MAX 0x02
|
||||
#define RULE_IGNORE_TAG 0x04
|
||||
struct rule
|
||||
{
|
||||
struct theme *theme;
|
||||
char *class;
|
||||
char *instance;
|
||||
char *role;
|
||||
char *name;
|
||||
int tag, screen;
|
||||
Flags flags;
|
||||
SLIST_ENTRY(rule) next;
|
||||
};
|
||||
|
||||
struct wmfs
|
||||
{
|
||||
/* X11 stuffs */
|
||||
@ -242,6 +257,7 @@ struct wmfs
|
||||
SLIST_HEAD(, keybind) keybind;
|
||||
SLIST_HEAD(, barwin) barwin;
|
||||
SLIST_HEAD(, theme) theme;
|
||||
SLIST_HEAD(, rule) rule;
|
||||
} h;
|
||||
|
||||
/*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user