Tie group number and name together during config.

This commit is contained in:
okan 2019-03-01 14:32:01 +00:00
parent ae231f67d0
commit 9d25218458
4 changed files with 32 additions and 13 deletions

View File

@ -447,7 +447,7 @@ void group_hide(struct group_ctx *);
void group_hidetoggle(struct screen_ctx *, int); void group_hidetoggle(struct screen_ctx *, int);
int group_holds_only_hidden(struct group_ctx *); int group_holds_only_hidden(struct group_ctx *);
int group_holds_only_sticky(struct group_ctx *); int group_holds_only_sticky(struct group_ctx *);
void group_init(struct screen_ctx *, int); void group_init(struct screen_ctx *, int, const char *);
void group_movetogroup(struct client_ctx *, int); void group_movetogroup(struct client_ctx *, int);
void group_only(struct screen_ctx *, int); void group_only(struct screen_ctx *, int);
void group_close(struct screen_ctx *, int); void group_close(struct screen_ctx *, int);
@ -555,6 +555,7 @@ void conf_grab_mouse(Window);
void conf_init(struct conf *); void conf_init(struct conf *);
void conf_ignore(struct conf *, const char *); void conf_ignore(struct conf *, const char *);
void conf_screen(struct screen_ctx *); void conf_screen(struct screen_ctx *);
void conf_group(struct screen_ctx *);
void xev_process(void); void xev_process(void);

28
conf.c
View File

@ -36,6 +36,21 @@ static const char *conf_bind_getmask(const char *, unsigned int *);
static void conf_unbind_key(struct conf *, struct bind_ctx *); static void conf_unbind_key(struct conf *, struct bind_ctx *);
static void conf_unbind_mouse(struct conf *, struct bind_ctx *); static void conf_unbind_mouse(struct conf *, struct bind_ctx *);
static const struct {
int num;
const char *name;
} group_binds[] = {
{ 0, "nogroup" },
{ 1, "one" },
{ 2, "two" },
{ 3, "three" },
{ 4, "four" },
{ 5, "five" },
{ 6, "six" },
{ 7, "seven" },
{ 8, "eight" },
{ 9, "nine" },
};
static int cursor_binds[] = { static int cursor_binds[] = {
XC_left_ptr, /* CF_NORMAL */ XC_left_ptr, /* CF_NORMAL */
XC_fleur, /* CF_MOVE */ XC_fleur, /* CF_MOVE */
@ -266,7 +281,7 @@ conf_init(struct conf *c)
c->bwidth = 1; c->bwidth = 1;
c->mamount = 1; c->mamount = 1;
c->snapdist = 0; c->snapdist = 0;
c->ngroups = 10; c->ngroups = 0;
c->nameqlen = 5; c->nameqlen = 5;
TAILQ_INIT(&c->ignoreq); TAILQ_INIT(&c->ignoreq);
@ -502,6 +517,17 @@ conf_screen(struct screen_ctx *sc)
conf_grab_kbd(sc->rootwin); conf_grab_kbd(sc->rootwin);
} }
void
conf_group(struct screen_ctx *sc)
{
unsigned int i;
for (i = 0; i < nitems(group_binds); i++) {
group_init(sc, group_binds[i].num, group_binds[i].name);
Conf.ngroups++;
}
}
static const char * static const char *
conf_bind_getmask(const char *name, unsigned int *mask) conf_bind_getmask(const char *name, unsigned int *mask)
{ {

View File

@ -37,11 +37,6 @@ static struct group_ctx *group_prev(struct group_ctx *);
static void group_restack(struct group_ctx *); static void group_restack(struct group_ctx *);
static void group_setactive(struct group_ctx *); static void group_setactive(struct group_ctx *);
const char *num_to_name[] = {
"nogroup", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine"
};
void void
group_assign(struct group_ctx *gc, struct client_ctx *cc) group_assign(struct group_ctx *gc, struct client_ctx *cc)
{ {
@ -124,13 +119,13 @@ group_restack(struct group_ctx *gc)
} }
void void
group_init(struct screen_ctx *sc, int num) group_init(struct screen_ctx *sc, int num, const char *name)
{ {
struct group_ctx *gc; struct group_ctx *gc;
gc = xmalloc(sizeof(*gc)); gc = xmalloc(sizeof(*gc));
gc->sc = sc; gc->sc = sc;
gc->name = xstrdup(num_to_name[num]); gc->name = xstrdup(name);
gc->num = num; gc->num = num;
TAILQ_INIT(&gc->clientq); TAILQ_INIT(&gc->clientq);

View File

@ -40,7 +40,6 @@ screen_init(int which)
Window *wins, w0, w1, active = None; Window *wins, w0, w1, active = None;
XSetWindowAttributes rootattr; XSetWindowAttributes rootattr;
unsigned int nwins, w; unsigned int nwins, w;
int i;
sc = xmalloc(sizeof(*sc)); sc = xmalloc(sizeof(*sc));
@ -61,9 +60,7 @@ screen_init(int which)
xu_ewmh_net_supported_wm_check(sc); xu_ewmh_net_supported_wm_check(sc);
screen_update_geometry(sc); screen_update_geometry(sc);
conf_group(sc);
for (i = 0; i < Conf.ngroups; i++)
group_init(sc, i);
xu_ewmh_net_desktop_names(sc); xu_ewmh_net_desktop_names(sc);
xu_ewmh_net_wm_desktop_viewport(sc); xu_ewmh_net_wm_desktop_viewport(sc);