@ -1,6 +1,5 @@
/* See LICENSE file for copyright and license details. */
# include "dwm.h"
# include <stdio.h>
# include <stdlib.h>
unsigned int blw = 0 ;
@ -14,24 +13,6 @@ LAYOUTS
/* extern */
void
floating ( const char * arg ) {
Client * c ;
if ( lt - > arrange ! = floating )
return ;
for ( c = clients ; c ; c = c - > next )
if ( isvisible ( c ) ) {
unban ( c ) ;
resize ( c , c - > x , c - > y , c - > w , c - > h , True ) ;
}
else
ban ( c ) ;
focus ( NULL ) ;
restack ( ) ;
}
void
focusclient ( const char * arg ) {
Client * c ;
@ -120,70 +101,11 @@ setlayout(const char *arg) {
lt = & layout [ i ] ;
}
if ( sel )
lt - > arrange ( NULL ) ;
lt - > arrange ( ) ;
else
drawstatus ( ) ;
}
void
tile ( const char * arg ) {
static double master = MASTER ;
double delta ;
unsigned int i , n , nx , ny , nw , nh , mw , th ;
Client * c ;
if ( lt - > arrange ! = tile )
return ;
/* arg handling, manipulate master */
if ( arg & & ( 1 = = sscanf ( arg , " %lf " , & delta ) ) ) {
if ( delta + master > 0.1 & & delta + master < 0.9 )
master + = delta ;
}
for ( n = 0 , c = nexttiled ( clients ) ; c ; c = nexttiled ( c - > next ) )
n + + ;
/* window geoms */
mw = ( n = = 1 ) ? waw : master * waw ;
th = ( n > 1 ) ? wah / ( n - 1 ) : 0 ;
if ( n > 1 & & th < bh )
th = wah ;
nx = wax ;
ny = way ;
for ( i = 0 , c = clients ; c ; c = c - > next )
if ( isvisible ( c ) ) {
unban ( c ) ;
if ( c - > isfloating )
continue ;
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 + + ;
}
else
ban ( c ) ;
focus ( NULL ) ;
restack ( ) ;
}
void
togglebar ( const char * arg ) {
if ( bpos = = BarOff )
@ -191,39 +113,5 @@ togglebar(const char *arg) {
else
bpos = BarOff ;
updatebarpos ( ) ;
lt - > arrange ( NULL ) ;
}
void
togglemax ( const char * arg ) {
XEvent ev ;
if ( ! sel | | ( lt - > arrange ! = floating & & ! sel - > isfloating ) | | sel - > isfixed )
return ;
if ( ( sel - > ismax = ! sel - > ismax ) ) {
sel - > rx = sel - > x ;
sel - > ry = sel - > y ;
sel - > rw = sel - > w ;
sel - > rh = sel - > h ;
resize ( sel , wax , way , waw - 2 * sel - > border , wah - 2 * sel - > border , True ) ;
}
else
resize ( sel , sel - > rx , sel - > ry , sel - > rw , sel - > rh , True ) ;
drawstatus ( ) ;
while ( XCheckMaskEvent ( dpy , EnterWindowMask , & ev ) ) ;
}
void
zoom ( const char * arg ) {
Client * c ;
if ( ! sel | | lt - > arrange = = floating | | sel - > isfloating )
return ;
if ( ( c = sel ) = = nexttiled ( clients ) )
if ( ! ( c = nexttiled ( c - > next ) ) )
return ;
detach ( c ) ;
attach ( c ) ;
focus ( c ) ;
lt - > arrange ( NULL ) ;
lt - > arrange ( ) ;
}