aboutsummaryrefslogtreecommitdiffstats
path: root/src/defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/defs.h')
-rw-r--r--src/defs.h222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/defs.h b/src/defs.h
new file mode 100644
index 0000000..95c3ea1
--- /dev/null
+++ b/src/defs.h
@@ -0,0 +1,222 @@
+#pragma once
+#include <X11/Xlib.h>
+#define VERSION "tilite ver. 1.0"
+#define AUTHOR "(C) Lance Borden 2026"
+#define LICENSE "Licensed under the GPL v3.0"
+
+#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 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_WS_CHANGE 0
+#define TYPE_WS_MOVE 1
+/* fn/cmd */
+#define TYPE_FUNC 2
+#define TYPE_CMD 3
+
+#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"
+
+typedef enum { DRAG_NONE, DRAG_MOVE, DRAG_RESIZE, DRAG_SWAP } DragMode;
+typedef void (*event_t)(XEvent *);
+
+typedef union {
+ const char **cmd;
+ void (*fn)(void);
+ int ws;
+} action_t;
+
+typedef struct {
+ int mods;
+ KeySym keysym;
+ KeyCode keycode;
+ action_t action;
+ int type;
+} binding_t;
+
+typedef struct client_t {
+ Window win;
+ int x, y, w, h;
+ int orig_x, orig_y, orig_w, orig_h;
+ int custom_stack_height;
+ int ws;
+ Bool fixed;
+ Bool floating;
+ Bool fullscreen;
+ Bool mapped;
+ pid_t pid;
+ struct client_t *next;
+} client_t;
+
+typedef struct {
+ int modkey;
+ int gaps;
+ int border_width;
+ long border_foc_col;
+ long border_ufoc_col;
+ long border_swap_col;
+ float master_width;
+ int motion_throttle;
+ int resize_master_amt;
+ int resize_stack_amt;
+ int snap_distance;
+ int n_binds;
+ int move_window_amt;
+ int resize_window_amt;
+ Bool new_win_focus;
+ Bool warp_cursor;
+ Bool floating_on_top;
+ Bool new_win_master;
+ binding_t binds[MAX_ITEMS];
+ char *to_run[MAX_ITEMS];
+} config_t;
+
+typedef struct {
+ const char *name;
+ void (*fn)(void);
+} command_t;
+
+typedef enum {
+ ATOM_NET_ACTIVE_WINDOW,
+ ATOM_NET_CURRENT_DESKTOP,
+ ATOM_NET_SUPPORTED,
+ ATOM_NET_WM_STATE,
+ ATOM_NET_WM_STATE_FULLSCREEN,
+ ATOM_WM_STATE,
+ ATOM_NET_WM_WINDOW_TYPE,
+ ATOM_NET_WORKAREA,
+ ATOM_WM_DELETE_WINDOW,
+ ATOM_NET_WM_STRUT,
+ ATOM_NET_WM_STRUT_PARTIAL,
+ ATOM_NET_SUPPORTING_WM_CHECK,
+ ATOM_NET_WM_NAME,
+ ATOM_UTF8_STRING,
+ ATOM_NET_WM_DESKTOP,
+ ATOM_NET_CLIENT_LIST,
+ ATOM_NET_FRAME_EXTENTS,
+ ATOM_NET_NUMBER_OF_DESKTOPS,
+ ATOM_NET_DESKTOP_NAMES,
+ ATOM_NET_WM_PID,
+ ATOM_NET_WM_WINDOW_TYPE_DOCK,
+ ATOM_NET_WM_WINDOW_TYPE_UTILITY,
+ ATOM_NET_WM_WINDOW_TYPE_DIALOG,
+ ATOM_NET_WM_WINDOW_TYPE_TOOLBAR,
+ ATOM_NET_WM_WINDOW_TYPE_SPLASH,
+ ATOM_NET_WM_WINDOW_TYPE_POPUP_MENU,
+ ATOM_NET_WM_WINDOW_TYPE_MENU,
+ ATOM_NET_WM_WINDOW_TYPE_DROPDOWN_MENU,
+ ATOM_NET_WM_WINDOW_TYPE_TOOLTIP,
+ ATOM_NET_WM_WINDOW_TYPE_NOTIFICATION,
+ ATOM_NET_WM_STATE_MODAL,
+ ATOM_WM_PROTOCOLS,
+ ATOM_COUNT
+} atom_type_t;
+
+const char **build_argv(const char *cmd);
+client_t *add_client(Window w, int ws);
+void apply_fullscreen(client_t *c, Bool on);
+void change_workspace(int ws);
+int check_parent(pid_t p, pid_t c);
+int clean_mask(int mask);
+void close_focused(void);
+client_t *find_client(Window w);
+Window find_toplevel(Window w);
+void focus_next(void);
+void focus_prev(void);
+pid_t get_parent_process(pid_t c);
+pid_t get_pid(Window w);
+int get_workspace_for_window(Window w);
+void grab_button(Mask button, Mask mod, Window w, Bool owner_events,
+ Mask masks);
+void grab_keys(void);
+void hdl_button(XEvent *xev);
+void hdl_button_release(XEvent *xev);
+void hdl_client_msg(XEvent *xev);
+void hdl_config_ntf(XEvent *xev);
+void hdl_config_req(XEvent *xev);
+void hdl_dummy(XEvent *xev);
+void hdl_destroy_ntf(XEvent *xev);
+void hdl_keypress(XEvent *xev);
+void hdl_mapping_ntf(XEvent *xev);
+void hdl_map_req(XEvent *xev);
+void hdl_motion(XEvent *xev);
+void hdl_property_ntf(XEvent *xev);
+void hdl_unmap_ntf(XEvent *xev);
+void init_defaults(void);
+Bool is_child_proc(pid_t pid1, pid_t pid2);
+void move_master_next(void);
+void move_master_prev(void);
+void move_to_workspace(int ws);
+void move_win_down(void);
+void move_win_left(void);
+void move_win_right(void);
+void move_win_up(void);
+void other_wm(void);
+int other_wm_err(Display *d, XErrorEvent *ee);
+long parse_col(const char *hex);
+void quit(void);
+void resize_master_add(void);
+void resize_master_sub(void);
+void resize_stack_add(void);
+void resize_stack_sub(void);
+void resize_win_down(void);
+void resize_win_left(void);
+void resize_win_right(void);
+void resize_win_up(void);
+void run(void);
+void scan_existing_windows(void);
+void select_input(Window w, Mask masks);
+void send_wm_take_focus(Window w);
+void setup(void);
+void setup_atoms(void);
+void set_frame_extents(Window w);
+void set_input_focus(client_t *c, Bool raise_win, Bool warp);
+void set_wm_state(Window w, long state);
+int snap_coordinate(int pos, int size, int screen_size, int snap_dist);
+void spawn(const char *const *argv);
+void swap_clients(client_t *a, client_t *b);
+void tile(void);
+void toggle_floating(void);
+void toggle_floating_global(void);
+void toggle_fullscreen(void);
+void toggle_monocle(void);
+void update_borders(void);
+void update_client_desktop_properties(void);
+void update_modifier_masks(void);
+void update_net_client_list(void);
+void update_struts(void);
+void update_workarea(void);
+void warp_cursor(client_t *c);
+Bool window_has_ewmh_state(Window w, Atom state);
+void window_set_ewmh_state(Window w, Atom state, Bool add);
+int xerr(Display *d, XErrorEvent *ee);
+void xev_case(XEvent *xev);