diff --git a/awesomerc b/awesomerc index 06d2f5172..483aef6c5 100644 --- a/awesomerc +++ b/awesomerc @@ -34,6 +34,7 @@ screen 0 } tag 2 { + nmaster = 2 layout = "tile" } tag 3 @@ -70,7 +71,6 @@ screen 0 layouts { - nmaster = 1 ncol = 1 layout tile { diff --git a/config.c b/config.c index 2ed61e5b5..0a5d66a54 100644 --- a/config.c +++ b/config.c @@ -176,6 +176,7 @@ parse_config(const char *confpatharg, awesome_config *awesomeconf) { CFG_STR((char *) "layout", (char *) "tile", CFGF_NONE), CFG_FLOAT((char *) "mwfact", 0.5, CFGF_NONE), + CFG_INT((char *) "nmaster", 1, CFGF_NONE), CFG_END() }; static cfg_opt_t tags_opts[] = @@ -191,7 +192,6 @@ parse_config(const char *confpatharg, awesome_config *awesomeconf) static cfg_opt_t layouts_opts[] = { CFG_SEC((char *) "layout", layout_opts, CFGF_TITLE | CFGF_MULTI), - CFG_INT((char *) "nmaster", 1, CFGF_NONE), CFG_INT((char *) "ncol", 1, CFGF_NONE), CFG_END() }; @@ -337,7 +337,6 @@ parse_config(const char *confpatharg, awesome_config *awesomeconf) awesomeconf->layouts[i].symbol = a_strdup(cfg_getstr(cfgsectmp, "symbol")); } - awesomeconf->nmaster = cfg_getint(cfg_layouts, "nmaster"); awesomeconf->ncol = cfg_getint(cfg_layouts, "ncol"); if(!awesomeconf->nlayouts) @@ -377,6 +376,7 @@ parse_config(const char *confpatharg, awesome_config *awesomeconf) k = 0; awesomeconf->tags[i].layout = &awesomeconf->layouts[k]; awesomeconf->tags[i].mwfact = cfg_getfloat(cfgsectmp, "mwfact"); + awesomeconf->tags[i].nmaster = cfg_getint(cfgsectmp, "nmaster"); } diff --git a/config.h b/config.h index 734a8cd05..6311fedf9 100644 --- a/config.h +++ b/config.h @@ -134,6 +134,8 @@ typedef struct Client *client_sel; /** Master width factor */ double mwfact; + /** Number of master windows */ + int nmaster; } Tag; /** Main configuration structure */ @@ -169,8 +171,6 @@ struct awesome_config int borderpx; /** Number of pixels to snap windows */ int snap; - /** Number of master windows */ - int nmaster; /** Number of columns in tile layout */ int ncol; /** Transparency of unfocused clients */ diff --git a/layouts/tile.c b/layouts/tile.c index 3a646a5c6..4698ce8c8 100644 --- a/layouts/tile.c +++ b/layouts/tile.c @@ -32,13 +32,14 @@ void uicb_setnmaster(awesome_config *awesomeconf, const char * arg) { - Layout *curlay = get_current_layout(awesomeconf->tags, awesomeconf->ntags); + Tag *curtag = get_current_tag(awesomeconf->tags, awesomeconf->ntags); + Layout *curlay = curtag->layout; if(!arg || (curlay->arrange != layout_tile && curlay->arrange != layout_tileleft)) return; - if((awesomeconf->nmaster = (int) compute_new_value_from_arg(arg, (double) awesomeconf->nmaster)) < 0) - awesomeconf->nmaster = 0; + if((curtag->nmaster = (int) compute_new_value_from_arg(arg, (double) curtag->nmaster)) < 0) + curtag->nmaster = 0; arrange(awesomeconf); } @@ -113,14 +114,14 @@ _tile(awesome_config *awesomeconf, const Bool right) wax = screens_info[awesomeconf->screen].x_org; way = screens_info[awesomeconf->screen].y_org; - masterwin = MIN(n, awesomeconf->nmaster); + masterwin = MIN(n, curtag->nmaster); otherwin = n - masterwin; if(otherwin < 0) otherwin = 0; - if(awesomeconf->nmaster) + if(curtag->nmaster) { mh = masterwin ? wah / masterwin : waw; mw = otherwin ? waw * curtag->mwfact : waw; @@ -136,7 +137,7 @@ _tile(awesome_config *awesomeconf, const Bool right) continue; c->ismax = False; - if(i < awesomeconf->nmaster) + if(i < curtag->nmaster) { /* master */ ny = way + i * mh; nx = wax + (right ? 0 : waw - mw); @@ -147,7 +148,7 @@ _tile(awesome_config *awesomeconf, const Bool right) if(real_ncol) win_by_col = otherwin / real_ncol; - if((i - awesomeconf->nmaster) && (i - awesomeconf->nmaster) % win_by_col == 0 && current_col < real_ncol - 1) + if((i - curtag->nmaster) && (i - curtag->nmaster) % win_by_col == 0 && current_col < real_ncol - 1) current_col++; if(current_col == real_ncol - 1) @@ -160,10 +161,10 @@ _tile(awesome_config *awesomeconf, const Bool right) nw = (waw - mw) / real_ncol - 2 * c->border; - if(i == awesomeconf->nmaster || otherwin <= real_ncol || (i - awesomeconf->nmaster) % win_by_col == 0) + if(i == curtag->nmaster || otherwin <= real_ncol || (i - curtag->nmaster) % win_by_col == 0) ny = way; else - ny = way + ((i - awesomeconf->nmaster) % win_by_col) * (nh + 2 * c->border); + ny = way + ((i - curtag->nmaster) % win_by_col) * (nh + 2 * c->border); nx = wax + current_col * (nw + 2 * c->border) + (right ? mw : 0); client_resize(c, nx, ny, nw, nh, awesomeconf, awesomeconf->resize_hints, False);