summaryrefslogtreecommitdiff
path: root/src/defs.h
blob: e7f114499d7179dd9dbc831ac3469d248c9f27e8 (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
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* See LICENSE for more information on use */
#pragma once
#define SXWM_VERSION	"sxwm ver. 1.2"
#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 MARGIN (gaps + BORDER_WIDTH)
#define OUT_IN (2 * BORDER_WIDTH)
#define MF_MIN 0.05f
#define MF_MAX 0.95f
#define LENGTH(X) (sizeof X / sizeof X[0])
#define BIND(mod, key, cmdstr) { (mod), XK_##key, { cmdstr }, False }
#define CALL(mod, key, fnptr) { (mod), XK_##key, { .fn = fnptr }, True }
#define CMD(name, ...) 						\
	const char *name[] = { __VA_ARGS__, NULL }


#include <X11/Xlib.h>
#define INIT_WORKSPACE \
void change_ws1(void);\
void moveto_ws1(void);\
void change_ws2(void);\
void moveto_ws2(void);\
void change_ws3(void);\
void moveto_ws3(void);\
void change_ws4(void);\
void moveto_ws4(void);\
void change_ws5(void);\
void moveto_ws5(void);\
void change_ws6(void);\
void moveto_ws6(void);\
void change_ws7(void);\
void moveto_ws7(void);\
void change_ws8(void);\
void moveto_ws8(void);\
void change_ws9(void);\
void moveto_ws9(void);\
void change_ws1(void) { change_workspace(0); update_net_client_list(); }	\
void moveto_ws1(void) { move_to_workspace(0); update_net_client_list(); }\
void change_ws2(void) { change_workspace(1); update_net_client_list(); }	\
void moveto_ws2(void) { move_to_workspace(1); update_net_client_list(); }\
void change_ws3(void) { change_workspace(2); update_net_client_list(); }	\
void moveto_ws3(void) { move_to_workspace(2); update_net_client_list(); }\
void change_ws4(void) { change_workspace(3); update_net_client_list(); }	\
void moveto_ws4(void) { move_to_workspace(3); update_net_client_list(); }\
void change_ws5(void) { change_workspace(4); update_net_client_list(); }	\
void moveto_ws5(void) { move_to_workspace(4); update_net_client_list(); }\
void change_ws6(void) { change_workspace(5); update_net_client_list(); }	\
void moveto_ws6(void) { move_to_workspace(5); update_net_client_list(); }\
void change_ws7(void) { change_workspace(6); update_net_client_list(); }	\
void moveto_ws7(void) { move_to_workspace(6); update_net_client_list(); }\
void change_ws8(void) { change_workspace(7); update_net_client_list(); }	\
void moveto_ws8(void) { move_to_workspace(7); update_net_client_list(); }\
void change_ws9(void) { change_workspace(8); update_net_client_list(); }	\
void moveto_ws9(void) { move_to_workspace(8); update_net_client_list(); }\

#define UDIST(a,b) abs((int)(a) - (int)(b))
#define MAXCLIENTS	99
#define MAXGAPS		100

typedef enum {
	DRAG_NONE,
	DRAG_MOVE,
	DRAG_RESIZE,
	DRAG_SWAP
} DragMode;

typedef void (*EventHandler)(XEvent *);

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

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

typedef struct Client{
	Window win;
	int x, y, h, w;
	int orig_x, orig_y, orig_w, orig_h;
	int mon;
	Bool fixed;
	Bool floating;
	Bool fullscreen;
	struct Client *next;
} Client;

typedef struct {
	int modkey;
	int gaps;
	int border_width;
	long border_foc_col;
	long border_ufoc_col;
	long border_swap_col;
	int master_width;
	int resize_master_amt;
	int snap_distance;
	int bindsn;
	Binding binds[256];
} Config;

typedef struct {
	int x, y;
	int w, h;
} Monitor;

extern void close_focused(void);
extern void dec_gaps(void);
extern void focus_next(void);
extern void focus_prev(void);
extern void inc_gaps(void);
extern void move_master_next(void);
extern void move_master_prev(void);
extern long parse_col(const char *hex);
extern void quit(void);
extern void reload_config(void);
extern void resize_master_add(void);
extern void resize_master_sub(void);
extern void toggle_floating(void);
extern void toggle_floating_global(void);
extern void toggle_fullscreen(void);