comparison gbwm.c @ 3:3726f37deac1

Move config out of the main file
author Atarwn Gard <a@qwa.su>
date Sun, 12 Oct 2025 20:54:34 +0500
parents 3ad7c3ab949e
children f1f332156693
comparison
equal deleted inserted replaced
2:3ad7c3ab949e 3:3726f37deac1
10 #include <string.h> 10 #include <string.h>
11 #include <unistd.h> 11 #include <unistd.h>
12 #include <signal.h> 12 #include <signal.h>
13 #include <sys/wait.h> 13 #include <sys/wait.h>
14 14
15 #define MOD Mod4Mask
16 #define GRID_ROWS 4
17 #define GRID_COLS 7
18
19 // Grid 4 by 7
20 static const char grid_chars[GRID_ROWS][GRID_COLS+1] = {
21 "1234567",
22 "qwertyu",
23 "asdfghj",
24 "zxcvbnm"
25 };
26
27 typedef struct Client Client; 15 typedef struct Client Client;
28 struct Client { 16 struct Client {
29 Window win; 17 Window win;
30 int x, y, w, h; 18 int x, y, w, h;
31 int saved_x, saved_y, saved_w, saved_h; // Saved position before fullscreen 19 int saved_x, saved_y, saved_w, saved_h; // Saved position before fullscreen
45 unsigned int mod; 33 unsigned int mod;
46 KeySym keysym; 34 KeySym keysym;
47 void (*func)(const Arg *); 35 void (*func)(const Arg *);
48 const Arg arg; 36 const Arg arg;
49 } Key; 37 } Key;
50
51 // Configuration
52 static const int padding = 8;
53 static const int border_width = 2;
54 static const char *col_border_normal = "#444444";
55 static const char *col_border_focused = "#4a90e2";
56 static const char *col_bg = "#000000";
57 static const char *col_fg = "#ffffff";
58 static const char *col_sel = "#4a90e2";
59 static const char *overlay_font = "monospace:size=48";
60 38
61 static Display *dpy; 39 static Display *dpy;
62 static Window root; 40 static Window root;
63 static Client *workspaces[9] = {NULL}; // 9 workspaces 41 static Client *workspaces[9] = {NULL}; // 9 workspaces
64 static int current_ws = 0; 42 static int current_ws = 0;
95 static void updateborder(Client *c); 73 static void updateborder(Client *c);
96 static void find_next_free_cell(int *out_r, int *out_c); 74 static void find_next_free_cell(int *out_r, int *out_c);
97 static void switchws(const Arg *arg); 75 static void switchws(const Arg *arg);
98 static void movewin_to_ws(const Arg *arg); 76 static void movewin_to_ws(const Arg *arg);
99 77
100 // Commands 78 #include "config.h"
101 static const char *termcmd[] = { "alacritty", NULL };
102 static const char *menucmd[] = { "dmenu_run", NULL };
103 static const char *scrotcmd[] = { "scrot", NULL };
104
105 // Key bindings
106 static Key keys[] = {
107 /* modifier key function argument */
108 { MOD, XK_t, enter_overlay, {0} },
109 { MOD, XK_Return, spawn, {.v = termcmd} },
110 { MOD, XK_p, spawn, {.v = menucmd} },
111 { 0, XK_Print, spawn, {.v = scrotcmd} },
112 { MOD, XK_q, killclient, {0} },
113 { MOD, XK_f, toggle_fullscreen, {0} },
114 { MOD, XK_Tab, cycle_focus, {0} },
115 { MOD|ShiftMask, XK_q, quit, {0} },
116
117 // Workspaces
118 { MOD, XK_1, switchws, {.i = 0} },
119 { MOD, XK_2, switchws, {.i = 1} },
120 { MOD, XK_3, switchws, {.i = 2} },
121 { MOD, XK_4, switchws, {.i = 3} },
122 { MOD, XK_5, switchws, {.i = 4} },
123 { MOD, XK_6, switchws, {.i = 5} },
124 { MOD, XK_7, switchws, {.i = 6} },
125 { MOD, XK_8, switchws, {.i = 7} },
126 { MOD, XK_9, switchws, {.i = 8} },
127
128 // Move window to workspace
129 { MOD|ShiftMask, XK_1, movewin_to_ws, {.i = 0} },
130 { MOD|ShiftMask, XK_2, movewin_to_ws, {.i = 1} },
131 { MOD|ShiftMask, XK_3, movewin_to_ws, {.i = 2} },
132 { MOD|ShiftMask, XK_4, movewin_to_ws, {.i = 3} },
133 { MOD|ShiftMask, XK_5, movewin_to_ws, {.i = 4} },
134 { MOD|ShiftMask, XK_6, movewin_to_ws, {.i = 5} },
135 { MOD|ShiftMask, XK_7, movewin_to_ws, {.i = 6} },
136 { MOD|ShiftMask, XK_8, movewin_to_ws, {.i = 7} },
137 { MOD|ShiftMask, XK_9, movewin_to_ws, {.i = 8} },
138 };
139 79
140 // Event handlers 80 // Event handlers
141 static void buttonpress(XEvent *e) { 81 static void buttonpress(XEvent *e) {
142 for (Client *c = workspaces[current_ws]; c; c = c->next) 82 for (Client *c = workspaces[current_ws]; c; c = c->next)
143 if (c->win == e->xbutton.subwindow) { 83 if (c->win == e->xbutton.subwindow) {