diff options
| -rw-r--r-- | docs/sxwm-dev.md | 1 | ||||
| -rw-r--r-- | src/defs.h | 119 | ||||
| -rw-r--r-- | src/extern.h | 33 | ||||
| -rw-r--r-- | src/parser.c | 1 | ||||
| -rw-r--r-- | src/sxwm.c | 1 |
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 @@ -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[] = { @@ -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); |
