summaryrefslogtreecommitdiff
path: root/src/defs.h
blob: c9ca97bfce3f94a89d54d1fbffa449990b6fdcc4 (plain)
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
#ifndef DEFS_H
#define DEFS_H

#include <stdint.h>
#include <X11/Xlib.h>

#define SXWM_VERSION    "sxwm ver. 0.1.1"
#define SXWM_AUTHOR     "(C) Abhinav Prasai 2025"
#define SXWM_LICINFO    "See LICENSE for more info"

#define ALT     Mod1Mask
#define SUPER   Mod4Mask
#define SHIFT   ShiftMask

#define LENGTH(X) (sizeof X / sizeof X[0])
#define BIND(mod, key, cmdstr)  { (mod), XK_##key, { cmdstr }, 0 }
#define CALL(mod, key, fnptr)   { (mod), XK_##key, { .fn = fnptr }, 1 }

#define UDIST(a,b) abs((int)(a) - (int)(b))
#define SNAP_EDGE(pos, size, bound)                           \
	do {                                                      \
		if (UDIST(pos, 0) < SNAP_DISTANCE)                    \
		pos = 0;                                          \
		else if (UDIST(pos, (bound) - (size)) < SNAP_DISTANCE)\
		pos = (bound) - (size);                           \
	} while (0)

#define MAXCLIENTS	64

enum { DRAG_NONE, DRAG_MOVE, DRAG_RESIZE } drag_mode = DRAG_NONE;
typedef void (*EventHandler)(XEvent *);

typedef union {
    const char **cmd;
    void (*fn)(void);
} Action;

typedef struct {
    unsigned int mods;
    KeySym keysym;
    Action action;
    int is_func;
} Binding;

typedef struct Client{
	Window win;
	uint x, y, h, w;
	Bool floating;
	struct Client *next;
} Client;

#endif