author | Stiletto <blasux@blasux.ru> |
Wed, 02 Apr 2014 20:32:11 +0400 | |
changeset 1539 | e2a9bd720b6e |
parent 1530 | 072c62ed10f2 |
child 1540 | e8a43c5bbc46 |
permissions | -rw-r--r-- |
992
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
1 |
/* See LICENSE file for copyright and license details. |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
2 |
* |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
3 |
* dynamic window manager is designed like any other X client as well. It is |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
4 |
* driven through handling X events. In contrast to other X clients, a window |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
5 |
* manager selects for SubstructureRedirectMask on the root window, to receive |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
6 |
* events about window (dis-)appearance. Only one X connection at a time is |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
7 |
* allowed to select for this event mask. |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
8 |
* |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
9 |
* The event handlers of dwm are organized in an array which is accessed |
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
10 |
* whenever a new event has been fetched. This allows event dispatching |
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
11 |
* in O(1) time. |
992
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
12 |
* |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
13 |
* Each child of the root window is called a client, except windows which have |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
14 |
* set the override_redirect flag. Clients are organized in a linked client |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
15 |
* list on each monitor, the focus history is remembered through a stack list |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
16 |
* on each monitor. Each client contains a bit array to indicate the tags of a |
1242
91e8a7fb3b60
updated the initial comment to reflect the use of bit arrays
Anselm R Garbe <garbeam@gmail.com>
parents:
1241
diff
changeset
|
17 |
* client. |
992
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
18 |
* |
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
19 |
* Keys and tagging rules are organized as arrays and defined in config.h. |
992
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
20 |
* |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
21 |
* To understand everything else, start reading main(). |
d9ab31906133
backporting my intro-comment of old dwm.h
Anselm R. Garbe <garbeam@gmail.com>
parents:
991
diff
changeset
|
22 |
*/ |
990 | 23 |
#include <errno.h> |
1343
f4707b7bd3a2
reverted some resize() changes, reverted setlocale removal
Anselm R Garbe <garbeam@gmail.com>
parents:
1342
diff
changeset
|
24 |
#include <locale.h> |
990 | 25 |
#include <stdarg.h> |
1374 | 26 |
#include <signal.h> |
990 | 27 |
#include <stdio.h> |
28 |
#include <stdlib.h> |
|
29 |
#include <string.h> |
|
30 |
#include <unistd.h> |
|
1014 | 31 |
#include <sys/types.h> |
990 | 32 |
#include <sys/wait.h> |
33 |
#include <X11/cursorfont.h> |
|
34 |
#include <X11/keysym.h> |
|
35 |
#include <X11/Xatom.h> |
|
1033 | 36 |
#include <X11/Xlib.h> |
990 | 37 |
#include <X11/Xproto.h> |
38 |
#include <X11/Xutil.h> |
|
1215
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
39 |
#ifdef XINERAMA |
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
40 |
#include <X11/extensions/Xinerama.h> |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
41 |
#endif /* XINERAMA */ |
990 | 42 |
|
43 |
/* macros */ |
|
1311
47b3dbd9a7d3
got rid of compile time xidx configuration, querying mouse pointer instead
Anselm R Garbe <garbeam@gmail.com>
parents:
1310
diff
changeset
|
44 |
#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
45 |
#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
46 |
#define INTERSECT(x,y,w,h,m) (MAX(0, MIN((x)+(w),(m)->wx+(m)->ww) - MAX((x),(m)->wx)) \ |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
47 |
* MAX(0, MIN((y)+(h),(m)->wy+(m)->wh) - MAX((y),(m)->wy))) |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
48 |
#define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags])) |
1399
0decadd79fd5
several fixes through ISVISIBLE change (takes Monitor into account)
Anselm R Garbe <anselm@garbe.us>
parents:
1398
diff
changeset
|
49 |
#define LENGTH(X) (sizeof X / sizeof X[0]) |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
50 |
#define MAX(A, B) ((A) > (B) ? (A) : (B)) |
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
51 |
#define MIN(A, B) ((A) < (B) ? (A) : (B)) |
1311
47b3dbd9a7d3
got rid of compile time xidx configuration, querying mouse pointer instead
Anselm R Garbe <garbeam@gmail.com>
parents:
1310
diff
changeset
|
52 |
#define MOUSEMASK (BUTTONMASK|PointerMotionMask) |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
53 |
#define WIDTH(X) ((X)->w + 2 * (X)->bw) |
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
54 |
#define HEIGHT(X) ((X)->h + 2 * (X)->bw) |
1463
ba3114b785a1
removed int cast in TAGMASK as suggested by nsz
Anselm R Garbe <garbeam@gmail.com>
parents:
1462
diff
changeset
|
55 |
#define TAGMASK ((1 << LENGTH(tags)) - 1) |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
56 |
#define TEXTW(X) (textnw(X, strlen(X)) + dc.font.height) |
1059
98d06be63ce5
moved LENGTH to dwm.c, moved prevtags to dwm.c
arg@suckless.org
parents:
1058
diff
changeset
|
57 |
|
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
58 |
/* enums */ |
1209
c2dc0bd92158
recent changes, introduced togglebar, changed some defines into variable declarations where possible
Anselm R Garbe <garbeam@gmail.com>
parents:
1207
diff
changeset
|
59 |
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ |
c2dc0bd92158
recent changes, introduced togglebar, changed some defines into variable declarations where possible
Anselm R Garbe <garbeam@gmail.com>
parents:
1207
diff
changeset
|
60 |
enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
61 |
enum { NetSupported, NetWMName, NetWMState, |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
62 |
NetWMFullscreen, NetActiveWindow, NetWMWindowType, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
63 |
NetWMWindowTypeDialog, NetLast }; /* EWMH atoms */ |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
64 |
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ |
1295
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
65 |
enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, |
1281
3e478379e74d
minor fixes towards 5.0
Anselm R Garbe <garbeam@gmail.com>
parents:
1280
diff
changeset
|
66 |
ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
67 |
|
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
68 |
typedef union { |
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
69 |
int i; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
70 |
unsigned int ui; |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
71 |
float f; |
1452
769fb14ae867
introducing const where it might make some sense
Anselm R Garbe <anselm@garbe.us>
parents:
1451
diff
changeset
|
72 |
const void *v; |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
73 |
} Arg; |
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
74 |
|
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
75 |
typedef struct { |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
76 |
unsigned int click; |
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
77 |
unsigned int mask; |
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
78 |
unsigned int button; |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
79 |
void (*func)(const Arg *arg); |
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
80 |
const Arg arg; |
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
81 |
} Button; |
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
82 |
|
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
83 |
typedef struct Monitor Monitor; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
84 |
typedef struct Client Client; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
85 |
struct Client { |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
86 |
char name[256]; |
1281
3e478379e74d
minor fixes towards 5.0
Anselm R Garbe <garbeam@gmail.com>
parents:
1280
diff
changeset
|
87 |
float mina, maxa; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
88 |
int x, y, w, h; |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
89 |
int oldx, oldy, oldw, oldh; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
90 |
int basew, baseh, incw, inch, maxw, maxh, minw, minh; |
1229
818892d66dc4
Key.mod is uint, Client.[old]bw is int
Anselm R Garbe <garbeam@gmail.com>
parents:
1228
diff
changeset
|
91 |
int bw, oldbw; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
92 |
unsigned int tags; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
93 |
Bool isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
94 |
Client *next; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
95 |
Client *snext; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
96 |
Monitor *mon; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
97 |
Window win; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
98 |
}; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
99 |
|
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
100 |
typedef struct { |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
101 |
int x, y, w, h; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
102 |
unsigned long norm[ColLast]; |
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
103 |
unsigned long sel[ColLast]; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
104 |
Drawable drawable; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
105 |
GC gc; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
106 |
struct { |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
107 |
int ascent; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
108 |
int descent; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
109 |
int height; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
110 |
XFontSet set; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
111 |
XFontStruct *xfont; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
112 |
} font; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
113 |
} DC; /* draw context */ |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
114 |
|
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
115 |
typedef struct { |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
116 |
unsigned int mod; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
117 |
KeySym keysym; |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
118 |
void (*func)(const Arg *); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
119 |
const Arg arg; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
120 |
} Key; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
121 |
|
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
122 |
typedef struct { |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
123 |
const char *symbol; |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
124 |
void (*arrange)(Monitor *); |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
125 |
} Layout; |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
126 |
|
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
127 |
struct Monitor { |
1496
de4a2998e1f5
use buffer instead of pointer for mon->ltsymbol
Anselm R Garbe <garbeam@gmail.com>
parents:
1495
diff
changeset
|
128 |
char ltsymbol[16]; |
1400
a5312d498a58
some minor fixes regarding the new xinerama support
Anselm R Garbe <anselm@garbe.us>
parents:
1399
diff
changeset
|
129 |
float mfact; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
130 |
int nmaster; |
1458
e30739eebeed
extended rule to apply monitors if set up accordingly
Anselm R Garbe <anselm@garbe.us>
parents:
1457
diff
changeset
|
131 |
int num; |
1454
b55c7bd92fda
removed monsyms, useless
Anselm R Garbe <garbeam@gmail.com>
parents:
1453
diff
changeset
|
132 |
int by; /* bar geometry */ |
1434
b0ac204a2c03
fixed usage of sx, sy, sw, sh
Anselm R Garbe <anselm@garbe.us>
parents:
1433
diff
changeset
|
133 |
int mx, my, mw, mh; /* screen size */ |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
134 |
int wx, wy, ww, wh; /* window area */ |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
135 |
unsigned int seltags; |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
136 |
unsigned int sellt; |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
137 |
unsigned int tagset[2]; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
138 |
Bool showbar; |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
139 |
Bool topbar; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
140 |
Client *clients; |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
141 |
Client *sel; |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
142 |
Client *stack; |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
143 |
Monitor *next; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
144 |
Window barwin; |
1452
769fb14ae867
introducing const where it might make some sense
Anselm R Garbe <anselm@garbe.us>
parents:
1451
diff
changeset
|
145 |
const Layout *lt[2]; |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
146 |
}; |
1397
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
147 |
|
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
148 |
typedef struct { |
1147
def76530f636
some changes towards 4.9
Anselm R Garbe <garbeam@gmail.com>
parents:
1145
diff
changeset
|
149 |
const char *class; |
def76530f636
some changes towards 4.9
Anselm R Garbe <garbeam@gmail.com>
parents:
1145
diff
changeset
|
150 |
const char *instance; |
def76530f636
some changes towards 4.9
Anselm R Garbe <garbeam@gmail.com>
parents:
1145
diff
changeset
|
151 |
const char *title; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
152 |
unsigned int tags; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
153 |
Bool isfloating; |
1458
e30739eebeed
extended rule to apply monitors if set up accordingly
Anselm R Garbe <anselm@garbe.us>
parents:
1457
diff
changeset
|
154 |
int monitor; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
155 |
} Rule; |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
156 |
|
1037 | 157 |
/* function declarations */ |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
158 |
static void applyrules(Client *c); |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
159 |
static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
160 |
static void arrange(Monitor *m); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
161 |
static void arrangemon(Monitor *m); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
162 |
static void attach(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
163 |
static void attachstack(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
164 |
static void buttonpress(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
165 |
static void checkotherwm(void); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
166 |
static void cleanup(void); |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
167 |
static void cleanupmon(Monitor *mon); |
1366
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
168 |
static void clearurgent(Client *c); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
169 |
static void clientmessage(XEvent *e); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
170 |
static void configure(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
171 |
static void configurenotify(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
172 |
static void configurerequest(XEvent *e); |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
173 |
static Monitor *createmon(void); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
174 |
static void destroynotify(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
175 |
static void detach(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
176 |
static void detachstack(Client *c); |
1308 | 177 |
static void die(const char *errstr, ...); |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
178 |
static Monitor *dirtomon(int dir); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
179 |
static void drawbar(Monitor *m); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
180 |
static void drawbars(void); |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
181 |
static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]); |
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
182 |
static void drawtext(const char *text, unsigned long col[ColLast], Bool invert); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
183 |
static void enternotify(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
184 |
static void expose(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
185 |
static void focus(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
186 |
static void focusin(XEvent *e); |
1437 | 187 |
static void focusmon(const Arg *arg); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
188 |
static void focusstack(const Arg *arg); |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
189 |
static unsigned long getcolor(const char *colstr); |
1450 | 190 |
static Bool getrootptr(int *x, int *y); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
191 |
static long getstate(Window w); |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
192 |
static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
193 |
static void grabbuttons(Client *c, Bool focused); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
194 |
static void grabkeys(void); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
195 |
static void incnmaster(const Arg *arg); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
196 |
static void initfont(const char *fontstr); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
197 |
static void keypress(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
198 |
static void killclient(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
199 |
static void manage(Window w, XWindowAttributes *wa); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
200 |
static void mappingnotify(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
201 |
static void maprequest(XEvent *e); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
202 |
static void monocle(Monitor *m); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
203 |
static void motionnotify(XEvent *e); |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
204 |
static void movemouse(const Arg *arg); |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
205 |
static Client *nexttiled(Client *c); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
206 |
static void pop(Client *); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
207 |
static void propertynotify(XEvent *e); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
208 |
static void quit(const Arg *arg); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
209 |
static Monitor *recttomon(int x, int y, int w, int h); |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
210 |
static void resize(Client *c, int x, int y, int w, int h, Bool interact); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
211 |
static void resizeclient(Client *c, int x, int y, int w, int h); |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
212 |
static void resizemouse(const Arg *arg); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
213 |
static void restack(Monitor *m); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
214 |
static void run(void); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
215 |
static void scan(void); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
216 |
static Bool sendevent(Client *c, Atom proto); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
217 |
static void sendmon(Client *c, Monitor *m); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
218 |
static void setclientstate(Client *c, long state); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
219 |
static void setfocus(Client *c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
220 |
static void setfullscreen(Client *c, Bool fullscreen); |
1289 | 221 |
static void setlayout(const Arg *arg); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
222 |
static void setmfact(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
223 |
static void setup(void); |
1393
deaa276abac1
applied Marc Andre Tanners showhide patch, the removal of ntiled
Anselm R Garbe <garbeam@gmail.com>
parents:
1392
diff
changeset
|
224 |
static void showhide(Client *c); |
1478
cf5bb4e72804
added merged patch of anydot and Neale
Anselm R Garbe <garbeam@gmail.com>
parents:
1477
diff
changeset
|
225 |
static void sigchld(int unused); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
226 |
static void spawn(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
227 |
static void tag(const Arg *arg); |
1437 | 228 |
static void tagmon(const Arg *arg); |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
229 |
static int textnw(const char *text, unsigned int len); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
230 |
static void tile(Monitor *); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
231 |
static void togglebar(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
232 |
static void togglefloating(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
233 |
static void toggletag(const Arg *arg); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
234 |
static void toggleview(const Arg *arg); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
235 |
static void unfocus(Client *c, Bool setfocus); |
1487
430ebd3c0050
renaming isdestroyed into destroyed
Anselm R Garbe <garbeam@gmail.com>
parents:
1486
diff
changeset
|
236 |
static void unmanage(Client *c, Bool destroyed); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
237 |
static void unmapnotify(XEvent *e); |
1492
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
238 |
static Bool updategeom(void); |
1404
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
239 |
static void updatebarpos(Monitor *m); |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
240 |
static void updatebars(void); |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
241 |
static void updatenumlockmask(void); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
242 |
static void updatesizehints(Client *c); |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
243 |
static void updatestatus(void); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
244 |
static void updatewindowtype(Client *c); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
245 |
static void updatetitle(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
246 |
static void updatewmhints(Client *c); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
247 |
static void view(const Arg *arg); |
1430 | 248 |
static Client *wintoclient(Window w); |
249 |
static Monitor *wintomon(Window w); |
|
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
250 |
static int xerror(Display *dpy, XErrorEvent *ee); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
251 |
static int xerrordummy(Display *dpy, XErrorEvent *ee); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
252 |
static int xerrorstart(Display *dpy, XErrorEvent *ee); |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
253 |
static void zoom(const Arg *arg); |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
254 |
|
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
255 |
/* variables */ |
1460 | 256 |
static const char broken[] = "broken"; |
1491
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
257 |
static char stext[256]; |
1323
c1d2b106440d
added some comments regarding FAQ about s{x,y,w,h}, w{x,y,w,h}, b{y,h,lw}
Anselm R Garbe <garbeam@gmail.com>
parents:
1322
diff
changeset
|
258 |
static int screen; |
1458
e30739eebeed
extended rule to apply monitors if set up accordingly
Anselm R Garbe <anselm@garbe.us>
parents:
1457
diff
changeset
|
259 |
static int sw, sh; /* X display screen geometry width, height */ |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
260 |
static int bh, blw = 0; /* bar geometry */ |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
261 |
static int (*xerrorxlib)(Display *, XErrorEvent *); |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
262 |
static unsigned int numlockmask = 0; |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
263 |
static void (*handler[LASTEvent]) (XEvent *) = { |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
264 |
[ButtonPress] = buttonpress, |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
265 |
[ClientMessage] = clientmessage, |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
266 |
[ConfigureRequest] = configurerequest, |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
267 |
[ConfigureNotify] = configurenotify, |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
268 |
[DestroyNotify] = destroynotify, |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
269 |
[EnterNotify] = enternotify, |
1067
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
270 |
[Expose] = expose, |
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
271 |
[FocusIn] = focusin, |
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
272 |
[KeyPress] = keypress, |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
273 |
[MappingNotify] = mappingnotify, |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
274 |
[MapRequest] = maprequest, |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
275 |
[MotionNotify] = motionnotify, |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
276 |
[PropertyNotify] = propertynotify, |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
277 |
[UnmapNotify] = unmapnotify |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
278 |
}; |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
279 |
static Atom wmatom[WMLast], netatom[NetLast]; |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
280 |
static Bool running = True; |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
281 |
static Cursor cursor[CurLast]; |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
282 |
static Display *dpy; |
1348
18098673e417
checking result of XGetClassHint, removed some obsolete lines in initfont()
Anselm R Garbe <garbeam@gmail.com>
parents:
1347
diff
changeset
|
283 |
static DC dc; |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
284 |
static Monitor *mons = NULL, *selmon = NULL; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
285 |
static Window root; |
1447 | 286 |
|
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
287 |
/* configuration, allows nested code to access above variables */ |
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
288 |
#include "config.h" |
1224
47496de04028
applied Gottox bitmask + void *arg patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1223
diff
changeset
|
289 |
|
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
290 |
/* compile-time check if all tags fit into an unsigned int bit array. */ |
1462 | 291 |
struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; |
1036
e6188cb17fa1
removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
arg@suckless.org
parents:
1033
diff
changeset
|
292 |
|
1037 | 293 |
/* function implementations */ |
1106
084b17f96d9b
proceeded, though we still miss a real Tag struct
anselm@anselm1
parents:
1104
diff
changeset
|
294 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
295 |
applyrules(Client *c) { |
1460 | 296 |
const char *class, *instance; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
297 |
unsigned int i; |
1452
769fb14ae867
introducing const where it might make some sense
Anselm R Garbe <anselm@garbe.us>
parents:
1451
diff
changeset
|
298 |
const Rule *r; |
1458
e30739eebeed
extended rule to apply monitors if set up accordingly
Anselm R Garbe <anselm@garbe.us>
parents:
1457
diff
changeset
|
299 |
Monitor *m; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
300 |
XClassHint ch = { NULL, NULL }; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
301 |
|
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
302 |
/* rule matching */ |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
303 |
c->isfloating = c->tags = 0; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
304 |
XGetClassHint(dpy, c->win, &ch); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
305 |
class = ch.res_class ? ch.res_class : broken; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
306 |
instance = ch.res_name ? ch.res_name : broken; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
307 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
308 |
for(i = 0; i < LENGTH(rules); i++) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
309 |
r = &rules[i]; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
310 |
if((!r->title || strstr(c->name, r->title)) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
311 |
&& (!r->class || strstr(class, r->class)) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
312 |
&& (!r->instance || strstr(instance, r->instance))) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
313 |
{ |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
314 |
c->isfloating = r->isfloating; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
315 |
c->tags |= r->tags; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
316 |
for(m = mons; m && m->num != r->monitor; m = m->next); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
317 |
if(m) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
318 |
c->mon = m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
319 |
} |
1104 | 320 |
} |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
321 |
if(ch.res_class) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
322 |
XFree(ch.res_class); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
323 |
if(ch.res_name) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
324 |
XFree(ch.res_name); |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
325 |
c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags]; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
326 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
327 |
|
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
328 |
Bool |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
329 |
applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) { |
1390
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
330 |
Bool baseismin; |
1434
b0ac204a2c03
fixed usage of sx, sy, sw, sh
Anselm R Garbe <anselm@garbe.us>
parents:
1433
diff
changeset
|
331 |
Monitor *m = c->mon; |
1390
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
332 |
|
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
333 |
/* set minimum possible */ |
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
334 |
*w = MAX(1, *w); |
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
335 |
*h = MAX(1, *h); |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
336 |
if(interact) { |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
337 |
if(*x > sw) |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
338 |
*x = sw - WIDTH(c); |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
339 |
if(*y > sh) |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
340 |
*y = sh - HEIGHT(c); |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
341 |
if(*x + *w + 2 * c->bw < 0) |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
342 |
*x = 0; |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
343 |
if(*y + *h + 2 * c->bw < 0) |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
344 |
*y = 0; |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
345 |
} |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
346 |
else { |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
347 |
if(*x >= m->wx + m->ww) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
348 |
*x = m->wx + m->ww - WIDTH(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
349 |
if(*y >= m->wy + m->wh) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
350 |
*y = m->wy + m->wh - HEIGHT(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
351 |
if(*x + *w + 2 * c->bw <= m->wx) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
352 |
*x = m->wx; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
353 |
if(*y + *h + 2 * c->bw <= m->wy) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
354 |
*y = m->wy; |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
355 |
} |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
356 |
if(*h < bh) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
357 |
*h = bh; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
358 |
if(*w < bh) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
359 |
*w = bh; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
360 |
if(resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) { |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
361 |
/* see last two sentences in ICCCM 4.1.2.3 */ |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
362 |
baseismin = c->basew == c->minw && c->baseh == c->minh; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
363 |
if(!baseismin) { /* temporarily remove base dimensions */ |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
364 |
*w -= c->basew; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
365 |
*h -= c->baseh; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
366 |
} |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
367 |
/* adjust for aspect limits */ |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
368 |
if(c->mina > 0 && c->maxa > 0) { |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
369 |
if(c->maxa < (float)*w / *h) |
1468
654a2e8064ae
removed misleading comment
Anselm R Garbe <garbeam@gmail.com>
parents:
1466
diff
changeset
|
370 |
*w = *h * c->maxa + 0.5; |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
371 |
else if(c->mina < (float)*h / *w) |
1468
654a2e8064ae
removed misleading comment
Anselm R Garbe <garbeam@gmail.com>
parents:
1466
diff
changeset
|
372 |
*h = *w * c->mina + 0.5; |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
373 |
} |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
374 |
if(baseismin) { /* increment calculation requires this */ |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
375 |
*w -= c->basew; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
376 |
*h -= c->baseh; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
377 |
} |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
378 |
/* adjust for increment value */ |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
379 |
if(c->incw) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
380 |
*w -= *w % c->incw; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
381 |
if(c->inch) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
382 |
*h -= *h % c->inch; |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
383 |
/* restore base dimensions */ |
1526
64eb02a74f2b
applied Hiltjo's tiny cleanup patch, thanks!
Anselm R Garbe <anselm@garbe.us>
parents:
1525
diff
changeset
|
384 |
*w = MAX(*w + c->basew, c->minw); |
64eb02a74f2b
applied Hiltjo's tiny cleanup patch, thanks!
Anselm R Garbe <anselm@garbe.us>
parents:
1525
diff
changeset
|
385 |
*h = MAX(*h + c->baseh, c->minh); |
1392
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
386 |
if(c->maxw) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
387 |
*w = MIN(*w, c->maxw); |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
388 |
if(c->maxh) |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
389 |
*h = MIN(*h, c->maxh); |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
390 |
} |
ee12ffbf93df
applied Gottox' patches, and also removed usegrab
Anselm R Garbe <garbeam@gmail.com>
parents:
1391
diff
changeset
|
391 |
return *x != c->x || *y != c->y || *w != c->w || *h != c->h; |
1390
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
392 |
} |
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
393 |
|
c0534213fc52
applied Gottox' resizehints patch, thanks Gottox!
Anselm R Garbe <garbeam@gmail.com>
parents:
1389
diff
changeset
|
394 |
void |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
395 |
arrange(Monitor *m) { |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
396 |
if(m) |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
397 |
showhide(m->stack); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
398 |
else for(m = mons; m; m = m->next) |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
399 |
showhide(m->stack); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
400 |
if(m) |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
401 |
arrangemon(m); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
402 |
else for(m = mons; m; m = m->next) |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
403 |
arrangemon(m); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
404 |
} |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
405 |
|
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
406 |
void |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
407 |
arrangemon(Monitor *m) { |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
408 |
strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
409 |
if(m->lt[m->sellt]->arrange) |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
410 |
m->lt[m->sellt]->arrange(m); |
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
411 |
restack(m); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
412 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
413 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
414 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
415 |
attach(Client *c) { |
1409
ed5530a91efe
fixed tagmon, re-using detach/detachstack and attach/attachstack
Anselm R Garbe <anselm@garbe.us>
parents:
1408
diff
changeset
|
416 |
c->next = c->mon->clients; |
ed5530a91efe
fixed tagmon, re-using detach/detachstack and attach/attachstack
Anselm R Garbe <anselm@garbe.us>
parents:
1408
diff
changeset
|
417 |
c->mon->clients = c; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
418 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
419 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
420 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
421 |
attachstack(Client *c) { |
1409
ed5530a91efe
fixed tagmon, re-using detach/detachstack and attach/attachstack
Anselm R Garbe <anselm@garbe.us>
parents:
1408
diff
changeset
|
422 |
c->snext = c->mon->stack; |
ed5530a91efe
fixed tagmon, re-using detach/detachstack and attach/attachstack
Anselm R Garbe <anselm@garbe.us>
parents:
1408
diff
changeset
|
423 |
c->mon->stack = c; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
424 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
425 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
426 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
427 |
buttonpress(XEvent *e) { |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
428 |
unsigned int i, x, click; |
1295
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
429 |
Arg arg = {0}; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
430 |
Client *c; |
1417
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
431 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
432 |
XButtonPressedEvent *ev = &e->xbutton; |
990 | 433 |
|
1281
3e478379e74d
minor fixes towards 5.0
Anselm R Garbe <garbeam@gmail.com>
parents:
1280
diff
changeset
|
434 |
click = ClkRootWin; |
1417
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
435 |
/* focus monitor if necessary */ |
1430 | 436 |
if((m = wintomon(ev->window)) && m != selmon) { |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
437 |
unfocus(selmon->sel, True); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
438 |
selmon = m; |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
439 |
focus(NULL); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
440 |
} |
1454
b55c7bd92fda
removed monsyms, useless
Anselm R Garbe <garbeam@gmail.com>
parents:
1453
diff
changeset
|
441 |
if(ev->window == selmon->barwin) { |
b55c7bd92fda
removed monsyms, useless
Anselm R Garbe <garbeam@gmail.com>
parents:
1453
diff
changeset
|
442 |
i = x = 0; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
443 |
do |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
444 |
x += TEXTW(tags[i]); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
445 |
while(ev->x >= x && ++i < LENGTH(tags)); |
1295
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
446 |
if(i < LENGTH(tags)) { |
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
447 |
click = ClkTagBar; |
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
448 |
arg.ui = 1 << i; |
9f20458e3bbc
applied Gottox' ClkTagBar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1294
diff
changeset
|
449 |
} |
1271
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
450 |
else if(ev->x < x + blw) |
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
451 |
click = ClkLtSymbol; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
452 |
else if(ev->x > selmon->ww - TEXTW(stext)) |
1271
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
453 |
click = ClkStatusText; |
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
454 |
else |
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
455 |
click = ClkWinTitle; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
456 |
} |
1430 | 457 |
else if((c = wintoclient(ev->window))) { |
1281
3e478379e74d
minor fixes towards 5.0
Anselm R Garbe <garbeam@gmail.com>
parents:
1280
diff
changeset
|
458 |
focus(c); |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
459 |
click = ClkClientWin; |
1281
3e478379e74d
minor fixes towards 5.0
Anselm R Garbe <garbeam@gmail.com>
parents:
1280
diff
changeset
|
460 |
} |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
461 |
for(i = 0; i < LENGTH(buttons); i++) |
1271
c5ea09e8d2fc
some bugfixes of the patch application yesterday
Anselm R Garbe <garbeam@gmail.com>
parents:
1270
diff
changeset
|
462 |
if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button |
1464 | 463 |
&& CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) |
1351
3f66d2d2cd6e
applied yiyus tagbar patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1349
diff
changeset
|
464 |
buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
465 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
466 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
467 |
void |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
468 |
checkotherwm(void) { |
1354
dced80b409d8
applied Martin Hurton's checkotherwm simplification
Anselm R Garbe <garbeam@gmail.com>
parents:
1353
diff
changeset
|
469 |
xerrorxlib = XSetErrorHandler(xerrorstart); |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
470 |
/* this causes an error if some other window manager is running */ |
1077 | 471 |
XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask); |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
472 |
XSync(dpy, False); |
1354
dced80b409d8
applied Martin Hurton's checkotherwm simplification
Anselm R Garbe <garbeam@gmail.com>
parents:
1353
diff
changeset
|
473 |
XSetErrorHandler(xerror); |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
474 |
XSync(dpy, False); |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
475 |
} |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
476 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
477 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
478 |
cleanup(void) { |
1319
fb29ceb5932a
fixes using arg->i instead of arg->ui
Premysl Hruby <dfenze@gmail.com>
parents:
1318
diff
changeset
|
479 |
Arg a = {.ui = ~0}; |
1263
87cd6583546e
using foo layout during cleanup (suggested by Gottox), add Arg->v handling for togglelayout() suggested by anydot
Anselm R Garbe <garbeam@gmail.com>
parents:
1262
diff
changeset
|
480 |
Layout foo = { "", NULL }; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
481 |
Monitor *m; |
1262
decf862df839
lt will point to a foo-layout during cleanup now (Gottox' suggestion), and togglelayout respects Arg->v
Anselm R Garbe <garbeam@gmail.com>
parents:
1261
diff
changeset
|
482 |
|
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
483 |
view(&a); |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
484 |
selmon->lt[selmon->sellt] = &foo; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
485 |
for(m = mons; m; m = m->next) |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
486 |
while(m->stack) |
1485
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
487 |
unmanage(m->stack, False); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
488 |
if(dc.font.set) |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
489 |
XFreeFontSet(dpy, dc.font.set); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
490 |
else |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
491 |
XFreeFont(dpy, dc.font.xfont); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
492 |
XUngrabKey(dpy, AnyKey, AnyModifier, root); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
493 |
XFreePixmap(dpy, dc.drawable); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
494 |
XFreeGC(dpy, dc.gc); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
495 |
XFreeCursor(dpy, cursor[CurNormal]); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
496 |
XFreeCursor(dpy, cursor[CurResize]); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
497 |
XFreeCursor(dpy, cursor[CurMove]); |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
498 |
while(mons) |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
499 |
cleanupmon(mons); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
500 |
XSync(dpy, False); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
501 |
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); |
990 | 502 |
} |
503 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
504 |
void |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
505 |
cleanupmon(Monitor *mon) { |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
506 |
Monitor *m; |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
507 |
|
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
508 |
if(mon == mons) |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
509 |
mons = mons->next; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
510 |
else { |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
511 |
for(m = mons; m && m->next != mon; m = m->next); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
512 |
m->next = mon->next; |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
513 |
} |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
514 |
XUnmapWindow(dpy, mon->barwin); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
515 |
XDestroyWindow(dpy, mon->barwin); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
516 |
free(mon); |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
517 |
} |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
518 |
|
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
519 |
void |
1366
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
520 |
clearurgent(Client *c) { |
1309 | 521 |
XWMHints *wmh; |
522 |
||
1366
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
523 |
c->isurgent = False; |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
524 |
if(!(wmh = XGetWMHints(dpy, c->win))) |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
525 |
return; |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
526 |
wmh->flags &= ~XUrgencyHint; |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
527 |
XSetWMHints(dpy, c->win, wmh); |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
528 |
XFree(wmh); |
1309 | 529 |
} |
530 |
||
531 |
void |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
532 |
clientmessage(XEvent *e) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
533 |
XClientMessageEvent *cme = &e->xclient; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
534 |
Client *c = wintoclient(cme->window); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
535 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
536 |
if(!c) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
537 |
return; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
538 |
if(cme->message_type == netatom[NetWMState]) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
539 |
if(cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen]) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
540 |
setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */ |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
541 |
|| (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen))); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
542 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
543 |
else if(cme->message_type == netatom[NetActiveWindow]) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
544 |
if(!ISVISIBLE(c)) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
545 |
c->mon->seltags ^= 1; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
546 |
c->mon->tagset[c->mon->seltags] = c->tags; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
547 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
548 |
pop(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
549 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
550 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
551 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
552 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
553 |
configure(Client *c) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
554 |
XConfigureEvent ce; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
555 |
|
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
556 |
ce.type = ConfigureNotify; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
557 |
ce.display = dpy; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
558 |
ce.event = c->win; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
559 |
ce.window = c->win; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
560 |
ce.x = c->x; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
561 |
ce.y = c->y; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
562 |
ce.width = c->w; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
563 |
ce.height = c->h; |
1152
960659820908
renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value
Anselm R Garbe <garbeam@gmail.com>
parents:
1151
diff
changeset
|
564 |
ce.border_width = c->bw; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
565 |
ce.above = None; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
566 |
ce.override_redirect = False; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
567 |
XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
568 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
569 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
570 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
571 |
configurenotify(XEvent *e) { |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
572 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
573 |
XConfigureEvent *ev = &e->xconfigure; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
574 |
Bool dirty; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
575 |
|
1484 | 576 |
if(ev->window == root) { |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
577 |
dirty = (sw != ev->width); |
1155
25e7987c7b18
updated configurenotify
Anselm R Garbe <garbeam@gmail.com>
parents:
1154
diff
changeset
|
578 |
sw = ev->width; |
25e7987c7b18
updated configurenotify
Anselm R Garbe <garbeam@gmail.com>
parents:
1154
diff
changeset
|
579 |
sh = ev->height; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
580 |
if(updategeom() || dirty) { |
1492
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
581 |
if(dc.drawable != 0) |
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
582 |
XFreePixmap(dpy, dc.drawable); |
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
583 |
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); |
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
584 |
updatebars(); |
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
585 |
for(m = mons; m; m = m->next) |
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
586 |
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
587 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
588 |
arrange(NULL); |
1492
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
589 |
} |
1155
25e7987c7b18
updated configurenotify
Anselm R Garbe <garbeam@gmail.com>
parents:
1154
diff
changeset
|
590 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
591 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
592 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
593 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
594 |
configurerequest(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
595 |
Client *c; |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
596 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
597 |
XConfigureRequestEvent *ev = &e->xconfigurerequest; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
598 |
XWindowChanges wc; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
599 |
|
1430 | 600 |
if((c = wintoclient(ev->window))) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
601 |
if(ev->value_mask & CWBorderWidth) |
1152
960659820908
renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value
Anselm R Garbe <garbeam@gmail.com>
parents:
1151
diff
changeset
|
602 |
c->bw = ev->border_width; |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
603 |
else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) { |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
604 |
m = c->mon; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
605 |
if(ev->value_mask & CWX) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
606 |
c->oldx = c->x; |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
607 |
c->x = m->mx + ev->x; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
608 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
609 |
if(ev->value_mask & CWY) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
610 |
c->oldy = c->y; |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
611 |
c->y = m->my + ev->y; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
612 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
613 |
if(ev->value_mask & CWWidth) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
614 |
c->oldw = c->w; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
615 |
c->w = ev->width; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
616 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
617 |
if(ev->value_mask & CWHeight) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
618 |
c->oldh = c->h; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
619 |
c->h = ev->height; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
620 |
} |
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
621 |
if((c->x + c->w) > m->mx + m->mw && c->isfloating) |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
622 |
c->x = m->mx + (m->mw / 2 - WIDTH(c) / 2); /* center in x direction */ |
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
623 |
if((c->y + c->h) > m->my + m->mh && c->isfloating) |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
624 |
c->y = m->my + (m->mh / 2 - HEIGHT(c) / 2); /* center in y direction */ |
1291
6a5c4371eb25
resize should apply if !banned
Anselm R Garbe <garbeam@gmail.com>
parents:
1290
diff
changeset
|
625 |
if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight))) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
626 |
configure(c); |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
627 |
if(ISVISIBLE(c)) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
628 |
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); |
990 | 629 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
630 |
else |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
631 |
configure(c); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
632 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
633 |
else { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
634 |
wc.x = ev->x; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
635 |
wc.y = ev->y; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
636 |
wc.width = ev->width; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
637 |
wc.height = ev->height; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
638 |
wc.border_width = ev->border_width; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
639 |
wc.sibling = ev->above; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
640 |
wc.stack_mode = ev->detail; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
641 |
XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); |
990 | 642 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
643 |
XSync(dpy, False); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
644 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
645 |
|
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
646 |
Monitor * |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
647 |
createmon(void) { |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
648 |
Monitor *m; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
649 |
|
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
650 |
if(!(m = (Monitor *)calloc(1, sizeof(Monitor)))) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
651 |
die("fatal: could not malloc() %u bytes\n", sizeof(Monitor)); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
652 |
m->tagset[0] = m->tagset[1] = 1; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
653 |
m->mfact = mfact; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
654 |
m->nmaster = nmaster; |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
655 |
m->showbar = showbar; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
656 |
m->topbar = topbar; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
657 |
m->lt[0] = &layouts[0]; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
658 |
m->lt[1] = &layouts[1 % LENGTH(layouts)]; |
1496
de4a2998e1f5
use buffer instead of pointer for mon->ltsymbol
Anselm R Garbe <garbeam@gmail.com>
parents:
1495
diff
changeset
|
659 |
strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
660 |
return m; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
661 |
} |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
662 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
663 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
664 |
destroynotify(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
665 |
Client *c; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
666 |
XDestroyWindowEvent *ev = &e->xdestroywindow; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
667 |
|
1430 | 668 |
if((c = wintoclient(ev->window))) |
1485
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
669 |
unmanage(c, True); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
670 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
671 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
672 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
673 |
detach(Client *c) { |
1307 | 674 |
Client **tc; |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
675 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
676 |
for(tc = &c->mon->clients; *tc && *tc != c; tc = &(*tc)->next); |
1307 | 677 |
*tc = c->next; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
678 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
679 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
680 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
681 |
detachstack(Client *c) { |
1431 | 682 |
Client **tc, *t; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
683 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
684 |
for(tc = &c->mon->stack; *tc && *tc != c; tc = &(*tc)->snext); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
685 |
*tc = c->snext; |
1430 | 686 |
|
687 |
if(c == c->mon->sel) { |
|
1431 | 688 |
for(t = c->mon->stack; t && !ISVISIBLE(t); t = t->snext); |
689 |
c->mon->sel = t; |
|
1430 | 690 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
691 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
692 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
693 |
void |
1308 | 694 |
die(const char *errstr, ...) { |
695 |
va_list ap; |
|
696 |
||
697 |
va_start(ap, errstr); |
|
698 |
vfprintf(stderr, errstr, ap); |
|
699 |
va_end(ap); |
|
700 |
exit(EXIT_FAILURE); |
|
701 |
} |
|
702 |
||
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
703 |
Monitor * |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
704 |
dirtomon(int dir) { |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
705 |
Monitor *m = NULL; |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
706 |
|
1446 | 707 |
if(dir > 0) { |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
708 |
if(!(m = selmon->next)) |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
709 |
m = mons; |
1446 | 710 |
} |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
711 |
else if(selmon == mons) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
712 |
for(m = mons; m->next; m = m->next); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
713 |
else |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
714 |
for(m = mons; m->next != selmon; m = m->next); |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
715 |
return m; |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
716 |
} |
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
717 |
|
1308 | 718 |
void |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
719 |
drawbar(Monitor *m) { |
1318
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
720 |
int x; |
1491
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
721 |
unsigned int i, occ = 0, urg = 0; |
1318
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
722 |
unsigned long *col; |
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
723 |
Client *c; |
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
724 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
725 |
for(c = m->clients; c; c = c->next) { |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
726 |
occ |= c->tags; |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
727 |
if(c->isurgent) |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
728 |
urg |= c->tags; |
1318
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
729 |
} |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
730 |
dc.x = 0; |
1102
239f5ee65766
pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past
anselm@anselm1
parents:
1101
diff
changeset
|
731 |
for(i = 0; i < LENGTH(tags); i++) { |
1236 | 732 |
dc.w = TEXTW(tags[i]); |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
733 |
col = m->tagset[m->seltags] & 1 << i ? dc.sel : dc.norm; |
1318
65c37b4be9cb
applied Johannes Hofmann's patch, please test
anselm@anselm1
parents:
1317
diff
changeset
|
734 |
drawtext(tags[i], col, urg & 1 << i); |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
735 |
drawsquare(m == selmon && selmon->sel && selmon->sel->tags & 1 << i, |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
736 |
occ & 1 << i, urg & 1 << i, col); |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
737 |
dc.x += dc.w; |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
738 |
} |
1491
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
739 |
dc.w = blw = TEXTW(m->ltsymbol); |
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
740 |
drawtext(m->ltsymbol, dc.norm, False); |
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
741 |
dc.x += dc.w; |
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
742 |
x = dc.x; |
1415
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
743 |
if(m == selmon) { /* status is only drawn on selected monitor */ |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
744 |
dc.w = TEXTW(stext); |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
745 |
dc.x = m->ww - dc.w; |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
746 |
if(dc.x < x) { |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
747 |
dc.x = x; |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
748 |
dc.w = m->ww - x; |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
749 |
} |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
750 |
drawtext(stext, dc.norm, False); |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
751 |
} |
1444 | 752 |
else |
1415
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
753 |
dc.x = m->ww; |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
754 |
if((dc.w = dc.x - x) > bh) { |
1399
0decadd79fd5
several fixes through ISVISIBLE change (takes Monitor into account)
Anselm R Garbe <anselm@garbe.us>
parents:
1398
diff
changeset
|
755 |
dc.x = x; |
1415
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
756 |
if(m->sel) { |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
757 |
col = m == selmon ? dc.sel : dc.norm; |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
758 |
drawtext(m->sel->name, col, False); |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
759 |
drawsquare(m->sel->isfixed, m->sel->isfloating, False, col); |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
760 |
} |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
761 |
else |
b2265afcdd4e
fixed title rendering on non-active screen
Anselm R Garbe <garbeam@gmail.com>
parents:
1414
diff
changeset
|
762 |
drawtext(NULL, dc.norm, False); |
990 | 763 |
} |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
764 |
XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->ww, bh, 0, 0); |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
765 |
XSync(dpy, False); |
990 | 766 |
} |
767 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
768 |
void |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
769 |
drawbars(void) { |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
770 |
Monitor *m; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
771 |
|
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
772 |
for(m = mons; m; m = m->next) |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
773 |
drawbar(m); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
774 |
} |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
775 |
|
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
776 |
void |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
777 |
drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]) { |
1072
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
778 |
int x; |
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
779 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
780 |
XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
781 |
x = (dc.font.ascent + dc.font.descent + 2) / 4; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
782 |
if(filled) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
783 |
XFillRectangle(dpy, dc.drawable, dc.gc, dc.x+1, dc.y+1, x+1, x+1); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
784 |
else if(empty) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
785 |
XDrawRectangle(dpy, dc.drawable, dc.gc, dc.x+1, dc.y+1, x, x); |
1072
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
786 |
} |
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
787 |
|
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
788 |
void |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
789 |
drawtext(const char *text, unsigned long col[ColLast], Bool invert) { |
1332 | 790 |
char buf[256]; |
1254 | 791 |
int i, x, y, h, len, olen; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
792 |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
793 |
XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
794 |
XFillRectangle(dpy, dc.drawable, dc.gc, dc.x, dc.y, dc.w, dc.h); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
795 |
if(!text) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
796 |
return; |
1182
9940d125b703
applied dfenze drawtext simplifications
Anselm R Garbe <garbeam@gmail.com>
parents:
1179
diff
changeset
|
797 |
olen = strlen(text); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
798 |
h = dc.font.ascent + dc.font.descent; |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
799 |
y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent; |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
800 |
x = dc.x + (h / 2); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
801 |
/* shorten text if necessary */ |
1336
6ed902a28221
fixed error I did when applying Martin Hurton's drawtext patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1335
diff
changeset
|
802 |
for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--); |
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
803 |
if(!len) |
1182
9940d125b703
applied dfenze drawtext simplifications
Anselm R Garbe <garbeam@gmail.com>
parents:
1179
diff
changeset
|
804 |
return; |
1328
0fac6d3067d7
applied Martin Hurton's drawtext() patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1327
diff
changeset
|
805 |
memcpy(buf, text, len); |
1250
1fa12fca6c0e
Gottox' drawtext simplification
Anselm R Garbe <garbeam@gmail.com>
parents:
1249
diff
changeset
|
806 |
if(len < olen) |
1259
f0c900871c87
final version -- Gottox verified it using the test driver
arg@suckless.org
parents:
1258
diff
changeset
|
807 |
for(i = len; i && i > len - 3; buf[--i] = '.'); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
808 |
XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
809 |
if(dc.font.set) |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
810 |
XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
811 |
else |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
812 |
XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
813 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
814 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
815 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
816 |
enternotify(XEvent *e) { |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
817 |
Client *c; |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
818 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
819 |
XCrossingEvent *ev = &e->xcrossing; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
820 |
|
1109
55e2f7e96b71
removed initags -- we autoselect the first tag in each view instead
anselm@anselm1
parents:
1108
diff
changeset
|
821 |
if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) |
55e2f7e96b71
removed initags -- we autoselect the first tag in each view instead
anselm@anselm1
parents:
1108
diff
changeset
|
822 |
return; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
823 |
c = wintoclient(ev->window); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
824 |
m = c ? c->mon : wintomon(ev->window); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
825 |
if(m != selmon) { |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
826 |
unfocus(selmon->sel, True); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
827 |
selmon = m; |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
828 |
} |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
829 |
else if(!c || c == selmon->sel) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
830 |
return; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
831 |
focus(c); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
832 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
833 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
834 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
835 |
expose(XEvent *e) { |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
836 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
837 |
XExposeEvent *ev = &e->xexpose; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
838 |
|
1430 | 839 |
if(ev->count == 0 && (m = wintomon(ev->window))) |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
840 |
drawbar(m); |
1110
227f2d07c63f
made the basics of the tagging concept working -- if people want dynamic tags, that's even possible with this concept, the vtags[] array needs to be modified during runtime for this -- the new code is quite experimental, ugly and needs polishing
anselm@anselm1
parents:
1109
diff
changeset
|
841 |
} |
227f2d07c63f
made the basics of the tagging concept working -- if people want dynamic tags, that's even possible with this concept, the vtags[] array needs to be modified during runtime for this -- the new code is quite experimental, ugly and needs polishing
anselm@anselm1
parents:
1109
diff
changeset
|
842 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
843 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
844 |
focus(Client *c) { |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
845 |
if(!c || !ISVISIBLE(c)) |
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
846 |
for(c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
847 |
/* was if(selmon->sel) */ |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
848 |
if(selmon->sel && selmon->sel != c) |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
849 |
unfocus(selmon->sel, False); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
850 |
if(c) { |
1416 | 851 |
if(c->mon != selmon) |
852 |
selmon = c->mon; |
|
1366
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
853 |
if(c->isurgent) |
335301ed102f
integrated yiyus clearurgent refactoring
Anselm R Garbe <garbeam@gmail.com>
parents:
1365
diff
changeset
|
854 |
clearurgent(c); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
855 |
detachstack(c); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
856 |
attachstack(c); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
857 |
grabbuttons(c, True); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
858 |
XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
859 |
setfocus(c); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
860 |
} |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
861 |
else |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
862 |
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
863 |
selmon->sel = c; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
864 |
drawbars(); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
865 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
866 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
867 |
void |
1067
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
868 |
focusin(XEvent *e) { /* there are some broken focus acquiring clients */ |
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
869 |
XFocusChangeEvent *ev = &e->xfocus; |
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
870 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
871 |
if(selmon->sel && ev->window != selmon->sel->win) |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
872 |
setfocus(selmon->sel); |
1067
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
873 |
} |
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
874 |
|
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
875 |
void |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
876 |
focusmon(const Arg *arg) { |
1526
64eb02a74f2b
applied Hiltjo's tiny cleanup patch, thanks!
Anselm R Garbe <anselm@garbe.us>
parents:
1525
diff
changeset
|
877 |
Monitor *m; |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
878 |
|
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
879 |
if(!mons->next) |
1427
f8ea02f86861
some cleanup handling for index based mon search
Anselm R Garbe <anselm@garbe.us>
parents:
1426
diff
changeset
|
880 |
return; |
1510
e9c916f6ea15
more debug output, experimental focus optimisation
Anselm R Garbe <anselm@garbe.us>
parents:
1509
diff
changeset
|
881 |
if((m = dirtomon(arg->i)) == selmon) |
e9c916f6ea15
more debug output, experimental focus optimisation
Anselm R Garbe <anselm@garbe.us>
parents:
1509
diff
changeset
|
882 |
return; |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
883 |
unfocus(selmon->sel, True); |
1427
f8ea02f86861
some cleanup handling for index based mon search
Anselm R Garbe <anselm@garbe.us>
parents:
1426
diff
changeset
|
884 |
selmon = m; |
f8ea02f86861
some cleanup handling for index based mon search
Anselm R Garbe <anselm@garbe.us>
parents:
1426
diff
changeset
|
885 |
focus(NULL); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
886 |
} |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
887 |
|
1067
d6d3085307d8
fixed focus steeling bug done by clients like opera
Anselm R. Garbe <garbeam@gmail.com>
parents:
1066
diff
changeset
|
888 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
889 |
focusstack(const Arg *arg) { |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
890 |
Client *c = NULL, *i; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
891 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
892 |
if(!selmon->sel) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
893 |
return; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
894 |
if(arg->i > 0) { |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
895 |
for(c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next); |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
896 |
if(!c) |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
897 |
for(c = selmon->clients; c && !ISVISIBLE(c); c = c->next); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
898 |
} |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
899 |
else { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
900 |
for(i = selmon->clients; i != selmon->sel; i = i->next) |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
901 |
if(ISVISIBLE(i)) |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
902 |
c = i; |
1268
fc7dd1b14093
removed trailing spaces reported by Soleen
Anselm R Garbe <garbeam@gmail.com>
parents:
1267
diff
changeset
|
903 |
if(!c) |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
904 |
for(; i; i = i->next) |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
905 |
if(ISVISIBLE(i)) |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
906 |
c = i; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
907 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
908 |
if(c) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
909 |
focus(c); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
910 |
restack(selmon); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
911 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
912 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
913 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
914 |
Atom |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
915 |
getatomprop(Client *c, Atom prop) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
916 |
int di; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
917 |
unsigned long dl; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
918 |
unsigned char *p = NULL; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
919 |
Atom da, atom = None; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
920 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
921 |
if(XGetWindowProperty(dpy, c->win, prop, 0L, sizeof atom, False, XA_ATOM, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
922 |
&da, &di, &dl, &dl, &p) == Success && p) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
923 |
atom = *(Atom *)p; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
924 |
XFree(p); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
925 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
926 |
return atom; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
927 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
928 |
|
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
929 |
unsigned long |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
930 |
getcolor(const char *colstr) { |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
931 |
Colormap cmap = DefaultColormap(dpy, screen); |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
932 |
XColor color; |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
933 |
|
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
934 |
if(!XAllocNamedColor(dpy, cmap, colstr, &color, &color)) |
1308 | 935 |
die("error, cannot allocate color '%s'\n", colstr); |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
936 |
return color.pixel; |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
937 |
} |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
938 |
|
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
939 |
Bool |
1450 | 940 |
getrootptr(int *x, int *y) { |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
941 |
int di; |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
942 |
unsigned int dui; |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
943 |
Window dummy; |
1444 | 944 |
|
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
945 |
return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
946 |
} |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
947 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
948 |
long |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
949 |
getstate(Window w) { |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
950 |
int format; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
951 |
long result = -1; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
952 |
unsigned char *p = NULL; |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
953 |
unsigned long n, extra; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
954 |
Atom real; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
955 |
|
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
956 |
if(XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState], |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
957 |
&real, &format, &n, &extra, (unsigned char **)&p) != Success) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
958 |
return -1; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
959 |
if(n != 0) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
960 |
result = *p; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
961 |
XFree(p); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
962 |
return result; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
963 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
964 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
965 |
Bool |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
966 |
gettextprop(Window w, Atom atom, char *text, unsigned int size) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
967 |
char **list = NULL; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
968 |
int n; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
969 |
XTextProperty name; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
970 |
|
1058
5e34476a3a1c
we check variable == value, and not the other way - the other way is for beginner programmers.
Anselm R. Garbe <garbeam@gmail.com>
parents:
1057
diff
changeset
|
971 |
if(!text || size == 0) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
972 |
return False; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
973 |
text[0] = '\0'; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
974 |
XGetTextProperty(dpy, w, &name, atom); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
975 |
if(!name.nitems) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
976 |
return False; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
977 |
if(name.encoding == XA_STRING) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
978 |
strncpy(text, (char *)name.value, size - 1); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
979 |
else { |
1464 | 980 |
if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
981 |
strncpy(text, *list, size - 1); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
982 |
XFreeStringList(list); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
983 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
984 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
985 |
text[size - 1] = '\0'; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
986 |
XFree(name.value); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
987 |
return True; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
988 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
989 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
990 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
991 |
grabbuttons(Client *c, Bool focused) { |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
992 |
updatenumlockmask(); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
993 |
{ |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
994 |
unsigned int i, j; |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
995 |
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
996 |
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
997 |
if(focused) { |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
998 |
for(i = 0; i < LENGTH(buttons); i++) |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
999 |
if(buttons[i].click == ClkClientWin) |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1000 |
for(j = 0; j < LENGTH(modifiers); j++) |
1395
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1001 |
XGrabButton(dpy, buttons[i].button, |
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1002 |
buttons[i].mask | modifiers[j], |
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1003 |
c->win, False, BUTTONMASK, |
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1004 |
GrabModeAsync, GrabModeSync, None, None); |
1447 | 1005 |
} |
1006 |
else |
|
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1007 |
XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1008 |
BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1009 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1010 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1011 |
|
1060
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1012 |
void |
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
1013 |
grabkeys(void) { |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1014 |
updatenumlockmask(); |
1444 | 1015 |
{ |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1016 |
unsigned int i, j; |
1340
15d159526e5e
changed grabkeys, removed initmodmap
Anselm R Garbe <garbeam@gmail.com>
parents:
1339
diff
changeset
|
1017 |
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; |
15d159526e5e
changed grabkeys, removed initmodmap
Anselm R Garbe <garbeam@gmail.com>
parents:
1339
diff
changeset
|
1018 |
KeyCode code; |
15d159526e5e
changed grabkeys, removed initmodmap
Anselm R Garbe <garbeam@gmail.com>
parents:
1339
diff
changeset
|
1019 |
|
15d159526e5e
changed grabkeys, removed initmodmap
Anselm R Garbe <garbeam@gmail.com>
parents:
1339
diff
changeset
|
1020 |
XUngrabKey(dpy, AnyKey, AnyModifier, root); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1021 |
for(i = 0; i < LENGTH(keys); i++) |
1352
eb1eb9811706
applied Gottox' grabkey patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1351
diff
changeset
|
1022 |
if((code = XKeysymToKeycode(dpy, keys[i].keysym))) |
eb1eb9811706
applied Gottox' grabkey patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1351
diff
changeset
|
1023 |
for(j = 0; j < LENGTH(modifiers); j++) |
eb1eb9811706
applied Gottox' grabkey patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1351
diff
changeset
|
1024 |
XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, |
eb1eb9811706
applied Gottox' grabkey patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1351
diff
changeset
|
1025 |
True, GrabModeAsync, GrabModeAsync); |
1060
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1026 |
} |
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1027 |
} |
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1028 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1029 |
void |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1030 |
incnmaster(const Arg *arg) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1031 |
selmon->nmaster = MAX(selmon->nmaster + arg->i, 0); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1032 |
arrange(selmon); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1033 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1034 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1035 |
void |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1036 |
initfont(const char *fontstr) { |
990 | 1037 |
char *def, **missing; |
1530
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1038 |
int n; |
990 | 1039 |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1040 |
dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); |
990 | 1041 |
if(missing) { |
1042 |
while(n--) |
|
1043 |
fprintf(stderr, "dwm: missing fontset: %s\n", missing[n]); |
|
1044 |
XFreeStringList(missing); |
|
1045 |
} |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1046 |
if(dc.font.set) { |
990 | 1047 |
XFontStruct **xfonts; |
1048 |
char **font_names; |
|
1462 | 1049 |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1050 |
dc.font.ascent = dc.font.descent = 0; |
1528
b4f5309d6253
applied Hiltjo's cleanup patch
Anselm R Garbe <anselm@garbe.us>
parents:
1527
diff
changeset
|
1051 |
XExtentsOfFontSet(dc.font.set); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1052 |
n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); |
1530
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1053 |
while(n--) { |
1178 | 1054 |
dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent); |
1055 |
dc.font.descent = MAX(dc.font.descent,(*xfonts)->descent); |
|
990 | 1056 |
xfonts++; |
1057 |
} |
|
1058 |
} |
|
1059 |
else { |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1060 |
if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr)) |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1061 |
&& !(dc.font.xfont = XLoadQueryFont(dpy, "fixed"))) |
1308 | 1062 |
die("error, cannot load font: '%s'\n", fontstr); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1063 |
dc.font.ascent = dc.font.xfont->ascent; |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1064 |
dc.font.descent = dc.font.xfont->descent; |
990 | 1065 |
} |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1066 |
dc.font.height = dc.font.ascent + dc.font.descent; |
990 | 1067 |
} |
1068 |
||
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1069 |
#ifdef XINERAMA |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1070 |
static Bool |
1530
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1071 |
isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info) { |
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1072 |
while(n--) |
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1073 |
if(unique[n].x_org == info->x_org && unique[n].y_org == info->y_org |
072c62ed10f2
applied anonymous patch, I don't think the reversed array access has semantic side-effects
Anselm R Garbe <anselm@garbe.us>
parents:
1528
diff
changeset
|
1074 |
&& unique[n].width == info->width && unique[n].height == info->height) |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1075 |
return False; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1076 |
return True; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1077 |
} |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1078 |
#endif /* XINERAMA */ |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1079 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1080 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1081 |
keypress(XEvent *e) { |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
1082 |
unsigned int i; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1083 |
KeySym keysym; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1084 |
XKeyEvent *ev; |
990 | 1085 |
|
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1086 |
ev = &e->xkey; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1087 |
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
1048
98fc0d3c583a
replaced Nmacros with LENGTH(x) macro
Anselm R. Garbe <garbeam@gmail.com>
parents:
1047
diff
changeset
|
1088 |
for(i = 0; i < LENGTH(keys); i++) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1089 |
if(keysym == keys[i].keysym |
1464 | 1090 |
&& CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) |
1091 |
&& keys[i].func) |
|
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1092 |
keys[i].func(&(keys[i].arg)); |
990 | 1093 |
} |
1094 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1095 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1096 |
killclient(const Arg *arg) { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1097 |
if(!selmon->sel) |
990 | 1098 |
return; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1099 |
if(!sendevent(selmon->sel, wmatom[WMDelete])) { |
1488 | 1100 |
XGrabServer(dpy); |
1101 |
XSetErrorHandler(xerrordummy); |
|
1102 |
XSetCloseDownMode(dpy, DestroyAll); |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1103 |
XKillClient(dpy, selmon->sel->win); |
1488 | 1104 |
XSync(dpy, False); |
1105 |
XSetErrorHandler(xerror); |
|
1106 |
XUngrabServer(dpy); |
|
1107 |
} |
|
990 | 1108 |
} |
1109 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1110 |
void |
990 | 1111 |
manage(Window w, XWindowAttributes *wa) { |
1112 |
Client *c, *t = NULL; |
|
1333
5be4e277ed7c
using None instead of 0 for trans
Anselm R Garbe <garbeam@gmail.com>
parents:
1332
diff
changeset
|
1113 |
Window trans = None; |
990 | 1114 |
XWindowChanges wc; |
1115 |
||
1528
b4f5309d6253
applied Hiltjo's cleanup patch
Anselm R Garbe <anselm@garbe.us>
parents:
1527
diff
changeset
|
1116 |
if(!(c = calloc(1, sizeof(Client)))) |
1358
e4bcaca8e6ef
using malloc() instead of calloc() and sticking to static initializer and struct assignment, not using *c = (Client){}; right now to avoid some ugly gcc warning, possibly a gcc bug since we are using -std=c99
Anselm R Garbe <garbeam@gmail.com>
parents:
1357
diff
changeset
|
1117 |
die("fatal: could not malloc() %u bytes\n", sizeof(Client)); |
990 | 1118 |
c->win = w; |
1459 | 1119 |
updatetitle(c); |
1526
64eb02a74f2b
applied Hiltjo's tiny cleanup patch, thanks!
Anselm R Garbe <anselm@garbe.us>
parents:
1525
diff
changeset
|
1120 |
if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) { |
1432
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1121 |
c->mon = t->mon; |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1122 |
c->tags = t->tags; |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1123 |
} |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1124 |
else { |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1125 |
c->mon = selmon; |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1126 |
applyrules(c); |
dda54561d777
fixed order of transient monitor applicaion and rule application
Anselm R Garbe <anselm@garbe.us>
parents:
1431
diff
changeset
|
1127 |
} |
1129
43d862bda73e
implemented setlayout in the way proposed on the ml, split tile() into two functions, a third will follow soon
Anselm R Garbe <garbeam@gmail.com>
parents:
1128
diff
changeset
|
1128 |
/* geometry */ |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1129 |
c->x = c->oldx = wa->x; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1130 |
c->y = c->oldy = wa->y; |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1131 |
c->w = c->oldw = wa->width; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1132 |
c->h = c->oldh = wa->height; |
1152
960659820908
renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value
Anselm R Garbe <garbeam@gmail.com>
parents:
1151
diff
changeset
|
1133 |
c->oldbw = wa->border_width; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1134 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1135 |
if(c->x + WIDTH(c) > c->mon->mx + c->mon->mw) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1136 |
c->x = c->mon->mx + c->mon->mw - WIDTH(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1137 |
if(c->y + HEIGHT(c) > c->mon->my + c->mon->mh) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1138 |
c->y = c->mon->my + c->mon->mh - HEIGHT(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1139 |
c->x = MAX(c->x, c->mon->mx); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1140 |
/* only fix client y-offset, if the client center might cover the bar */ |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1141 |
c->y = MAX(c->y, ((c->mon->by == c->mon->my) && (c->x + (c->w / 2) >= c->mon->wx) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1142 |
&& (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1143 |
c->bw = borderpx; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1144 |
|
1152
960659820908
renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value
Anselm R Garbe <garbeam@gmail.com>
parents:
1151
diff
changeset
|
1145 |
wc.border_width = c->bw; |
990 | 1146 |
XConfigureWindow(dpy, w, CWBorderWidth, &wc); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1147 |
XSetWindowBorder(dpy, w, dc.norm[ColBorder]); |
990 | 1148 |
configure(c); /* propagates border_width, if size doesn't change */ |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1149 |
updatewindowtype(c); |
990 | 1150 |
updatesizehints(c); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1151 |
updatewmhints(c); |
1102
239f5ee65766
pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past
anselm@anselm1
parents:
1101
diff
changeset
|
1152 |
XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask); |
990 | 1153 |
grabbuttons(c, False); |
1154 |
if(!c->isfloating) |
|
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1155 |
c->isfloating = c->oldstate = trans != None || c->isfixed; |
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1156 |
if(c->isfloating) |
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1157 |
XRaiseWindow(dpy, c->win); |
990 | 1158 |
attach(c); |
1159 |
attachstack(c); |
|
1297
20481c9d647c
does this fix anything?
Anselm R Garbe <garbeam@gmail.com>
parents:
1295
diff
changeset
|
1160 |
XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */ |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1161 |
setclientstate(c, NormalState); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1162 |
if (c->mon == selmon) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1163 |
unfocus(selmon->sel, False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1164 |
c->mon->sel = c; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1165 |
arrange(c->mon); |
990 | 1166 |
XMapWindow(dpy, c->win); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1167 |
focus(NULL); |
990 | 1168 |
} |
1169 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1170 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1171 |
mappingnotify(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1172 |
XMappingEvent *ev = &e->xmapping; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1173 |
|
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1174 |
XRefreshKeyboardMapping(ev); |
1340
15d159526e5e
changed grabkeys, removed initmodmap
Anselm R Garbe <garbeam@gmail.com>
parents:
1339
diff
changeset
|
1175 |
if(ev->request == MappingKeyboard) |
1060
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1176 |
grabkeys(); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1177 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1178 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1179 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1180 |
maprequest(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1181 |
static XWindowAttributes wa; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1182 |
XMapRequestEvent *ev = &e->xmaprequest; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1183 |
|
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1184 |
if(!XGetWindowAttributes(dpy, ev->window, &wa)) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1185 |
return; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1186 |
if(wa.override_redirect) |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1187 |
return; |
1430 | 1188 |
if(!wintoclient(ev->window)) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1189 |
manage(ev->window, &wa); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1190 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1191 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1192 |
void |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1193 |
monocle(Monitor *m) { |
1491
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
1194 |
unsigned int n = 0; |
1289 | 1195 |
Client *c; |
1196 |
||
1491
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
1197 |
for(c = m->clients; c; c = c->next) |
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
1198 |
if(ISVISIBLE(c)) |
4754e7889841
implemented dynamic layout symbol stuff
Anselm R Garbe <garbeam@gmail.com>
parents:
1489
diff
changeset
|
1199 |
n++; |
1496
de4a2998e1f5
use buffer instead of pointer for mon->ltsymbol
Anselm R Garbe <garbeam@gmail.com>
parents:
1495
diff
changeset
|
1200 |
if(n > 0) /* override layout symbol */ |
de4a2998e1f5
use buffer instead of pointer for mon->ltsymbol
Anselm R Garbe <garbeam@gmail.com>
parents:
1495
diff
changeset
|
1201 |
snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n); |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1202 |
for(c = nexttiled(m->clients); c; c = nexttiled(c->next)) |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1203 |
resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, False); |
1289 | 1204 |
} |
1205 |
||
1206 |
void |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1207 |
motionnotify(XEvent *e) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1208 |
static Monitor *mon = NULL; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1209 |
Monitor *m; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1210 |
XMotionEvent *ev = &e->xmotion; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1211 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1212 |
if(ev->window != root) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1213 |
return; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1214 |
if((m = recttomon(ev->x_root, ev->y_root, 1, 1)) != mon && mon) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1215 |
selmon = m; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1216 |
focus(NULL); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1217 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1218 |
mon = m; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1219 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1220 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1221 |
void |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1222 |
movemouse(const Arg *arg) { |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1223 |
int x, y, ocx, ocy, nx, ny; |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1224 |
Client *c; |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1225 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1226 |
XEvent ev; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1227 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1228 |
if(!(c = selmon->sel)) |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1229 |
return; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1230 |
restack(selmon); |
1334
6f9cf8bcc4a7
applied Martin Hurton's movemouse() patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1333
diff
changeset
|
1231 |
ocx = c->x; |
6f9cf8bcc4a7
applied Martin Hurton's movemouse() patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1333
diff
changeset
|
1232 |
ocy = c->y; |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1233 |
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
1234 |
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1235 |
return; |
1450 | 1236 |
if(!getrootptr(&x, &y)) |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1237 |
return; |
1334
6f9cf8bcc4a7
applied Martin Hurton's movemouse() patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1333
diff
changeset
|
1238 |
do { |
1102
239f5ee65766
pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past
anselm@anselm1
parents:
1101
diff
changeset
|
1239 |
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1240 |
switch(ev.type) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1241 |
case ConfigureRequest: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1242 |
case Expose: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1243 |
case MapRequest: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1244 |
handler[ev.type](&ev); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1245 |
break; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1246 |
case MotionNotify: |
1311
47b3dbd9a7d3
got rid of compile time xidx configuration, querying mouse pointer instead
Anselm R Garbe <garbeam@gmail.com>
parents:
1310
diff
changeset
|
1247 |
nx = ocx + (ev.xmotion.x - x); |
47b3dbd9a7d3
got rid of compile time xidx configuration, querying mouse pointer instead
Anselm R Garbe <garbeam@gmail.com>
parents:
1310
diff
changeset
|
1248 |
ny = ocy + (ev.xmotion.y - y); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1249 |
if(nx >= selmon->wx && nx <= selmon->wx + selmon->ww |
1464 | 1250 |
&& ny >= selmon->wy && ny <= selmon->wy + selmon->wh) { |
1397
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1251 |
if(abs(selmon->wx - nx) < snap) |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1252 |
nx = selmon->wx; |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1253 |
else if(abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap) |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1254 |
nx = selmon->wx + selmon->ww - WIDTH(c); |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1255 |
if(abs(selmon->wy - ny) < snap) |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1256 |
ny = selmon->wy; |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1257 |
else if(abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap) |
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1258 |
ny = selmon->wy + selmon->wh - HEIGHT(c); |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1259 |
if(!c->isfloating && selmon->lt[selmon->sellt]->arrange |
1464 | 1260 |
&& (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) |
1213
368a80dcf5bd
only snap within window area
Anselm R Garbe <garbeam@gmail.com>
parents:
1212
diff
changeset
|
1261 |
togglefloating(NULL); |
368a80dcf5bd
only snap within window area
Anselm R Garbe <garbeam@gmail.com>
parents:
1212
diff
changeset
|
1262 |
} |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1263 |
if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1264 |
resize(c, nx, ny, c->w, c->h, True); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1265 |
break; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1266 |
} |
1462 | 1267 |
} while(ev.type != ButtonRelease); |
1334
6f9cf8bcc4a7
applied Martin Hurton's movemouse() patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1333
diff
changeset
|
1268 |
XUngrabPointer(dpy, CurrentTime); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1269 |
if((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1270 |
sendmon(c, m); |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1271 |
selmon = m; |
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1272 |
focus(NULL); |
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1273 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1274 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1275 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1276 |
Client * |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1277 |
nexttiled(Client *c) { |
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1278 |
for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1279 |
return c; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1280 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1281 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1282 |
void |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1283 |
pop(Client *c) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1284 |
detach(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1285 |
attach(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1286 |
focus(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1287 |
arrange(c->mon); |
1430 | 1288 |
} |
1289 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1290 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1291 |
propertynotify(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1292 |
Client *c; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1293 |
Window trans; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1294 |
XPropertyEvent *ev = &e->xproperty; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1295 |
|
1385
85a8eff4c123
fix of typo, thx to Enno Gottox Boland
Premysl Hruby <dfenze@gmail.com>
parents:
1383
diff
changeset
|
1296 |
if((ev->window == root) && (ev->atom == XA_WM_NAME)) |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1297 |
updatestatus(); |
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1298 |
else if(ev->state == PropertyDelete) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1299 |
return; /* ignore */ |
1430 | 1300 |
else if((c = wintoclient(ev->window))) { |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1301 |
switch(ev->atom) { |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1302 |
default: break; |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1303 |
case XA_WM_TRANSIENT_FOR: |
1526
64eb02a74f2b
applied Hiltjo's tiny cleanup patch, thanks!
Anselm R Garbe <anselm@garbe.us>
parents:
1525
diff
changeset
|
1304 |
if(!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) && |
1527
406003e3a01f
applied Hiltjo's tiny cleanup fix
Anselm R Garbe <anselm@garbe.us>
parents:
1526
diff
changeset
|
1305 |
(c->isfloating = (wintoclient(trans)) != NULL)) |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1306 |
arrange(c->mon); |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1307 |
break; |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1308 |
case XA_WM_NORMAL_HINTS: |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1309 |
updatesizehints(c); |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1310 |
break; |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1311 |
case XA_WM_HINTS: |
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1312 |
updatewmhints(c); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1313 |
drawbars(); |
1093
5170cc8c078e
made restack, drawbar also Monitor-related only
Anselm R Garbe <garbeam@gmail.com>
parents:
1092
diff
changeset
|
1314 |
break; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1315 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1316 |
if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1317 |
updatetitle(c); |
1482
d4137ac1d940
also update title if the client is on an unfocused monitor
Anselm R Garbe <garbeam@gmail.com>
parents:
1480
diff
changeset
|
1318 |
if(c == c->mon->sel) |
1483
63e19dad219c
another small optimisation
Anselm R Garbe <garbeam@gmail.com>
parents:
1482
diff
changeset
|
1319 |
drawbar(c->mon); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1320 |
} |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1321 |
if(ev->atom == netatom[NetWMWindowType]) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1322 |
updatewindowtype(c); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1323 |
} |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1324 |
} |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1325 |
|
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1326 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1327 |
quit(const Arg *arg) { |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1328 |
running = False; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1329 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1330 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1331 |
Monitor * |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1332 |
recttomon(int x, int y, int w, int h) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1333 |
Monitor *m, *r = selmon; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1334 |
int a, area = 0; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1335 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1336 |
for(m = mons; m; m = m->next) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1337 |
if((a = INTERSECT(x, y, w, h, m)) > area) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1338 |
area = a; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1339 |
r = m; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1340 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1341 |
return r; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1342 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1343 |
|
1070
dc37f0e022f7
implemented reapply for re-applying the tagging rules during runtime, Mod-r
Anselm R. Garbe <garbeam@gmail.com>
parents:
1067
diff
changeset
|
1344 |
void |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1345 |
resize(Client *c, int x, int y, int w, int h, Bool interact) { |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1346 |
if(applysizehints(c, &x, &y, &w, &h, interact)) |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1347 |
resizeclient(c, x, y, w, h); |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1348 |
} |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1349 |
|
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1350 |
void |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1351 |
resizeclient(Client *c, int x, int y, int w, int h) { |
1024
17a935c3017f
removed two spaces reported by Soleen
Anselm R. Garbe <garbeam@gmail.com>
parents:
1023
diff
changeset
|
1352 |
XWindowChanges wc; |
1090
09f1bf0e12ee
resize handles offscreen issues
Anselm R Garbe <garbeam@gmail.com>
parents:
1089
diff
changeset
|
1353 |
|
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1354 |
c->oldx = c->x; c->x = wc.x = x; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1355 |
c->oldy = c->y; c->y = wc.y = y; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1356 |
c->oldw = c->w; c->w = wc.width = w; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1357 |
c->oldh = c->h; c->h = wc.height = h; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1358 |
wc.border_width = c->bw; |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1359 |
XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1360 |
configure(c); |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1361 |
XSync(dpy, False); |
990 | 1362 |
} |
1363 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1364 |
void |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1365 |
resizemouse(const Arg *arg) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1366 |
int ocx, ocy; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1367 |
int nw, nh; |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1368 |
Client *c; |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1369 |
Monitor *m; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1370 |
XEvent ev; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1371 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1372 |
if(!(c = selmon->sel)) |
1270
262ee84a2fdb
integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?)
Anselm R Garbe <garbeam@gmail.com>
parents:
1269
diff
changeset
|
1373 |
return; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1374 |
restack(selmon); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1375 |
ocx = c->x; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1376 |
ocy = c->y; |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1377 |
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
1464 | 1378 |
None, cursor[CurResize], CurrentTime) != GrabSuccess) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1379 |
return; |
1152
960659820908
renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value
Anselm R Garbe <garbeam@gmail.com>
parents:
1151
diff
changeset
|
1380 |
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); |
1335
83da51dfedd3
applied Martin Hurtons resizemouse patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1334
diff
changeset
|
1381 |
do { |
1337
c4ecef7983b8
Martin Hurtons typo fix
Anselm R Garbe <garbeam@gmail.com>
parents:
1336
diff
changeset
|
1382 |
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1383 |
switch(ev.type) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1384 |
case ConfigureRequest: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1385 |
case Expose: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1386 |
case MapRequest: |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1387 |
handler[ev.type](&ev); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1388 |
break; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1389 |
case MotionNotify: |
1380 | 1390 |
nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); |
1391 |
nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1392 |
if(c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1393 |
&& c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) |
1464 | 1394 |
{ |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1395 |
if(!c->isfloating && selmon->lt[selmon->sellt]->arrange |
1464 | 1396 |
&& (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) |
1213
368a80dcf5bd
only snap within window area
Anselm R Garbe <garbeam@gmail.com>
parents:
1212
diff
changeset
|
1397 |
togglefloating(NULL); |
1183
b20561489ffb
applied yiyus fgeom patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1182
diff
changeset
|
1398 |
} |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1399 |
if(!selmon->lt[selmon->sellt]->arrange || c->isfloating) |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1400 |
resize(c, c->x, c->y, nw, nh, True); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1401 |
break; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1402 |
} |
1462 | 1403 |
} while(ev.type != ButtonRelease); |
1335
83da51dfedd3
applied Martin Hurtons resizemouse patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1334
diff
changeset
|
1404 |
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); |
83da51dfedd3
applied Martin Hurtons resizemouse patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1334
diff
changeset
|
1405 |
XUngrabPointer(dpy, CurrentTime); |
83da51dfedd3
applied Martin Hurtons resizemouse patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1334
diff
changeset
|
1406 |
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1407 |
if((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1408 |
sendmon(c, m); |
1428
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1409 |
selmon = m; |
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1410 |
focus(NULL); |
2245e2b88983
applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC
Anselm R Garbe <garbeam@gmail.com>
parents:
1427
diff
changeset
|
1411 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1412 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1413 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1414 |
void |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1415 |
restack(Monitor *m) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1416 |
Client *c; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1417 |
XEvent ev; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1418 |
XWindowChanges wc; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1419 |
|
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1420 |
drawbar(m); |
1412
2bc44743117e
some restack fixes, still odd behavior if n>1 on unmanaging clients
Anselm R Garbe <anselm@garbe.us>
parents:
1411
diff
changeset
|
1421 |
if(!m->sel) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1422 |
return; |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1423 |
if(m->sel->isfloating || !m->lt[m->sellt]->arrange) |
1412
2bc44743117e
some restack fixes, still odd behavior if n>1 on unmanaging clients
Anselm R Garbe <anselm@garbe.us>
parents:
1411
diff
changeset
|
1424 |
XRaiseWindow(dpy, m->sel->win); |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1425 |
if(m->lt[m->sellt]->arrange) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1426 |
wc.stack_mode = Below; |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1427 |
wc.sibling = m->barwin; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1428 |
for(c = m->stack; c; c = c->snext) |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1429 |
if(!c->isfloating && ISVISIBLE(c)) { |
1183
b20561489ffb
applied yiyus fgeom patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1182
diff
changeset
|
1430 |
XConfigureWindow(dpy, c->win, CWSibling|CWStackMode, &wc); |
b20561489ffb
applied yiyus fgeom patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1182
diff
changeset
|
1431 |
wc.sibling = c->win; |
b20561489ffb
applied yiyus fgeom patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1182
diff
changeset
|
1432 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1433 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1434 |
XSync(dpy, False); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1435 |
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1436 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1437 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1438 |
void |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
1439 |
run(void) { |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
1440 |
XEvent ev; |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1441 |
/* main event loop */ |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
1442 |
XSync(dpy, False); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1443 |
while(running && !XNextEvent(dpy, &ev)) |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1444 |
if(handler[ev.type]) |
1462 | 1445 |
handler[ev.type](&ev); /* call handler */ |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
1446 |
} |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
1447 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1448 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1449 |
scan(void) { |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
1450 |
unsigned int i, num; |
1330
06677766e7aa
applied Martin Hurton's scan() patch with slight modifications
Anselm R Garbe <garbeam@gmail.com>
parents:
1329
diff
changeset
|
1451 |
Window d1, d2, *wins = NULL; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1452 |
XWindowAttributes wa; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1453 |
|
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1454 |
if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1455 |
for(i = 0; i < num; i++) { |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1456 |
if(!XGetWindowAttributes(dpy, wins[i], &wa) |
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
1457 |
|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1458 |
continue; |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1459 |
if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState) |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1460 |
manage(wins[i], &wa); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1461 |
} |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1462 |
for(i = 0; i < num; i++) { /* now the transients */ |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1463 |
if(!XGetWindowAttributes(dpy, wins[i], &wa)) |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1464 |
continue; |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1465 |
if(XGetTransientForHint(dpy, wins[i], &d1) |
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
1466 |
&& (wa.map_state == IsViewable || getstate(wins[i]) == IconicState)) |
1087
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1467 |
manage(wins[i], &wa); |
197bfedb953c
removed Monitor->root, since we do not support classical multihead
Anselm R Garbe <garbeam@gmail.com>
parents:
1086
diff
changeset
|
1468 |
} |
1330
06677766e7aa
applied Martin Hurton's scan() patch with slight modifications
Anselm R Garbe <garbeam@gmail.com>
parents:
1329
diff
changeset
|
1469 |
if(wins) |
06677766e7aa
applied Martin Hurton's scan() patch with slight modifications
Anselm R Garbe <garbeam@gmail.com>
parents:
1329
diff
changeset
|
1470 |
XFree(wins); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1471 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1472 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1473 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1474 |
void |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1475 |
sendmon(Client *c, Monitor *m) { |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1476 |
if(c->mon == m) |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1477 |
return; |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1478 |
unfocus(c, True); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1479 |
detach(c); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1480 |
detachstack(c); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1481 |
c->mon = m; |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1482 |
c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1483 |
attach(c); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1484 |
attachstack(c); |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1485 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1486 |
arrange(NULL); |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1487 |
} |
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1488 |
|
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
1489 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1490 |
setclientstate(Client *c, long state) { |
1447 | 1491 |
long data[] = { state, None }; |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1492 |
|
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1493 |
XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1494 |
PropModeReplace, (unsigned char *)data, 2); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1495 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1496 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1497 |
Bool |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1498 |
sendevent(Client *c, Atom proto) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1499 |
int n; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1500 |
Atom *protocols; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1501 |
Bool exists = False; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1502 |
XEvent ev; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1503 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1504 |
if(XGetWMProtocols(dpy, c->win, &protocols, &n)) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1505 |
while(!exists && n--) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1506 |
exists = protocols[n] == proto; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1507 |
XFree(protocols); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1508 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1509 |
if(exists) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1510 |
ev.type = ClientMessage; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1511 |
ev.xclient.window = c->win; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1512 |
ev.xclient.message_type = wmatom[WMProtocols]; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1513 |
ev.xclient.format = 32; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1514 |
ev.xclient.data.l[0] = proto; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1515 |
ev.xclient.data.l[1] = CurrentTime; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1516 |
XSendEvent(dpy, c->win, False, NoEventMask, &ev); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1517 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1518 |
return exists; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1519 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1520 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1521 |
void |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1522 |
setfocus(Client *c) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1523 |
if(!c->neverfocus) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1524 |
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1525 |
sendevent(c, wmatom[WMTakeFocus]); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1526 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1527 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1528 |
void |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1529 |
setfullscreen(Client *c, Bool fullscreen) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1530 |
if(fullscreen) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1531 |
XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1532 |
PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1533 |
c->isfullscreen = True; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1534 |
c->oldstate = c->isfloating; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1535 |
c->oldbw = c->bw; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1536 |
c->bw = 0; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1537 |
c->isfloating = True; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1538 |
resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1539 |
XRaiseWindow(dpy, c->win); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1540 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1541 |
else { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1542 |
XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1543 |
PropModeReplace, (unsigned char*)0, 0); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1544 |
c->isfullscreen = False; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1545 |
c->isfloating = c->oldstate; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1546 |
c->bw = c->oldbw; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1547 |
c->x = c->oldx; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1548 |
c->y = c->oldy; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1549 |
c->w = c->oldw; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1550 |
c->h = c->oldh; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1551 |
resizeclient(c, c->x, c->y, c->w, c->h); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1552 |
arrange(c->mon); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1553 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1554 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1555 |
|
1289 | 1556 |
void |
1557 |
setlayout(const Arg *arg) { |
|
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1558 |
if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) |
1397
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
1559 |
selmon->sellt ^= 1; |
1502
15761ac5e2f1
applied Ryan Zheng's patch and re-releasing 5.7.2
Anselm R Garbe <anselm@garbe.us>
parents:
1500
diff
changeset
|
1560 |
if(arg && arg->v) |
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1561 |
selmon->lt[selmon->sellt] = (Layout *)arg->v; |
1502
15761ac5e2f1
applied Ryan Zheng's patch and re-releasing 5.7.2
Anselm R Garbe <anselm@garbe.us>
parents:
1500
diff
changeset
|
1562 |
strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1563 |
if(selmon->sel) |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1564 |
arrange(selmon); |
1289 | 1565 |
else |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1566 |
drawbar(selmon); |
1289 | 1567 |
} |
1568 |
||
1224
47496de04028
applied Gottox bitmask + void *arg patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1223
diff
changeset
|
1569 |
/* arg > 1.0 will set mfact absolutly */ |
1160
bf37ef388dd6
revival of mfact and setmfact
Anselm R Garbe <garbeam@gmail.com>
parents:
1159
diff
changeset
|
1570 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1571 |
setmfact(const Arg *arg) { |
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1572 |
float f; |
1220 | 1573 |
|
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
1574 |
if(!arg || !selmon->lt[selmon->sellt]->arrange) |
1220 | 1575 |
return; |
1400
a5312d498a58
some minor fixes regarding the new xinerama support
Anselm R Garbe <anselm@garbe.us>
parents:
1399
diff
changeset
|
1576 |
f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1577 |
if(f < 0.1 || f > 0.9) |
1224
47496de04028
applied Gottox bitmask + void *arg patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1223
diff
changeset
|
1578 |
return; |
1400
a5312d498a58
some minor fixes regarding the new xinerama support
Anselm R Garbe <anselm@garbe.us>
parents:
1399
diff
changeset
|
1579 |
selmon->mfact = f; |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1580 |
arrange(selmon); |
1220 | 1581 |
} |
1582 |
||
1583 |
void |
|
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1584 |
setup(void) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1585 |
XSetWindowAttributes wa; |
1114 | 1586 |
|
1478
cf5bb4e72804
added merged patch of anydot and Neale
Anselm R Garbe <garbeam@gmail.com>
parents:
1477
diff
changeset
|
1587 |
/* clean up any zombies immediately */ |
cf5bb4e72804
added merged patch of anydot and Neale
Anselm R Garbe <garbeam@gmail.com>
parents:
1477
diff
changeset
|
1588 |
sigchld(0); |
cf5bb4e72804
added merged patch of anydot and Neale
Anselm R Garbe <garbeam@gmail.com>
parents:
1477
diff
changeset
|
1589 |
|
1114 | 1590 |
/* init screen */ |
1591 |
screen = DefaultScreen(dpy); |
|
1592 |
root = RootWindow(dpy, screen); |
|
1275
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1593 |
initfont(font); |
1148
d49ff154375f
some experimental state DO NOT USE THIS, I plan to have a nicer interface to change geometries
Anselm R Garbe <garbeam@gmail.com>
parents:
1147
diff
changeset
|
1594 |
sw = DisplayWidth(dpy, screen); |
d49ff154375f
some experimental state DO NOT USE THIS, I plan to have a nicer interface to change geometries
Anselm R Garbe <garbeam@gmail.com>
parents:
1147
diff
changeset
|
1595 |
sh = DisplayHeight(dpy, screen); |
1275
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1596 |
bh = dc.h = dc.font.height + 2; |
1190
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1597 |
updategeom(); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1598 |
/* init atoms */ |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1599 |
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1600 |
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1601 |
wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1602 |
wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1603 |
netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1604 |
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1605 |
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); |
1514
2a8d8d41e50b
applied Sylvain Laurent's EWMH fullscreen state patch, simplified his patch a bit
anselm@garbe.us
parents:
1511
diff
changeset
|
1606 |
netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1607 |
netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1608 |
netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1609 |
netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1610 |
/* init cursors */ |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1611 |
cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1612 |
cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1613 |
cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1614 |
/* init appearance */ |
1275
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1615 |
dc.norm[ColBorder] = getcolor(normbordercolor); |
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1616 |
dc.norm[ColBG] = getcolor(normbgcolor); |
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1617 |
dc.norm[ColFG] = getcolor(normfgcolor); |
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1618 |
dc.sel[ColBorder] = getcolor(selbordercolor); |
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1619 |
dc.sel[ColBG] = getcolor(selbgcolor); |
e121660425a0
removed font and color definitions
Anselm R Garbe <garbeam@gmail.com>
parents:
1273
diff
changeset
|
1620 |
dc.sel[ColFG] = getcolor(selfgcolor); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1621 |
dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen)); |
1389 | 1622 |
dc.gc = XCreateGC(dpy, root, 0, NULL); |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1623 |
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1624 |
if(!dc.font.set) |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1625 |
XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1626 |
/* init bars */ |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1627 |
updatebars(); |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
1628 |
updatestatus(); |
1114 | 1629 |
/* EWMH support per view */ |
1630 |
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, |
|
1631 |
PropModeReplace, (unsigned char *) netatom, NetLast); |
|
1632 |
/* select for events */ |
|
1403 | 1633 |
wa.cursor = cursor[CurNormal]; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1634 |
wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1635 |
|EnterWindowMask|LeaveWindowMask|StructureNotifyMask|PropertyChangeMask; |
1114 | 1636 |
XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa); |
1637 |
XSelectInput(dpy, root, wa.event_mask); |
|
1060
9df583e2c03c
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!
Anselm R. Garbe <garbeam@gmail.com>
parents:
1059
diff
changeset
|
1638 |
grabkeys(); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1639 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1640 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1641 |
void |
1393
deaa276abac1
applied Marc Andre Tanners showhide patch, the removal of ntiled
Anselm R Garbe <garbeam@gmail.com>
parents:
1392
diff
changeset
|
1642 |
showhide(Client *c) { |
1356
d2658eac8ff9
I prefer doing the check in showhide
Anselm R Garbe <garbeam@gmail.com>
parents:
1355
diff
changeset
|
1643 |
if(!c) |
d2658eac8ff9
I prefer doing the check in showhide
Anselm R Garbe <garbeam@gmail.com>
parents:
1355
diff
changeset
|
1644 |
return; |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1645 |
if(ISVISIBLE(c)) { /* show clients top down */ |
1355
9172f2200001
applied Donald Chai's showhide patch in slightly modified ways
Anselm R Garbe <garbeam@gmail.com>
parents:
1354
diff
changeset
|
1646 |
XMoveWindow(dpy, c->win, c->x, c->y); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1647 |
if((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1648 |
resize(c, c->x, c->y, c->w, c->h, False); |
1393
deaa276abac1
applied Marc Andre Tanners showhide patch, the removal of ntiled
Anselm R Garbe <garbeam@gmail.com>
parents:
1392
diff
changeset
|
1649 |
showhide(c->snext); |
1356
d2658eac8ff9
I prefer doing the check in showhide
Anselm R Garbe <garbeam@gmail.com>
parents:
1355
diff
changeset
|
1650 |
} |
d2658eac8ff9
I prefer doing the check in showhide
Anselm R Garbe <garbeam@gmail.com>
parents:
1355
diff
changeset
|
1651 |
else { /* hide clients bottom up */ |
1393
deaa276abac1
applied Marc Andre Tanners showhide patch, the removal of ntiled
Anselm R Garbe <garbeam@gmail.com>
parents:
1392
diff
changeset
|
1652 |
showhide(c->snext); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1653 |
XMoveWindow(dpy, c->win, WIDTH(c) * -2, c->y); |
1356
d2658eac8ff9
I prefer doing the check in showhide
Anselm R Garbe <garbeam@gmail.com>
parents:
1355
diff
changeset
|
1654 |
} |
1355
9172f2200001
applied Donald Chai's showhide patch in slightly modified ways
Anselm R Garbe <garbeam@gmail.com>
parents:
1354
diff
changeset
|
1655 |
} |
9172f2200001
applied Donald Chai's showhide patch in slightly modified ways
Anselm R Garbe <garbeam@gmail.com>
parents:
1354
diff
changeset
|
1656 |
|
1371
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1657 |
void |
1478
cf5bb4e72804
added merged patch of anydot and Neale
Anselm R Garbe <garbeam@gmail.com>
parents:
1477
diff
changeset
|
1658 |
sigchld(int unused) { |
1479
31cb815bac41
applied Jukka's sigchld patch
Anselm R Garbe <anselm@garbe.us>
parents:
1478
diff
changeset
|
1659 |
if(signal(SIGCHLD, sigchld) == SIG_ERR) |
31cb815bac41
applied Jukka's sigchld patch
Anselm R Garbe <anselm@garbe.us>
parents:
1478
diff
changeset
|
1660 |
die("Can't install SIGCHLD handler"); |
1371
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1661 |
while(0 < waitpid(-1, NULL, WNOHANG)); |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1662 |
} |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1663 |
|
1355
9172f2200001
applied Donald Chai's showhide patch in slightly modified ways
Anselm R Garbe <garbeam@gmail.com>
parents:
1354
diff
changeset
|
1664 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1665 |
spawn(const Arg *arg) { |
1058
5e34476a3a1c
we check variable == value, and not the other way - the other way is for beginner programmers.
Anselm R. Garbe <garbeam@gmail.com>
parents:
1057
diff
changeset
|
1666 |
if(fork() == 0) { |
1371
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1667 |
if(dpy) |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1668 |
close(ConnectionNumber(dpy)); |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1669 |
setsid(); |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1670 |
execvp(((char **)arg->v)[0], (char **)arg->v); |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1671 |
fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); |
fcdbbc9c39de
re-applied Neale's spawn patch, credited Neale in LICENSE
a@null
parents:
1370
diff
changeset
|
1672 |
perror(" failed"); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1673 |
exit(EXIT_SUCCESS); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1674 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1675 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1676 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1677 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1678 |
tag(const Arg *arg) { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1679 |
if(selmon->sel && arg->ui & TAGMASK) { |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1680 |
selmon->sel->tags = arg->ui & TAGMASK; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1681 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1682 |
arrange(selmon); |
1224
47496de04028
applied Gottox bitmask + void *arg patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1223
diff
changeset
|
1683 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1684 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1685 |
|
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1686 |
void |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1687 |
tagmon(const Arg *arg) { |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
1688 |
if(!selmon->sel || !mons->next) |
1446 | 1689 |
return; |
1445
4ad1f24d38ec
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
Anselm R Garbe <anselm@garbe.us>
parents:
1444
diff
changeset
|
1690 |
sendmon(selmon->sel, dirtomon(arg->i)); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1691 |
} |
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1692 |
|
1257 | 1693 |
int |
1310
1d52b420daa4
reverted uint redefinition
Anselm R Garbe <garbeam@gmail.com>
parents:
1309
diff
changeset
|
1694 |
textnw(const char *text, unsigned int len) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1695 |
XRectangle r; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1696 |
|
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1697 |
if(dc.font.set) { |
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1698 |
XmbTextExtents(dc.font.set, text, len, NULL, &r); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1699 |
return r.width; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1700 |
} |
1088
06fbc117e7d8
removed Monitor->dc, unnecessary
Anselm R Garbe <garbeam@gmail.com>
parents:
1087
diff
changeset
|
1701 |
return XTextWidth(dc.font.xfont, text, len); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1702 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1703 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1704 |
void |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1705 |
tile(Monitor *m) { |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1706 |
unsigned int i, n, h, mw, my, ty; |
1220 | 1707 |
Client *c; |
1708 |
||
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
1709 |
for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); |
1220 | 1710 |
if(n == 0) |
1711 |
return; |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1712 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1713 |
if(n > m->nmaster) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1714 |
mw = m->nmaster ? m->ww * m->mfact : 0; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1715 |
else |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1716 |
mw = m->ww; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1717 |
for(i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1718 |
if(i < m->nmaster) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1719 |
h = (m->wh - my) / (MIN(n, m->nmaster) - i); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1720 |
resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1721 |
my += HEIGHT(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1722 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1723 |
else { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1724 |
h = (m->wh - ty) / (n - i); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1725 |
resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1726 |
ty += HEIGHT(c); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1727 |
} |
1220 | 1728 |
} |
1729 |
||
1730 |
void |
|
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1731 |
togglebar(const Arg *arg) { |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1732 |
selmon->showbar = !selmon->showbar; |
1404
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1733 |
updatebarpos(selmon); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1734 |
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1735 |
arrange(selmon); |
1209
c2dc0bd92158
recent changes, introduced togglebar, changed some defines into variable declarations where possible
Anselm R Garbe <garbeam@gmail.com>
parents:
1207
diff
changeset
|
1736 |
} |
c2dc0bd92158
recent changes, introduced togglebar, changed some defines into variable declarations where possible
Anselm R Garbe <garbeam@gmail.com>
parents:
1207
diff
changeset
|
1737 |
|
c2dc0bd92158
recent changes, introduced togglebar, changed some defines into variable declarations where possible
Anselm R Garbe <garbeam@gmail.com>
parents:
1207
diff
changeset
|
1738 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1739 |
togglefloating(const Arg *arg) { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1740 |
if(!selmon->sel) |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1741 |
return; |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1742 |
selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed; |
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1743 |
if(selmon->sel->isfloating) |
1443
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1744 |
resize(selmon->sel, selmon->sel->x, selmon->sel->y, |
dabe14ecb5e9
interactive resizals allow display dimensions again
Anselm R Garbe <anselm@garbe.us>
parents:
1440
diff
changeset
|
1745 |
selmon->sel->w, selmon->sel->h, False); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1746 |
arrange(selmon); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1747 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1748 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1749 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1750 |
toggletag(const Arg *arg) { |
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1751 |
unsigned int newtags; |
1288 | 1752 |
|
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
1753 |
if(!selmon->sel) |
1338
04c5619da581
applied fix of toggletag by Jan Kaliszewski
Premysl Hruby <dfenze@gmail.com>
parents:
1337
diff
changeset
|
1754 |
return; |
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1755 |
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); |
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1756 |
if(newtags) { |
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1757 |
selmon->sel->tags = newtags; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1758 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1759 |
arrange(selmon); |
1288 | 1760 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1761 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1762 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1763 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1764 |
toggleview(const Arg *arg) { |
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1765 |
unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK); |
1288 | 1766 |
|
1480
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1767 |
if(newtagset) { |
a52339f25d95
applied Jukka's cosmetic patch
Anselm R Garbe <anselm@garbe.us>
parents:
1479
diff
changeset
|
1768 |
selmon->tagset[selmon->seltags] = newtagset; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1769 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1770 |
arrange(selmon); |
1288 | 1771 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1772 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1773 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1774 |
void |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1775 |
unfocus(Client *c, Bool setfocus) { |
1417
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1776 |
if(!c) |
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1777 |
return; |
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1778 |
grabbuttons(c, False); |
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1779 |
XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]); |
1519
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1780 |
if(setfocus) |
72272822ddf2
implemented better fullscreen handling, please test
Anselm R Garbe <anselm@garbe.us>
parents:
1517
diff
changeset
|
1781 |
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); |
1417
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1782 |
} |
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1783 |
|
8d447b21ca19
several other focus fixes, introduced unfocus()
Anselm R Garbe <anselm@garbe.us>
parents:
1416
diff
changeset
|
1784 |
void |
1487
430ebd3c0050
renaming isdestroyed into destroyed
Anselm R Garbe <garbeam@gmail.com>
parents:
1486
diff
changeset
|
1785 |
unmanage(Client *c, Bool destroyed) { |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1786 |
Monitor *m = c->mon; |
990 | 1787 |
XWindowChanges wc; |
1788 |
||
1789 |
/* The server grab construct avoids race conditions. */ |
|
1790 |
detach(c); |
|
1791 |
detachstack(c); |
|
1487
430ebd3c0050
renaming isdestroyed into destroyed
Anselm R Garbe <garbeam@gmail.com>
parents:
1486
diff
changeset
|
1792 |
if(!destroyed) { |
1485
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1793 |
wc.border_width = c->oldbw; |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1794 |
XGrabServer(dpy); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1795 |
XSetErrorHandler(xerrordummy); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1796 |
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */ |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1797 |
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1798 |
setclientstate(c, WithdrawnState); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1799 |
XSync(dpy, False); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1800 |
XSetErrorHandler(xerror); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1801 |
XUngrabServer(dpy); |
3cde8e2dc511
added isdestroyed flag to unmanage
Anselm R Garbe <garbeam@gmail.com>
parents:
1484
diff
changeset
|
1802 |
} |
990 | 1803 |
free(c); |
1430 | 1804 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
1805 |
arrange(m); |
990 | 1806 |
} |
1807 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1808 |
void |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1809 |
unmapnotify(XEvent *e) { |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1810 |
Client *c; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1811 |
XUnmapEvent *ev = &e->xunmap; |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1812 |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1813 |
if((c = wintoclient(ev->window))) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1814 |
if(ev->send_event) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1815 |
setclientstate(c, WithdrawnState); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1816 |
else |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1817 |
unmanage(c, False); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1818 |
} |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1819 |
} |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
1820 |
|
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1821 |
void |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1822 |
updatebars(void) { |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1823 |
Monitor *m; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1824 |
XSetWindowAttributes wa = { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1825 |
.override_redirect = True, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1826 |
.background_pixmap = ParentRelative, |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1827 |
.event_mask = ButtonPressMask|ExposureMask |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
1828 |
}; |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1829 |
for(m = mons; m; m = m->next) { |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1830 |
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen), |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1831 |
CopyFromParent, DefaultVisual(dpy, screen), |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1832 |
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1833 |
XDefineCursor(dpy, m->barwin, cursor[CurNormal]); |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1834 |
XMapRaised(dpy, m->barwin); |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1835 |
} |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1836 |
} |
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1837 |
|
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1838 |
void |
1404
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1839 |
updatebarpos(Monitor *m) { |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1840 |
m->wy = m->my; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1841 |
m->wh = m->mh; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1842 |
if(m->showbar) { |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1843 |
m->wh -= bh; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1844 |
m->by = m->topbar ? m->wy : m->wy + m->wh; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1845 |
m->wy = m->topbar ? m->wy + bh : m->wy; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1846 |
} |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1847 |
else |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1848 |
m->by = -bh; |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1849 |
} |
2fd482e3405b
some more refactoring, bar toggle fixes
Anselm R Garbe <anselm@garbe.us>
parents:
1403
diff
changeset
|
1850 |
|
1492
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
1851 |
Bool |
1190
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1852 |
updategeom(void) { |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1853 |
Bool dirty = False; |
1190
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1854 |
|
1430 | 1855 |
#ifdef XINERAMA |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1856 |
if(XineramaIsActive(dpy)) { |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1857 |
int i, j, n, nn; |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1858 |
Client *c; |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1859 |
Monitor *m; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1860 |
XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1861 |
XineramaScreenInfo *unique = NULL; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1862 |
|
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1863 |
for(n = 0, m = mons; m; m = m->next, n++); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1864 |
/* only consider unique geometries as separate screens */ |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1865 |
if(!(unique = (XineramaScreenInfo *)malloc(sizeof(XineramaScreenInfo) * nn))) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1866 |
die("fatal: could not malloc() %u bytes\n", sizeof(XineramaScreenInfo) * nn); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1867 |
for(i = 0, j = 0; i < nn; i++) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1868 |
if(isuniquegeom(unique, j, &info[i])) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1869 |
memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo)); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1870 |
XFree(info); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1871 |
nn = j; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1872 |
if(n <= nn) { |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1873 |
for(i = 0; i < (nn - n); i++) { /* new monitors available */ |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1874 |
for(m = mons; m && m->next; m = m->next); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1875 |
if(m) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1876 |
m->next = createmon(); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1877 |
else |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1878 |
mons = createmon(); |
1492
62a601261c8b
new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome
Anselm R Garbe <anselm@garbe.us>
parents:
1491
diff
changeset
|
1879 |
} |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1880 |
for(i = 0, m = mons; i < nn && m; m = m->next, i++) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1881 |
if(i >= n |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1882 |
|| (unique[i].x_org != m->mx || unique[i].y_org != m->my |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1883 |
|| unique[i].width != m->mw || unique[i].height != m->mh)) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1884 |
{ |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1885 |
dirty = True; |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1886 |
m->num = i; |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1887 |
m->mx = m->wx = unique[i].x_org; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1888 |
m->my = m->wy = unique[i].y_org; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1889 |
m->mw = m->ww = unique[i].width; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1890 |
m->mh = m->wh = unique[i].height; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1891 |
updatebarpos(m); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1892 |
} |
1311
47b3dbd9a7d3
got rid of compile time xidx configuration, querying mouse pointer instead
Anselm R Garbe <garbeam@gmail.com>
parents:
1310
diff
changeset
|
1893 |
} |
1497
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1894 |
else { /* less monitors available nn < n */ |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1895 |
for(i = nn; i < n; i++) { |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1896 |
for(m = mons; m && m->next; m = m->next); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1897 |
while(m->clients) { |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1898 |
dirty = True; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1899 |
c = m->clients; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1900 |
m->clients = c->next; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1901 |
detachstack(c); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1902 |
c->mon = mons; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1903 |
attach(c); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1904 |
attachstack(c); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1905 |
} |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1906 |
if(m == selmon) |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1907 |
selmon = mons; |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1908 |
cleanupmon(m); |
20de01c5ff82
implemented nn < n case, k-zed please recheck
Anselm R Garbe <anselm@garbe.us>
parents:
1496
diff
changeset
|
1909 |
} |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1910 |
} |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1911 |
free(unique); |
1215
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
1912 |
} |
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
1913 |
else |
1430 | 1914 |
#endif /* XINERAMA */ |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1915 |
/* default monitor setup */ |
1215
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
1916 |
{ |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1917 |
if(!mons) |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1918 |
mons = createmon(); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1919 |
if(mons->mw != sw || mons->mh != sh) { |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1920 |
dirty = True; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1921 |
mons->mw = mons->ww = sw; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1922 |
mons->mh = mons->wh = sh; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1923 |
updatebarpos(mons); |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1924 |
} |
1402
d0721df4028c
changes monitor structure to be a list
Anselm R Garbe <garbeam@gmail.com>
parents:
1401
diff
changeset
|
1925 |
} |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1926 |
if(dirty) { |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1927 |
selmon = mons; |
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1928 |
selmon = wintomon(root); |
1215
840fd59e3141
make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients
Anselm R Garbe <garbeam@gmail.com>
parents:
1213
diff
changeset
|
1929 |
} |
1494
e00cb20da182
implemented different version of updategeom
Anselm R Garbe <anselm@garbe.us>
parents:
1493
diff
changeset
|
1930 |
return dirty; |
1190
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1931 |
} |
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1932 |
|
c8eaba1445a4
removed Geom stuff, introduced updategeom() again, still view is somewhat broken?
Anselm R Garbe <garbeam@gmail.com>
parents:
1188
diff
changeset
|
1933 |
void |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1934 |
updatenumlockmask(void) { |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1935 |
unsigned int i, j; |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1936 |
XModifierKeymap *modmap; |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1937 |
|
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1938 |
numlockmask = 0; |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1939 |
modmap = XGetModifierMapping(dpy); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1940 |
for(i = 0; i < 8; i++) |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1941 |
for(j = 0; j < modmap->max_keypermod; j++) |
1395
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1942 |
if(modmap->modifiermap[i * modmap->max_keypermod + j] |
a2c094196714
next version will be 5.6, shortened some very long lines
Anselm R Garbe <garbeam@gmail.com>
parents:
1393
diff
changeset
|
1943 |
== XKeysymToKeycode(dpy, XK_Num_Lock)) |
1344
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1944 |
numlockmask = (1 << i); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1945 |
XFreeModifiermap(modmap); |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1946 |
} |
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1947 |
|
ba02dda36aee
grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Anselm R Garbe <garbeam@gmail.com>
parents:
1343
diff
changeset
|
1948 |
void |
990 | 1949 |
updatesizehints(Client *c) { |
1950 |
long msize; |
|
1951 |
XSizeHints size; |
|
1952 |
||
1357
33591b7c6bf7
applied XGetWMNormalHints fix
Anselm R Garbe <garbeam@gmail.com>
parents:
1356
diff
changeset
|
1953 |
if(!XGetWMNormalHints(dpy, c->win, &size, &msize)) |
33591b7c6bf7
applied XGetWMNormalHints fix
Anselm R Garbe <garbeam@gmail.com>
parents:
1356
diff
changeset
|
1954 |
/* size is uninitialized, ensure that size.flags aren't used */ |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
1955 |
size.flags = PSize; |
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1956 |
if(size.flags & PBaseSize) { |
990 | 1957 |
c->basew = size.base_width; |
1958 |
c->baseh = size.base_height; |
|
1959 |
} |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1960 |
else if(size.flags & PMinSize) { |
990 | 1961 |
c->basew = size.min_width; |
1962 |
c->baseh = size.min_height; |
|
1963 |
} |
|
1964 |
else |
|
1965 |
c->basew = c->baseh = 0; |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1966 |
if(size.flags & PResizeInc) { |
990 | 1967 |
c->incw = size.width_inc; |
1968 |
c->inch = size.height_inc; |
|
1969 |
} |
|
1970 |
else |
|
1971 |
c->incw = c->inch = 0; |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1972 |
if(size.flags & PMaxSize) { |
990 | 1973 |
c->maxw = size.max_width; |
1974 |
c->maxh = size.max_height; |
|
1975 |
} |
|
1976 |
else |
|
1977 |
c->maxw = c->maxh = 0; |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1978 |
if(size.flags & PMinSize) { |
990 | 1979 |
c->minw = size.min_width; |
1980 |
c->minh = size.min_height; |
|
1981 |
} |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1982 |
else if(size.flags & PBaseSize) { |
990 | 1983 |
c->minw = size.base_width; |
1984 |
c->minh = size.base_height; |
|
1985 |
} |
|
1986 |
else |
|
1987 |
c->minw = c->minh = 0; |
|
1249
1fcb3350609d
applied noviewprev.diff, fix.diff and unusedflags.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1248
diff
changeset
|
1988 |
if(size.flags & PAspect) { |
1466
aa47da304ae2
it's all nsz's hard investigation effort, hail nsz! ;)
Anselm R Garbe <garbeam@gmail.com>
parents:
1464
diff
changeset
|
1989 |
c->mina = (float)size.min_aspect.y / size.min_aspect.x; |
aa47da304ae2
it's all nsz's hard investigation effort, hail nsz! ;)
Anselm R Garbe <garbeam@gmail.com>
parents:
1464
diff
changeset
|
1990 |
c->maxa = (float)size.max_aspect.x / size.max_aspect.y; |
990 | 1991 |
} |
1992 |
else |
|
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
1993 |
c->maxa = c->mina = 0.0; |
990 | 1994 |
c->isfixed = (c->maxw && c->minw && c->maxh && c->minh |
1354
dced80b409d8
applied Martin Hurton's checkotherwm simplification
Anselm R Garbe <garbeam@gmail.com>
parents:
1353
diff
changeset
|
1995 |
&& c->maxw == c->minw && c->maxh == c->minh); |
990 | 1996 |
} |
1997 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
1998 |
void |
990 | 1999 |
updatetitle(Client *c) { |
2000 |
if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) |
|
1345 | 2001 |
gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name); |
1460 | 2002 |
if(c->name[0] == '\0') /* hack to mark broken clients */ |
2003 |
strcpy(c->name, broken); |
|
990 | 2004 |
} |
2005 |
||
1080
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2006 |
void |
1425
120ed5f8018b
fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals
Anselm R Garbe <anselm@garbe.us>
parents:
1424
diff
changeset
|
2007 |
updatestatus(void) { |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
2008 |
if(!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) |
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
2009 |
strcpy(stext, "dwm-"VERSION); |
1398
597063a22a73
experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e
Anselm R Garbe <anselm@garbe.us>
parents:
1397
diff
changeset
|
2010 |
drawbar(selmon); |
1370
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
2011 |
} |
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
2012 |
|
6d6ed7a9183c
applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly
a@null
parents:
1369
diff
changeset
|
2013 |
void |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2014 |
updatewindowtype(Client *c) { |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2015 |
Atom state = getatomprop(c, netatom[NetWMState]); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2016 |
Atom wtype = getatomprop(c, netatom[NetWMWindowType]); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2017 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2018 |
if(state == netatom[NetWMFullscreen]) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2019 |
setfullscreen(c, True); |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2020 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2021 |
if(wtype == netatom[NetWMWindowTypeDialog]) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2022 |
c->isfloating = True; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2023 |
} |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2024 |
|
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2025 |
void |
1080
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2026 |
updatewmhints(Client *c) { |
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2027 |
XWMHints *wmh; |
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2028 |
|
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2029 |
if((wmh = XGetWMHints(dpy, c->win))) { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
2030 |
if(c == selmon->sel && wmh->flags & XUrgencyHint) { |
1309 | 2031 |
wmh->flags &= ~XUrgencyHint; |
2032 |
XSetWMHints(dpy, c->win, wmh); |
|
2033 |
} |
|
1122
6f93af279e0a
fixed urgent hint handling
Anselm R Garbe <garbeam@gmail.com>
parents:
1121
diff
changeset
|
2034 |
else |
6f93af279e0a
fixed urgent hint handling
Anselm R Garbe <garbeam@gmail.com>
parents:
1121
diff
changeset
|
2035 |
c->isurgent = (wmh->flags & XUrgencyHint) ? True : False; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2036 |
if(wmh->flags & InputHint) |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2037 |
c->neverfocus = !wmh->input; |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2038 |
else |
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2039 |
c->neverfocus = False; |
1080
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2040 |
XFree(wmh); |
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2041 |
} |
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2042 |
} |
9bfb57c89407
implemented urgent hint handling (with multihead support)
anselm@aab
parents:
1079
diff
changeset
|
2043 |
|
1104 | 2044 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
2045 |
view(const Arg *arg) { |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
2046 |
if((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) |
1304 | 2047 |
return; |
1397
4498d81938b0
introduction of Monitor for better Xinerama support, work in progress
Anselm R Garbe <anselm@garbe.us>
parents:
1396
diff
changeset
|
2048 |
selmon->seltags ^= 1; /* toggle sel tagset */ |
1327
920833e10274
applied Martin Hurton's view() simplification, not checking arg
Anselm R Garbe <garbeam@gmail.com>
parents:
1326
diff
changeset
|
2049 |
if(arg->ui & TAGMASK) |
1401
8cee6e329111
we need a tagset per monitor, removed tagset declaration from config.h
Anselm R Garbe <anselm@garbe.us>
parents:
1400
diff
changeset
|
2050 |
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2051 |
focus(NULL); |
1500
48c3f87c335d
fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
Anselm R Garbe <anselm@garbe.us>
parents:
1497
diff
changeset
|
2052 |
arrange(selmon); |
1104 | 2053 |
} |
2054 |
||
1430 | 2055 |
Client * |
2056 |
wintoclient(Window w) { |
|
2057 |
Client *c; |
|
2058 |
Monitor *m; |
|
2059 |
||
2060 |
for(m = mons; m; m = m->next) |
|
2061 |
for(c = m->clients; c; c = c->next) |
|
2062 |
if(c->win == w) |
|
2063 |
return c; |
|
2064 |
return NULL; |
|
2065 |
} |
|
2066 |
||
2067 |
Monitor * |
|
2068 |
wintomon(Window w) { |
|
2069 |
int x, y; |
|
2070 |
Client *c; |
|
2071 |
Monitor *m; |
|
2072 |
||
1450 | 2073 |
if(w == root && getrootptr(&x, &y)) |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2074 |
return recttomon(x, y, 1, 1); |
1430 | 2075 |
for(m = mons; m; m = m->next) |
2076 |
if(w == m->barwin) |
|
2077 |
return m; |
|
2078 |
if((c = wintoclient(w))) |
|
2079 |
return c->mon; |
|
1438 | 2080 |
return selmon; |
1430 | 2081 |
} |
2082 |
||
990 | 2083 |
/* There's no way to check accesses to destroyed windows, thus those cases are |
2084 |
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs |
|
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
2085 |
* default error handler, which may call exit. */ |
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
2086 |
int |
990 | 2087 |
xerror(Display *dpy, XErrorEvent *ee) { |
2088 |
if(ee->error_code == BadWindow |
|
2089 |
|| (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch) |
|
2090 |
|| (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable) |
|
2091 |
|| (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable) |
|
2092 |
|| (ee->request_code == X_PolySegment && ee->error_code == BadDrawable) |
|
2093 |
|| (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch) |
|
1186 | 2094 |
|| (ee->request_code == X_GrabButton && ee->error_code == BadAccess) |
990 | 2095 |
|| (ee->request_code == X_GrabKey && ee->error_code == BadAccess) |
2096 |
|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) |
|
2097 |
return 0; |
|
2098 |
fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", |
|
1195
33ba827ee84e
applied nsz's style.diff patch
Anselm R Garbe <garbeam@gmail.com>
parents:
1194
diff
changeset
|
2099 |
ee->request_code, ee->error_code); |
990 | 2100 |
return xerrorxlib(dpy, ee); /* may call exit */ |
2101 |
} |
|
2102 |
||
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
2103 |
int |
1102
239f5ee65766
pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past
anselm@anselm1
parents:
1101
diff
changeset
|
2104 |
xerrordummy(Display *dpy, XErrorEvent *ee) { |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
2105 |
return 0; |
990 | 2106 |
} |
2107 |
||
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
2108 |
/* Startup Error handler to check if another window manager |
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
2109 |
* is already running. */ |
1001
2477f818215c
made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it
arg@suckless.org
parents:
1000
diff
changeset
|
2110 |
int |
1102
239f5ee65766
pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past
anselm@anselm1
parents:
1101
diff
changeset
|
2111 |
xerrorstart(Display *dpy, XErrorEvent *ee) { |
1528
b4f5309d6253
applied Hiltjo's cleanup patch
Anselm R Garbe <anselm@garbe.us>
parents:
1527
diff
changeset
|
2112 |
die("dwm: another window manager is already running\n"); |
996
b4d47b6a8ba8
ordered all functions alphabetically
Anselm R. Garbe <garbeam@gmail.com>
parents:
995
diff
changeset
|
2113 |
return -1; |
990 | 2114 |
} |
2115 |
||
1220 | 2116 |
void |
1260
2d3d08d2dd19
applied anydot's patchset.diff
Anselm R Garbe <garbeam@gmail.com>
parents:
1259
diff
changeset
|
2117 |
zoom(const Arg *arg) { |
1407
4cbf60555bd8
moved clients/stack/sel to Monitor, that's a per monitor structure from now on
Anselm R Garbe <anselm@garbe.us>
parents:
1406
diff
changeset
|
2118 |
Client *c = selmon->sel; |
1220 | 2119 |
|
1448
d012c6babc13
applied Mate's patch, added Mate to LICENSE
Anselm R Garbe <anselm@garbe.us>
parents:
1447
diff
changeset
|
2120 |
if(!selmon->lt[selmon->sellt]->arrange |
1444 | 2121 |
|| (selmon->sel && selmon->sel->isfloating)) |
1227
1f0e2de78c35
s/nextunfloating/nexttiled/, changed zoom() behavior
Anselm R Garbe <garbeam@gmail.com>
parents:
1226
diff
changeset
|
2122 |
return; |
1408
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
2123 |
if(c == nexttiled(selmon->clients)) |
2215f7f11dd9
simplified ISVISBLE and nexttiled
Anselm R Garbe <anselm@garbe.us>
parents:
1407
diff
changeset
|
2124 |
if(!c || !(c = nexttiled(c->next))) |
1220 | 2125 |
return; |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2126 |
pop(c); |
1220 | 2127 |
} |
2128 |
||
1072
5a06b4b69479
merged Christof Musik's Xinerama support patches, though this needs some polishing!
anselm@anselm1
parents:
1071
diff
changeset
|
2129 |
int |
990 | 2130 |
main(int argc, char *argv[]) { |
2131 |
if(argc == 2 && !strcmp("-v", argv[1])) |
|
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2132 |
die("dwm-"VERSION", © 2006-2011 dwm engineers, see LICENSE for details\n"); |
990 | 2133 |
else if(argc != 1) |
1308 | 2134 |
die("usage: dwm [-v]\n"); |
1343
f4707b7bd3a2
reverted some resize() changes, reverted setlocale removal
Anselm R Garbe <garbeam@gmail.com>
parents:
1342
diff
changeset
|
2135 |
if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) |
1387
dbcd0ffca535
applied Gottox' adjustborder removal patch (thanks!)
Anselm R Garbe <garbeam@gmail.com>
parents:
1386
diff
changeset
|
2136 |
fputs("warning: no locale support\n", stderr); |
1389 | 2137 |
if(!(dpy = XOpenDisplay(NULL))) |
1308 | 2138 |
die("dwm: cannot open display\n"); |
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
2139 |
checkotherwm(); |
990 | 2140 |
setup(); |
2141 |
scan(); |
|
997
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
2142 |
run(); |
8e721021e636
some more rearrangements
Anselm R. Garbe <garbeam@gmail.com>
parents:
996
diff
changeset
|
2143 |
cleanup(); |
990 | 2144 |
XCloseDisplay(dpy); |
1539
e2a9bd720b6e
Imported dwm 6.0 from snapshot
Stiletto <blasux@blasux.ru>
parents:
1530
diff
changeset
|
2145 |
return EXIT_SUCCESS; |
990 | 2146 |
} |