about summary refs log tree commit diff stats
path: root/wm.h
blob: 68c30da2d24f226affb5098f2992aeec430c88c4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
 * See LICENSE file for license details.
 */

#include "config.h"
#include "draw.h"
#include "util.h"

#include <X11/Xutil.h>

/* atoms */
enum { NetSupported, NetWMName, NetLast };

/* cursor */
enum { CurNormal, CurResize, CurMove, CurInput, CurLast };

/* rects */
enum { RFloat, RGrid, RLast };

typedef struct Client Client;
typedef struct Key Key;

struct Client {
	char name[256];
	char tag[256];
	unsigned int border;
	Bool fixedsize;
	Window win;
	Window trans;
	Window title;
	XSizeHints size;
	XRectangle r[RLast];
	Client *next;
	Client *snext;
};

struct Key {
	unsigned long mod;
	KeySym keysym;
	void (*func)(char *arg);
	char *arg;
};

extern Display *dpy;
extern Window root, barwin;
extern Atom net_atom[NetLast];
extern Cursor cursor[CurLast];
extern XRectangle rect, barrect;
extern Bool running;
extern Bool grid;
extern void (*handler[LASTEvent]) (XEvent *);

extern int screen, sel_screen;
extern char *bartext, tag[256];

extern Brush brush;
extern Client *clients;

/* bar.c */
extern void draw_bar();

/* cmd.c */
extern void run(char *arg);
extern void quit(char *arg);

/* client.c */
extern void manage(Window w, XWindowAttributes *wa);
void unmanage(Client *c);
extern Client * getclient(Window w);

/* key.c */
extern void update_keys();
extern void keypress(XEvent *e);

/* wm.c */
extern int error_handler(Display *dpy, XErrorEvent *error);
early JDK 1.6 versions, because it assumes a reparenting window manager. Possible workarounds are using JDK 1.4 (which doesn't contain the XToolkit/XAWT backend) or setting the environment variable .BR AWT_TOOLKIT=MToolkit (to use the older Motif backend instead) or running .B xprop -root -f _NET_WM_NAME 32a -set _NET_WM_NAME LG3D or .B wmname LG3D (to pretend that a non-reparenting window manager is running that the XToolkit/XAWT backend can recognize) or when using OpenJDK setting the environment variable .BR _JAVA_AWT_WM_NONREPARENTING=1 . .P GTK 2.10.9+ versions contain a broken .BR Save\-As file dialog implementation, which requests to reconfigure its window size in an endless loop. However, its window is still respondable during this state, so you can simply ignore the flicker until a new GTK version appears, which will fix this bug, approximately GTK 2.10.12+ versions.