-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathutil.h
69 lines (50 loc) · 2.19 KB
/
util.h
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
/* evilwm - minimalist window manager for X11
* Copyright (C) 1999-2022 Ciaran Anscomb <[email protected]>
* see README for license and other details. */
#ifndef EVILWM_UTIL_H_
#define EVILWM_UTIL_H_
#include <X11/X.h>
#include <X11/Xdefs.h>
// Required for interpreting MWM hints
#define PROP_MWM_HINTS_ELEMENTS 3
#define MWM_HINTS_DECORATIONS (1L << 1)
#define MWM_DECOR_ALL (1L << 0)
#define MWM_DECOR_BORDER (1L << 1)
typedef struct {
unsigned long flags;
unsigned long functions;
unsigned long decorations;
} PropMwmHints;
// EWMH hints use these definitions, so for simplicity my functions will too:
#define NET_WM_STATE_REMOVE 0 /* remove/unset property */
#define NET_WM_STATE_ADD 1 /* add/set property */
#define NET_WM_STATE_TOGGLE 2 /* toggle property */
// Grab pointer using specified cursor. Report button press/release, and
// pointer motion events.
#define grab_pointer(w, curs) \
(XGrabPointer(display.dpy, w, False, \
ButtonPressMask|ButtonReleaseMask|PointerMotionMask, \
GrabModeAsync, GrabModeAsync, \
None, curs, CurrentTime) == GrabSuccess)
// Move the mouse pointer.
#define setmouse(w, x, y) XWarpPointer(display.dpy, None, w, 0, 0, 0, 0, x, y)
// Error handler interaction
extern int ignore_xerror;
extern volatile Window initialising;
// Spawn a subprocess (usually xterm or similar)
void spawn(const char *const cmd[]);
// Global X11 error handler. Various actions interact with this.
int handle_xerror(Display *dsply, XErrorEvent *e);
// Simplify calls to XQueryPointer(), and make destination pointers optional
Bool get_pointer_root_xy(Window w, int *x, int *y); // Wraps XQueryPointer()
// Wraps XGetWindowProperty()
void *get_property(Window w, Atom property, Atom req_type, unsigned long *nitems_return);
// Determine the normal border size for a window.
int window_normal_border(Window w);
// Alternative to XNextEvent(). Unlike XNextEvent, if a signal arrives,
// interruptibleXNextEvent will return zero.
int interruptibleXNextEvent(XEvent *event);
// Remove enter events from the queue, preserving only the last one
// corresponding to "except"s parent.
void discard_enter_events(struct client *except);
#endif