summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/sxwm-dev.md1
-rw-r--r--src/defs.h119
-rw-r--r--src/extern.h33
-rw-r--r--src/parser.c1
-rw-r--r--src/sxwm.c1
5 files changed, 74 insertions, 81 deletions
diff --git a/docs/sxwm-dev.md b/docs/sxwm-dev.md
index 7fb7e93..c5ae662 100644
--- a/docs/sxwm-dev.md
+++ b/docs/sxwm-dev.md
@@ -23,6 +23,7 @@
| `linux/limits.h` | Linux specific limits for various data types |
| | |
| `defs.h` | Project structs, macros, constants |
+| `extern.h` | External functions to call to control wm |
| `parser.h` | Config file parser components |
## sxwm.c
diff --git a/src/defs.h b/src/defs.h
index 1815147..060c3d8 100644
--- a/src/defs.h
+++ b/src/defs.h
@@ -5,55 +5,44 @@
#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 MF_MIN 0.05f
+#define MF_MAX 0.95f
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define UDIST(a, b) abs((int)(a) - (int)(b))
+#define CLAMP(x, lo, hi) (((x) < (lo)) ? (lo) : ((x) > (hi)) ? (hi) : (x))
-#define MARGIN (gaps + BORDER_WIDTH)
-#define OUT_IN (2 * BORDER_WIDTH)
-#define MF_MIN 0.05f
-#define MF_MAX 0.95f
-#define MAX_MONITORS 32
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define LENGTH(X) (sizeof X / sizeof X[0])
-#define UDIST(a, b) abs((int)(a) - (int)(b))
-#define CLAMP(x, lo, hi) (((x) < (lo)) ? (lo) : ((x) > (hi)) ? (hi) : (x))
-#define MAX_CLIENTS 99
-#define MAX_SCRATCHPADS 32
-#define MIN_WINDOW_SIZE 20
-#define MAX_ITEMS 256
-#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}
-
-#define PATH_MAX 4096
+#define MAX_MONITORS 32
+#define MAX_BINDS 256
+#define MAX_CLIENTS 99
+#define MAX_SCRATCHPADS 32
+#define MAX_ITEMS 256
+#define MIN_WINDOW_SIZE 20
+#define PATH_MAX 4096
/* workspaces */
-#define TYPE_FUNC 2
-#define TYPE_WS_CHANGE 0
-#define TYPE_WS_MOVE 1
+#define TYPE_WS_CHANGE 0
+#define TYPE_WS_MOVE 1
/* fn/cmd */
-#define TYPE_FUNC 2
-#define TYPE_CMD 3
+#define TYPE_FUNC 2
+#define TYPE_CMD 3
/* scratchpads*/
-#define TYPE_SP_REMOVE 4
-#define TYPE_SP_TOGGLE 5
-#define TYPE_SP_CREATE 6
+#define TYPE_SP_REMOVE 4
+#define TYPE_SP_TOGGLE 5
+#define TYPE_SP_CREATE 6
-#define NUM_WORKSPACES 9
-#define WORKSPACE_NAMES \
- "1" "\0"\
- "2" "\0"\
- "3" "\0"\
- "4" "\0"\
- "5" "\0"\
- "6" "\0"\
- "7" "\0"\
- "8" "\0"\
- "9" "\0"
+#define NUM_WORKSPACES 9
+#define WORKSPACE_NAMES \
+ "1""\0"\
+ "2""\0"\
+ "3""\0"\
+ "4""\0"\
+ "5""\0"\
+ "6""\0"\
+ "7""\0"\
+ "8""\0"\
+ "9""\0"
-#define MAX_BINDS 256
typedef enum { DRAG_NONE, DRAG_MOVE, DRAG_RESIZE, DRAG_SWAP } DragMode;
typedef void (*EventHandler)(XEvent *);
@@ -61,8 +50,8 @@ typedef void (*EventHandler)(XEvent *);
typedef union {
const char **cmd;
void (*fn)(void);
- int ws; /* workspace */
- int sp; /* scratchpad */
+ int ws; /* workspace */
+ int sp; /* scratchpad */
} Action;
typedef struct {
@@ -120,6 +109,11 @@ typedef struct {
} Config;
typedef struct {
+ const char *name;
+ void (*fn)(void);
+} CommandEntry;
+
+typedef struct {
int x, y;
int w, h;
int reserve_left, reserve_right;
@@ -130,40 +124,3 @@ typedef struct {
Client *client;
Bool enabled;
} Scratchpad;
-
-typedef struct {
- const char *name;
- void (*fn)(void);
-} CommandEntry;
-
-extern void centre_window(void);
-extern void close_focused(void);
-extern void dec_gaps(void);
-extern void focus_next(void);
-extern void focus_prev(void);
-extern void focus_next_mon(void);
-extern void focus_prev_mon(void);
-extern void move_next_mon(void);
-extern void move_prev_mon(void);
-extern void inc_gaps(void);
-extern void move_master_next(void);
-extern void move_master_prev(void);
-extern void move_win_down(void);
-extern void move_win_left(void);
-extern void move_win_right(void);
-extern void move_win_up(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 resize_stack_add(void);
-extern void resize_stack_sub(void);
-extern void resize_win_down(void);
-extern void resize_win_left(void);
-extern void resize_win_right(void);
-extern void resize_win_up(void);
-extern void switch_previous_workspace(void);
-extern void toggle_floating(void);
-extern void toggle_floating_global(void);
-extern void toggle_fullscreen(void);
diff --git a/src/extern.h b/src/extern.h
new file mode 100644
index 0000000..3816c5f
--- /dev/null
+++ b/src/extern.h
@@ -0,0 +1,33 @@
+#pragma once
+
+extern void centre_window(void);
+extern void close_focused(void);
+extern void dec_gaps(void);
+extern void focus_next(void);
+extern void focus_prev(void);
+extern void focus_next_mon(void);
+extern void focus_prev_mon(void);
+extern void move_next_mon(void);
+extern void move_prev_mon(void);
+extern void inc_gaps(void);
+extern void move_master_next(void);
+extern void move_master_prev(void);
+extern void move_win_down(void);
+extern void move_win_left(void);
+extern void move_win_right(void);
+extern void move_win_up(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 resize_stack_add(void);
+extern void resize_stack_sub(void);
+extern void resize_win_down(void);
+extern void resize_win_left(void);
+extern void resize_win_right(void);
+extern void resize_win_up(void);
+extern void switch_previous_workspace(void);
+extern void toggle_floating(void);
+extern void toggle_floating_global(void);
+extern void toggle_fullscreen(void);
diff --git a/src/parser.c b/src/parser.c
index 1748759..ea0e789 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -14,6 +14,7 @@
#endif
#include "parser.h"
+#include "extern.h"
#include "defs.h"
static const CommandEntry call_table[] = {
diff --git a/src/sxwm.c b/src/sxwm.c
index 1242ce0..f9f7b65 100644
--- a/src/sxwm.c
+++ b/src/sxwm.c
@@ -33,6 +33,7 @@
#include <X11/Xcursor/Xcursor.h>
#include "defs.h"
+#include "extern.h"
#include "parser.h"
Client *add_client(Window w, int ws);