added smart_master_size patches for deck & tile
This commit is contained in:
parent
7602bce929
commit
e4d85a9895
35
patches/dwm-deck_smart_master_size.diff
Normal file
35
patches/dwm-deck_smart_master_size.diff
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
This patch automatically centers if only one window is open in the deck layout (and that window can't make use of the whole screen)
|
||||||
|
If there are multiple windows and the master window does not take up all it's alloted space, everything will be adjusted so no empty space is created. (only if there is only one master)
|
||||||
|
--- dwm.c 2020-08-24 09:43:01.749752454 +0200
|
||||||
|
+++ dwm.c 2020-08-24 09:43:23.786418316 +0200
|
||||||
|
@@ -673,15 +673,28 @@
|
||||||
|
|
||||||
|
void
|
||||||
|
deck(Monitor *m) {
|
||||||
|
- unsigned int i, n, h, mw, my;
|
||||||
|
+ unsigned int i, n, h, mw, my, altw, nx;
|
||||||
|
Client *c;
|
||||||
|
|
||||||
|
for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
|
||||||
|
if(n == 0)
|
||||||
|
return;
|
||||||
|
-
|
||||||
|
+ if (n == 1){
|
||||||
|
+ c = nexttiled(m->clients);
|
||||||
|
+ altw = WIDTH(c) * m->wh / HEIGHT(c); /*use max window height but preserve aspect ratio */
|
||||||
|
+ if ( c->mina > 0 && altw < c->mon->mw ){
|
||||||
|
+ nx = m->mx + (m->mw - altw ) / 2;
|
||||||
|
+ resize(c, nx , c->y, altw , c->h, 0);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if(n > m->nmaster) {
|
||||||
|
mw = m->nmaster ? m->ww * m->mfact : 0;
|
||||||
|
+ if (m->nmaster == 1){
|
||||||
|
+ c = nexttiled(m->clients);
|
||||||
|
+ altw = WIDTH(c) * m->wh / HEIGHT(c); /*use max window height but preserve aspect ratio */
|
||||||
|
+ mw = c->mina > 0 && altw < mw ? altw : mw;
|
||||||
|
+ }
|
||||||
|
snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster);
|
||||||
|
}
|
||||||
|
else
|
37
patches/dwm-tile_smart_master_size.diff
Normal file
37
patches/dwm-tile_smart_master_size.diff
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
This patch automatically centers if only one window is open in the tile layout (and that window can't make use of the whole screen)
|
||||||
|
If there are multiple windows and the master window does not take up all it's alloted space, everything will be adjusted so no empty space is created. (only if there is only one master)
|
||||||
|
--- dwm.c 2020-08-24 09:43:01.749752454 +0200
|
||||||
|
+++ dwm.c 2020-08-24 09:43:23.786418316 +0200
|
||||||
|
@@ -1750,15 +1763,30 @@
|
||||||
|
void
|
||||||
|
tile(Monitor *m)
|
||||||
|
{
|
||||||
|
- unsigned int i, n, h, mw, my, ty;
|
||||||
|
+ unsigned int i, n, h, mw, my, ty, altw, nx;
|
||||||
|
Client *c;
|
||||||
|
|
||||||
|
for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
|
||||||
|
if (n == 0)
|
||||||
|
return;
|
||||||
|
+ if (n == 1){
|
||||||
|
+ c = nexttiled(m->clients);
|
||||||
|
+ altw = WIDTH(c) * m->wh / HEIGHT(c); /*use max window height but preserve aspect ratio */
|
||||||
|
+ if ( c->mina > 0 && altw < c->mon->mw ){
|
||||||
|
+ nx = m->mx + (m->mw - altw ) / 2;
|
||||||
|
+ resize(c, nx , c->y, altw , c->h, 0);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (n > m->nmaster)
|
||||||
|
+ if (n > m->nmaster){
|
||||||
|
mw = m->nmaster ? m->ww * m->mfact : 0;
|
||||||
|
+ if ( m->nmaster == 1){
|
||||||
|
+ c = nexttiled(m->clients);
|
||||||
|
+ altw = WIDTH(c) * m->wh / HEIGHT(c); /*use max window height but preserve aspect ratio */
|
||||||
|
+ mw = c->mina > 0 && altw < mw ? altw : mw;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
mw = m->ww;
|
||||||
|
for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
|
Loading…
Reference in New Issue
Block a user