kbgwm

sucklessy floating window manager
git clone https://git.neuralcrash.com/kbgwm.git
Log | Files | Refs | README | LICENSE

config.h (2874B)


      1 /*
      2  * kbgwm, a sucklessy floating window manager
      3  * Copyright (c) 2020-2021, Kebigon <git@kebigon.xyz>
      4  *
      5  * Permission to use, copy, modify, and/or distribute this software for any
      6  * purpose with or without fee is hereby granted, provided that the above
      7  * copyright notice and this permission notice appear in all copies.
      8  *
      9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16  */
     17 
     18 #pragma once
     19 
     20 #include "client.h"
     21 #include "types.h"
     22 #include <X11/keysym.h>
     23 
     24 #define MODKEY XCB_MOD_MASK_1
     25 #define SHIFT XCB_MOD_MASK_SHIFT
     26 
     27 #define FOCUS_COLOR 0xFF0000
     28 #define UNFOCUS_COLOR 0x005577
     29 
     30 #define BORDER_WIDTH 1
     31 
     32 /*
     33  * Number of workspaces
     34  * They will be numbered from 0 to NB_WORKSPACES-1
     35  */
     36 #define NB_WORKSPACES 10
     37 
     38 static const char *termcmd[] = {"xterm", NULL};
     39 static const char *menucmd[] = {"dmenu_run", NULL};
     40 
     41 // clang-format off
     42 #define WORKSPACEKEYS(KEY,WORKSPACE) \
     43 	{ MODKEY|XCB_MOD_MASK_SHIFT, KEY, workspace_send,   {.i = WORKSPACE} }, \
     44 	{ MODKEY,                    KEY, workspace_change, {.i = WORKSPACE} },
     45 
     46 const struct Key keys[] = {
     47 	{ MODKEY,         XK_Return,    start,                  { .cmd = termcmd } },
     48 	{ MODKEY,         XK_p,         start,                  { .cmd = menucmd } },
     49 	{ MODKEY,         XK_Page_Up,   workspace_previous,     { 0 } },
     50 	{ MODKEY,         XK_Page_Down, workspace_next,         { 0 } },
     51 	{ MODKEY | SHIFT, XK_Tab,       focus_next,             { .b = true } },
     52 	{ MODKEY,         XK_Tab,       focus_next,             { .b = false } },
     53 	{ MODKEY,         XK_q,         client_kill,            { 0 } },
     54 	{ MODKEY | SHIFT, XK_q,         quit,                   { 0 } },
     55 	{ MODKEY,         XK_x,         client_toggle_maximize, { 0 } },
     56 	WORKSPACEKEYS(XK_Home, 0)
     57 	WORKSPACEKEYS(XK_1, 0)
     58 	WORKSPACEKEYS(XK_2, 1)
     59 	WORKSPACEKEYS(XK_3, 2)
     60 	WORKSPACEKEYS(XK_4, 3)
     61 	WORKSPACEKEYS(XK_5, 4)
     62 	WORKSPACEKEYS(XK_6, 5)
     63 	WORKSPACEKEYS(XK_7, 6)
     64 	WORKSPACEKEYS(XK_8, 7)
     65 	WORKSPACEKEYS(XK_9, 8)
     66 	WORKSPACEKEYS(XK_0, 9)
     67 	WORKSPACEKEYS(XK_End, 9)
     68 };
     69 
     70 const struct Button buttons[] = {
     71 	{ MODKEY, XCB_BUTTON_INDEX_1, mousemove,   { 0 } },
     72 	{ MODKEY, XCB_BUTTON_INDEX_3, mouseresize, { 0 } },
     73 };
     74 // clang-format on
     75 
     76 const uint_least8_t keys_length = LENGTH(keys);
     77 const uint_least8_t buttons_length = LENGTH(buttons);
     78 const uint_least8_t workspaces_length = NB_WORKSPACES;
     79 const uint_least8_t border_width = BORDER_WIDTH;
     80 const uint_least8_t border_width_x2 = (border_width << 1);