2022-02-21 14:41:02 +00:00
/* See LICENSE file for copyright and license details. */
/* appearance */
static const unsigned int borderpx = 1 ; /* border pixel of windows */
static const unsigned int snap = 32 ; /* snap pixel */
static const unsigned int gappih = 10 ; /* horiz inner gap between windows */
static const unsigned int gappiv = 10 ; /* vert inner gap between windows */
static const unsigned int gappoh = 10 ; /* horiz outer gap between windows and screen edge */
static const unsigned int gappov = 10 ; /* vert outer gap between windows and screen edge */
static int smartgaps = 1 ; /* 1 means no outer gap when there is only one window */
static const int showbar = 1 ; /* 0 means no bar */
static const int topbar = 1 ; /* 0 means bottom bar */
2022-02-22 08:10:48 +00:00
static const int focusonwheel = 0 ;
2022-02-22 12:47:55 +00:00
static const int swallowfloating = 0 ; /* 1 means swallow floating windows by default */
static const char * fonts [ ] = { " Hack Nerd Font:size=11 " } ;
static const char dmenufont [ ] = " Hack Nerd Font:size=11 " ;
2022-02-21 14:41:02 +00:00
static const char col_gray1 [ ] = " #222222 " ;
static const char col_gray2 [ ] = " #444444 " ;
static const char col_gray3 [ ] = " #bbbbbb " ;
static const char col_gray4 [ ] = " #eeeeee " ;
static const char col_cyan [ ] = " #005577 " ;
2022-03-06 21:03:50 +00:00
static const char col_green [ ] = " #384f00 " ;
2022-02-22 08:43:11 +00:00
static const char col_urgborder [ ] = " #ff0000 " ;
2022-02-22 08:04:09 +00:00
static const unsigned int baralpha = 0xd0 ;
static const unsigned int borderalpha = OPAQUE ;
2022-02-21 14:41:02 +00:00
static const char * colors [ ] [ 3 ] = {
2022-03-06 22:32:16 +00:00
/* fg bg border */
2022-03-06 21:03:50 +00:00
[ SchemeNorm ] = { col_gray3 , col_gray1 , col_gray2 } ,
[ SchemeSelMon ] = { col_gray4 , col_green , col_cyan } , // Colorscheme for the bar on the selected monitor
[ SchemeSel ] = { col_gray4 , col_cyan , col_cyan } ,
[ SchemeUrg ] = { col_gray4 , col_cyan , col_urgborder } ,
2022-02-21 14:41:02 +00:00
} ;
2022-02-22 08:04:09 +00:00
static const unsigned int alphas [ ] [ 3 ] = {
2022-03-06 22:32:16 +00:00
/* fg bg border */
[ SchemeNorm ] = { OPAQUE , baralpha , borderalpha } ,
[ SchemeSelMon ] = { OPAQUE , baralpha , borderalpha } ,
[ SchemeSel ] = { OPAQUE , baralpha , borderalpha } ,
[ SchemeUrg ] = { OPAQUE , baralpha , borderalpha } ,
2022-02-22 08:04:09 +00:00
} ;
2022-02-21 14:41:02 +00:00
2022-02-22 08:51:59 +00:00
/* staticstatus */
2022-03-06 21:03:50 +00:00
static const int statmonval = 1 ;
2022-02-22 08:51:59 +00:00
2022-02-21 14:41:02 +00:00
/* tagging */
static const char * tags [ ] = { " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " } ;
static const Rule rules [ ] = {
/* xprop(1):
* WM_CLASS ( STRING ) = instance , class
* WM_NAME ( STRING ) = title
*/
2022-06-26 19:15:59 +00:00
/* class instance title tags mask isfloating isterminal noswallow monitor */
{ " st-256color " , NULL , NULL , 0 , 0 , 1 , 0 , - 1 } ,
{ " steam_app_1182480 " , NULL , NULL , 0 , 1 , 0 , 0 , - 1 } , /* battlefield 4 origin launcher */
{ NULL , NULL , " cordis " , 0 , 0 , 0 , 1 , - 1 } , /* cordis / dev electron apps */
{ NULL , NULL , " Event Tester " , 0 , 0 , 0 , 1 , - 1 } , /* xev */
{ " Xephyr " , NULL , NULL , 0 , 0 , 0 , 1 , - 1 } , /* lightdm --test-mode */
2022-02-21 14:41:02 +00:00
} ;
/* layout(s) */
static const float mfact = 0.55 ; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1 ; /* number of clients in master area */
static const int resizehints = 1 ; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1 ; /* 1 will force focus on the fullscreen window */
# define FORCE_VSPLIT 1 /* nrowgrid layout: force two clients to always split vertically */
# include "vanitygaps.c"
static const Layout layouts [ ] = {
/* symbol arrange function */
{ " []= " , tile } , /* first entry is default */
{ " [M] " , monocle } ,
{ " [@] " , spiral } ,
{ " [ \\ ] " , dwindle } ,
// { "H[]", deck },
// { "TTT", bstack },
// { "===", bstackhoriz },
// { "HHH", grid },
// { "###", nrowgrid },
// { "---", horizgrid },
// { ":::", gaplessgrid },
// { "|M|", centeredmaster },
// { ">M>", centeredfloatingmaster },
{ " ><> " , NULL } , /* no layout function means floating behavior */
// { NULL, NULL },
} ;
/* key definitions */
# define MODKEY Mod1Mask
# define TAGKEYS(KEY,TAG) \
{ MODKEY , KEY , view , { . ui = 1 < < TAG } } , \
{ MODKEY | ControlMask , KEY , toggleview , { . ui = 1 < < TAG } } , \
{ MODKEY | ShiftMask , KEY , tag , { . ui = 1 < < TAG } } , \
{ MODKEY | ControlMask | ShiftMask , KEY , toggletag , { . ui = 1 < < TAG } } ,
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
# define SHCMD(cmd) { .v = (const char*[]){ " / bin / sh", "-c", cmd, NULL } }
/* commands */
static char dmenumon [ 2 ] = " 0 " ; /* component of dmenucmd, manipulated in spawn() */
static const char * dmenucmd [ ] = { " dmenu_run " , " -m " , dmenumon , " -fn " , dmenufont , " -nb " , col_gray1 , " -nf " , col_gray3 , " -sb " , col_cyan , " -sf " , col_gray4 , NULL } ;
static const char * termcmd [ ] = { " st " , NULL } ;
2022-06-26 19:15:59 +00:00
static const char * browsercmd [ ] = { " chromium " , NULL } ;
2022-03-06 21:03:50 +00:00
static const char * discord_sandboxed_mute_cmd [ ] = { " pkill " , " --oldest " , " -SIGUSR2 " , " discord-sand " , NULL } ; /* For some reason, if we do discord-sandboxed, pgrep doesn't find the program */
2022-06-26 19:15:59 +00:00
static const char * screenshotcmd [ ] = { " ~/scripts/screenshot.sh " } ;
2022-02-21 14:41:02 +00:00
2022-04-25 05:11:33 +00:00
// See /usr/include/X11/keysymdef.h for a list of keycodes
2022-02-21 14:41:02 +00:00
static Key keys [ ] = {
/* modifier key function argument */
{ MODKEY , XK_p , spawn , { . v = dmenucmd } } ,
2022-06-26 19:15:59 +00:00
{ MODKEY , XK_b , spawn , { . v = browsercmd } } ,
2022-02-21 14:41:02 +00:00
{ MODKEY | ShiftMask , XK_Return , spawn , { . v = termcmd } } ,
2022-03-06 21:03:50 +00:00
{ NULL , XK_Pause , spawn , { . v = discord_sandboxed_mute_cmd } } ,
2022-04-25 05:11:33 +00:00
{ NULL , XK_Print , spawn , { . v = screenshotcmd } } ,
2022-03-06 21:03:50 +00:00
2022-06-26 19:15:59 +00:00
{ MODKEY | ShiftMask , XK_c , killclient , { 0 } } ,
{ MODKEY | ShiftMask , XK_b , togglebar , { 0 } } ,
2022-02-21 14:41:02 +00:00
{ MODKEY , XK_j , focusstack , { . i = + 1 } } ,
{ MODKEY , XK_k , focusstack , { . i = - 1 } } ,
{ MODKEY , XK_i , incnmaster , { . i = + 1 } } ,
{ MODKEY , XK_d , incnmaster , { . i = - 1 } } ,
{ MODKEY , XK_h , setmfact , { . f = - 0.05 } } ,
{ MODKEY , XK_l , setmfact , { . f = + 0.05 } } ,
{ MODKEY , XK_Return , zoom , { 0 } } ,
// Vanity Gaps Modifiers
2022-06-26 19:15:59 +00:00
// { MODKEY|Mod4Mask, XK_u, incrgaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_u, incrgaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_i, incrigaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_i, incrigaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_o, incrogaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_o, incrogaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_6, incrihgaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_6, incrihgaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_7, incrivgaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_7, incrivgaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_8, incrohgaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_8, incrohgaps, {.i = -1 } },
// { MODKEY|Mod4Mask, XK_9, incrovgaps, {.i = +1 } },
// { MODKEY|Mod4Mask|ShiftMask, XK_9, incrovgaps, {.i = -1 } },
2022-02-21 14:41:02 +00:00
{ MODKEY | Mod4Mask , XK_0 , togglegaps , { 0 } } ,
{ MODKEY | Mod4Mask | ShiftMask , XK_0 , defaultgaps , { 0 } } ,
{ MODKEY , XK_Tab , view , { 0 } } ,
2022-06-26 19:15:59 +00:00
2022-02-21 14:41:02 +00:00
// Layouts
{ MODKEY , XK_t , setlayout , { . v = & layouts [ 0 ] } } , // []= tile
{ MODKEY , XK_f , setlayout , { . v = & layouts [ 1 ] } } , // ><> float
{ MODKEY , XK_m , setlayout , { . v = & layouts [ 2 ] } } , // [M] monocle
{ MODKEY , XK_r , setlayout , { . v = & layouts [ 3 ] } } , // [@] spiral
{ MODKEY | ShiftMask , XK_r , setlayout , { . v = & layouts [ 4 ] } } , // [\] dwindle
{ MODKEY , XK_space , setlayout , { 0 } } ,
{ MODKEY | ShiftMask , XK_space , togglefloating , { 0 } } ,
{ MODKEY , XK_0 , view , { . ui = ~ 0 } } ,
{ MODKEY | ShiftMask , XK_0 , tag , { . ui = ~ 0 } } ,
2022-03-06 21:03:50 +00:00
{ MODKEY , XK_comma , focusmon , { . i = + 1 } } ,
{ MODKEY , XK_period , focusmon , { . i = - 1 } } ,
{ MODKEY | ShiftMask , XK_comma , tagmon , { . i = + 1 } } ,
{ MODKEY | ShiftMask , XK_period , tagmon , { . i = - 1 } } ,
2022-02-21 14:41:02 +00:00
// Tags (similar to workspaces)
TAGKEYS ( XK_1 , 0 )
TAGKEYS ( XK_2 , 1 )
TAGKEYS ( XK_3 , 2 )
TAGKEYS ( XK_4 , 3 )
TAGKEYS ( XK_5 , 4 )
TAGKEYS ( XK_6 , 5 )
TAGKEYS ( XK_7 , 6 )
TAGKEYS ( XK_8 , 7 )
TAGKEYS ( XK_9 , 8 )
{ MODKEY | ShiftMask , XK_q , quit , { 0 } } ,
2022-02-22 07:59:54 +00:00
{ MODKEY | ControlMask | ShiftMask , XK_q , quit , { 1 } } ,
2022-02-21 14:41:02 +00:00
} ;
/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons [ ] = {
/* click event mask button function argument */
{ ClkLtSymbol , 0 , Button1 , setlayout , { 0 } } ,
{ ClkLtSymbol , 0 , Button3 , setlayout , { . v = & layouts [ 2 ] } } ,
// Removed by notitle patch
// { ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText , 0 , Button2 , spawn , { . v = termcmd } } ,
{ ClkClientWin , MODKEY , Button1 , movemouse , { 0 } } ,
{ ClkClientWin , MODKEY , Button2 , togglefloating , { 0 } } ,
{ ClkClientWin , MODKEY , Button3 , resizemouse , { 0 } } ,
{ ClkTagBar , 0 , Button1 , view , { 0 } } ,
{ ClkTagBar , 0 , Button3 , toggleview , { 0 } } ,
{ ClkTagBar , MODKEY , Button1 , tag , { 0 } } ,
{ ClkTagBar , MODKEY , Button3 , toggletag , { 0 } } ,
} ;