mirror of
https://github.com/mintycube/dwm.git
synced 2024-10-22 14:05:45 +02:00
Adding fibonacci layout
This commit is contained in:
parent
7da1b17169
commit
cccb8fcecb
@ -11,6 +11,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
||||
|
||||
### Changelog:
|
||||
|
||||
2019-09-09 - Added deck, fibonacci (dwindle and spiral) layouts
|
||||
|
||||
2019-09-08 - Added cfacts and vanitygaps patches, added bstack and bstackhoriz layouts
|
||||
|
||||
2019-09-07 - Added cyclelayouts, resizecorners, rotatestack, savefloats, statuspadding, switchtag, center and windowrolerule patches
|
||||
@ -114,4 +116,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
||||
- bottomstack horizontal layout
|
||||
|
||||
- [deck](https://dwm.suckless.org/patches/deck/)
|
||||
- deck layout
|
||||
- deck layout
|
||||
|
||||
- [fibonacci](https://dwm.suckless.org/patches/fibonacci/)
|
||||
- fibonacci (dwindle and spiral) layouts
|
@ -111,6 +111,12 @@ static const Layout layouts[] = {
|
||||
#if DECK_LAYOUT
|
||||
{ "[D]", deck },
|
||||
#endif // DECK_LAYOUT
|
||||
#if FIBONACCI_SPIRAL_LAYOUT
|
||||
{ "(@)", spiral },
|
||||
#endif // FIBONACCI_SPIRAL_LAYOUT
|
||||
#if FIBONACCI_DWINDLE_LAYOUT
|
||||
{ "[\\]", dwindle },
|
||||
#endif // FIBONACCI_DWINDLE_LAYOUT
|
||||
#if CYCLELAYOUTS_PATCH
|
||||
{ NULL, NULL },
|
||||
#endif // CYCLELAYOUTS_PATCH
|
||||
|
144
patch/fibonacci.c
Normal file
144
patch/fibonacci.c
Normal file
@ -0,0 +1,144 @@
|
||||
#if VANITYGAPS_PATCH
|
||||
static void
|
||||
fibonacci(Monitor *m, int s)
|
||||
{
|
||||
unsigned int i, n;
|
||||
int nx, ny, nw, nh;
|
||||
int oh, ov, ih, iv;
|
||||
#if CFACTS_PATCH
|
||||
float mfacts, sfacts;
|
||||
#endif // CFACTS_PATCH
|
||||
Client *c;
|
||||
|
||||
#if CFACTS_PATCH
|
||||
getgaps(m, &oh, &ov, &ih, &iv, &n, &mfacts, &sfacts);
|
||||
#else
|
||||
getgaps(m, &oh, &ov, &ih, &iv, &n);
|
||||
#endif // CFACTS_PATCH
|
||||
|
||||
if (n == 0)
|
||||
return;
|
||||
|
||||
nx = m->wx + ov;
|
||||
ny = oh;
|
||||
nw = m->ww - 2*ov;
|
||||
nh = m->wh - 2*oh;
|
||||
|
||||
for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
|
||||
if ((i % 2 && nh / 2 > 2*c->bw)
|
||||
|| (!(i % 2) && nw / 2 > 2*c->bw)) {
|
||||
if (i < n - 1) {
|
||||
if (i % 2)
|
||||
nh = (nh - ih) / 2;
|
||||
else
|
||||
nw = (nw - iv) / 2;
|
||||
|
||||
if ((i % 4) == 2 && !s)
|
||||
nx += nw + iv;
|
||||
else if ((i % 4) == 3 && !s)
|
||||
ny += nh + ih;
|
||||
}
|
||||
if ((i % 4) == 0) {
|
||||
if (s)
|
||||
ny += nh + ih;
|
||||
else
|
||||
ny -= nh + ih;
|
||||
}
|
||||
else if ((i % 4) == 1)
|
||||
nx += nw + iv;
|
||||
else if ((i % 4) == 2)
|
||||
ny += nh + ih;
|
||||
else if ((i % 4) == 3) {
|
||||
if (s)
|
||||
nx += nw + iv;
|
||||
else
|
||||
nx -= nw + iv;
|
||||
}
|
||||
if (i == 0) {
|
||||
if (n != 1)
|
||||
nw = (m->ww - 2*ov - iv) * m->mfact;
|
||||
ny = m->wy + oh;
|
||||
}
|
||||
else if (i == 1)
|
||||
nw = m->ww - nw - iv - 2*ov;
|
||||
i++;
|
||||
}
|
||||
|
||||
resize(c, nx, ny, nw - (2*c->bw), nh - (2*c->bw), False);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void
|
||||
fibonacci(Monitor *mon, int s)
|
||||
{
|
||||
unsigned int i, n, nx, ny, nw, nh;
|
||||
Client *c;
|
||||
|
||||
for (n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++);
|
||||
if (n == 0)
|
||||
return;
|
||||
|
||||
nx = mon->wx;
|
||||
ny = 0;
|
||||
nw = mon->ww;
|
||||
nh = mon->wh;
|
||||
|
||||
for (i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
|
||||
if ((i % 2 && nh / 2 > 2 * c->bw)
|
||||
|| (!(i % 2) && nw / 2 > 2 * c->bw)) {
|
||||
if (i < n - 1) {
|
||||
if (i % 2)
|
||||
nh /= 2;
|
||||
else
|
||||
nw /= 2;
|
||||
if ((i % 4) == 2 && !s)
|
||||
nx += nw;
|
||||
else if ((i % 4) == 3 && !s)
|
||||
ny += nh;
|
||||
}
|
||||
if ((i % 4) == 0) {
|
||||
if(s)
|
||||
ny += nh;
|
||||
else
|
||||
ny -= nh;
|
||||
}
|
||||
else if ((i % 4) == 1)
|
||||
nx += nw;
|
||||
else if ((i % 4) == 2)
|
||||
ny += nh;
|
||||
else if ((i % 4) == 3) {
|
||||
if (s)
|
||||
nx += nw;
|
||||
else
|
||||
nx -= nw;
|
||||
}
|
||||
if (i == 0)
|
||||
{
|
||||
if (n != 1)
|
||||
nw = mon->ww * mon->mfact;
|
||||
ny = mon->wy;
|
||||
}
|
||||
else if (i == 1)
|
||||
nw = mon->ww - nw;
|
||||
i++;
|
||||
}
|
||||
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if FIBONACCI_DWINDLE_LAYOUT
|
||||
static void
|
||||
dwindle(Monitor *m)
|
||||
{
|
||||
fibonacci(m, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if FIBONACCI_SPIRAL_LAYOUT
|
||||
static void
|
||||
spiral(Monitor *m)
|
||||
{
|
||||
fibonacci(m, 0);
|
||||
}
|
||||
#endif
|
3
patch/fibonacci.h
Normal file
3
patch/fibonacci.h
Normal file
@ -0,0 +1,3 @@
|
||||
static void dwindle(Monitor *m);
|
||||
static void fibonacci(Monitor *m, int s);
|
||||
static void spiral(Monitor *m);
|
@ -66,6 +66,10 @@
|
||||
#include "deck.c"
|
||||
#endif
|
||||
|
||||
#if FIBONACCI_DWINDLE_LAYOUT || FIBONACCI_SPIRAL_LAYOUT
|
||||
#include "fibonacci.c"
|
||||
#endif
|
||||
|
||||
#if MONOCLE_LAYOUT
|
||||
#include "monocle.c"
|
||||
#endif
|
||||
|
@ -62,6 +62,10 @@
|
||||
#include "deck.h"
|
||||
#endif
|
||||
|
||||
#if FIBONACCI_DWINDLE_LAYOUT || FIBONACCI_SPIRAL_LAYOUT
|
||||
#include "fibonacci.h"
|
||||
#endif
|
||||
|
||||
#if MONOCLE_LAYOUT
|
||||
#include "monocle.h"
|
||||
#endif
|
||||
|
12
patches.h
12
patches.h
@ -200,7 +200,17 @@
|
||||
/* Deck layout.
|
||||
* https://dwm.suckless.org/patches/deck/
|
||||
*/
|
||||
#define DECK_LAYOUT 1
|
||||
#define DECK_LAYOUT 0
|
||||
|
||||
/* Fibonacci dwindle layout.
|
||||
* https://dwm.suckless.org/patches/fibonacci/
|
||||
*/
|
||||
#define FIBONACCI_DWINDLE_LAYOUT 0
|
||||
|
||||
/* Fibonacci spiral layout.
|
||||
* https://dwm.suckless.org/patches/fibonacci/
|
||||
*/
|
||||
#define FIBONACCI_SPIRAL_LAYOUT 0
|
||||
|
||||
/* The default tile layout.
|
||||
* This can be optionally disabled in favour of other layouts.
|
||||
|
Loading…
Reference in New Issue
Block a user