defaultlayoutpermonitor.diff (1687B)
1 diff --git a/config.def.h b/config.def.h 2 index a2ac963..7c87de8 100644 3 --- a/config.def.h 4 +++ b/config.def.h 5 @@ -37,6 +37,11 @@ static const int nmaster = 1; /* number of clients in master area */ 6 static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ 7 static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ 8 9 +static const int lpm[] = { 10 + /* Index of preferred layout], if LENGTH(lpm)<#monitors -> default layout */ 11 + 0, 1 12 +}; 13 + 14 static const Layout layouts[] = { 15 /* symbol arrange function */ 16 { "[]=", tile }, /* first entry is default */ 17 diff --git a/dwm.c b/dwm.c 18 index a96f33c..64cec29 100644 19 --- a/dwm.c 20 +++ b/dwm.c 21 @@ -142,6 +142,7 @@ typedef struct { 22 } Rule; 23 24 /* function declarations */ 25 +static void applydefaultlayouts(); 26 static void applyrules(Client *c); 27 static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); 28 static void arrange(Monitor *m); 29 @@ -276,6 +277,21 @@ static Window root, wmcheckwin; 30 struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; 31 32 /* function implementations */ 33 +void 34 +applydefaultlayouts() 35 +{ 36 + Monitor *m; 37 + int i = 0; 38 + for (m = mons; m; m = m->next) { 39 + if (i < LENGTH(lpm)) { 40 + m->lt[0] = &layouts[lpm[i]]; 41 + m->lt[1] = &layouts[(lpm[i] + 1)/ % LENGTH(layouts)]; 42 + strncpy(m->ltsymbol, layouts[i].symbol, sizeof m->ltsymbol); 43 + } 44 + i++; 45 + } 46 +} 47 + 48 void 49 applyrules(Client *c) 50 { 51 @@ -1911,6 +1927,7 @@ updategeom(void) 52 cleanupmon(m); 53 } 54 } 55 + applydefaultlayouts(); 56 free(unique); 57 } else 58 #endif /* XINERAMA */