about summary refs log blame commit diff stats
path: root/modal/logic.modal
blob: bdc5c091c7bfd36ff34bdbd0df6d8461e4e7ced4 (plain) (tree)
1
2
3
4
5


                  

               
<> (eq ?x ?x) (#t)
<> (eq ?x ?y) (#f)

.. (eq fox bat)
.. (eq bat bat)
='/acidbong/suckless/dwm/blame/tile.c?h=5.7.2&id=b5eea45a316a897632578a74c909aa336557b1d6'>^
77044e8 ^
2d81b78 ^










f6e41b0 ^
2d81b78 ^





a200c39 ^









2d81b78 ^
a200c39 ^




2d81b78 ^
a200c39 ^




2d81b78 ^





77044e8 ^
2d81b78 ^






77044e8 ^
2d81b78 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79





                                                         
                              



            
                              

                     
                           

                       
                                             
                                                      

                                                                
         
                  










                                                                     
                                           





                                         









                                                                       
                         




                                                                      
                 




                                                 





                       
                                                       






                                             
                  
 
/* See LICENSE file for copyright and license details. */
#include "dwm.h"
#include <stdio.h>

/* static */

static double mwfact = MWFACT;

/* extern */

void
addtomwfact(const char *arg) {
	double delta;

	if(isarrange(tile))
		return;

	/* arg handling, manipulate mwfact */
	if(arg && (1 == sscanf(arg, "%lf", &delta))) {
		if(delta + mwfact > 0.1 && delta + mwfact < 0.9)
			mwfact += delta;
	}
	arrange();
}

void
tile(void) {
	unsigned int i, n, nx, ny, nw, nh, mw, th;
	Client *c;

	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
		n++;

	/* window geoms */
	mw = (n == 1) ? waw : mwfact * waw;
	th = (n > 1) ? wah / (n - 1) : 0;
	if(n > 1 && th < bh)
		th = wah;

	nx = wax;
	ny = way;
	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) {
		c->ismax = False;
		if(i == 0) { /* master */
			nw = mw - 2 * c->border;
			nh = wah - 2 * c->border;
		}
		else {  /* tile window */
			if(i == 1) {
				ny = way;
				nx += mw;
			}
			nw = waw - mw - 2 * c->border;
			if(i + 1 == n) /* remainder */
				nh = (way + wah) - ny - 2 * c->border;
			else
				nh = th - 2 * c->border;
		}
		resize(c, nx, ny, nw, nh, False);
		if(n > 1 && th != wah)
			ny += nh + 2 * c->border;
		i++;
	}
}

void
zoom(const char *arg) {
	Client *c;

	if(!sel || !isarrange(tile) || sel->isfloating)
		return;
	if((c = sel) == nexttiled(clients))
		if(!(c = nexttiled(c->next)))
			return;
	detach(c);
	attach(c);
	focus(c);
	arrange();
}