dwm

my build of dwm
git clone git://git.hanetzok.net/dwm
Log | Files | Refs | README | LICENSE

config.def.h (11509B)


      1 /* See LICENSE file for copyright and license details. */
      2 
      3 #include <X11/XF86keysym.h>
      4 
      5 /* appearance */
      6 static const unsigned int borderpx  = 2;        /* border pixel of windows */
      7 static const unsigned int snap      = 32;       /* snap pixel */
      8 static const unsigned int systraypinning = 0;   /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
      9 static const unsigned int systrayonleft = 0;    /* 0: systray in the right corner, >0: systray on left of status text */
     10 static const unsigned int systrayspacing = 2;   /* systray spacing */
     11 static const int systraypinningfailfirst = 1;   /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
     12 static const int showsystray        = 1;        /* 0 means no systray */
     13 static const unsigned int gappih    = 10;       /* horiz inner gap between windows */
     14 static const unsigned int gappiv    = 10;       /* vert inner gap between windows */
     15 static const unsigned int gappoh    = 10;       /* horiz outer gap between windows and screen edge */
     16 static const unsigned int gappov    = 10;       /* vert outer gap between windows and screen edge */
     17 static const int smartgaps          = 0;        /* 1 means no outer gap when there is only one window */
     18 static const int swallowfloating    = 0;        /* 1 means swallow floating windows by default */
     19 static const int showbar            = 1;        /* 0 means no standard bar */
     20 static const int topbar             = 1;        /* 0 means standard bar at bottom */
     21 static const int extrabar           = 1;        /* 0 means no extra bar */
     22 static const char statussep         = ';';      /* separator between statuses */
     23 static const char *fonts[]          = { "monospace:size=10" };
     24 static const char dmenufont[]       = "monospace:size=10";
     25 static const char col_normbg[]      = "#282A36";
     26 static const char col_normfg[]      = "#FF79C6";
     27 static const char col_normbrd[]     = "#282A36";
     28 static const char col_selbg[]       = "#FF79C6";
     29 static const char col_selfg[]       = "#282A36";
     30 static const char col_selbrd[]      = "#FFB86C";
     31 static const char *colors[][3]      = {
     32 	/*               fg          bg          border   */
     33 	[SchemeNorm] = { col_normfg, col_normbg, col_normbrd },
     34 	[SchemeSel]  = { col_selfg,  col_selbg,  col_selbrd  },
     35 };
     36 
     37 typedef struct {
     38 	const char *name;
     39 	const void *cmd;
     40 } Sp;
     41 const char *spcmd1[] = {"st", "-n", "spterm", "-g", "120x34", NULL };
     42 const char *spcmd2[] = {"st", "-n", "spfm", "-g", "144x41", "-e", "ranger", NULL };
     43 const char *spcmd3[] = {"st", "-n", "pmixer", "-g", "144x41", "-e", "pulsemixer", NULL };
     44 const char *spcmd4[] = {"st", "-n", "spmpc", "-g", "144x41", "-e", "ncmpcpp", NULL };
     45 static Sp scratchpads[] = {
     46 	/* name          cmd  */
     47 	{"spterm",      spcmd1},
     48 	{"spranger",    spcmd2},
     49 	{"pmixer",      spcmd3},
     50 	{"spmpc",       spcmd4},
     51 };
     52 
     53 /* tagging */
     54 static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
     55 static const Rule rules[] = {
     56 	/* xprop(1):
     57 	 *	WM_CLASS(STRING) = instance, class
     58 	 *	WM_NAME(STRING) = title
     59 	 */
     60 	/* class        instance     title       tags mask    isfloating  isterminal  noswallow  monitor */
     61 	{ "Gimp",       NULL,	       NULL,       0,	          1,	        0,          0,         -1 },
     62 	{ "st-256color",         NULL,        NULL,       0,           0,          1,          0,         -1 },
     63 	{ NULL,         "spterm",    NULL,       SPTAG(0),    1,	        1,          0,         -1 },
     64 	{ NULL,	        "spfm",	     NULL,       SPTAG(1),    1,	        1,	        0,         -1 },
     65 	{ NULL,	        "pmixer",    NULL,       SPTAG(2),    1,	        1,	        0,         -1 },
     66 	{ NULL,	        "spmpc",     NULL,       SPTAG(3),    1,	        1,	        0,         -1 },
     67 };
     68 
     69 /* layout(s) */
     70 static const float mfact     = 0.55; /* factor of master area size [0.05..0.95] */
     71 static const int nmaster     = 1;    /* number of clients in master area */
     72 static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
     73 static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
     74 
     75 static const Layout layouts[] = {
     76 	/* symbol     arrange function */
     77 	{ "[]=",      tile },    /* first entry is default */
     78 	{ "><>",      NULL },    /* no layout function means floating behavior */
     79 	{ "[M]",      monocle },
     80 	{ "[][]=",    tilewide },
     81 };
     82 
     83 /* key definitions */
     84 #define MODKEY Mod4Mask
     85 #define TAGKEYS(KEY,TAG) \
     86 	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
     87 	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
     88 	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
     89 	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },
     90 
     91 /* helper for spawning shell commands in the pre dwm-5.0 fashion */
     92 #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
     93 
     94 /* commands */
     95 static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
     96 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_normbg, "-nf", col_normfg, "-sb", col_selbg, "-sf", col_selfg, NULL };
     97 static const char *termcmd[]  = { "st", NULL };
     98 static const char *mute[]     = { "pamixer", "-t", NULL };
     99 static const char *incvol[]   = { "pamixer", "-i", "5", NULL };
    100 static const char *decvol[]   = { "pamixer", "-d", "5", NULL };
    101 static const char *sysact[]   = { "sysact", NULL };
    102 static const char *passcopy[] = { "dmenu-pass", "--no-username", NULL };
    103 static const char *passtype[] = { "dmenu-pass", "--type", NULL };
    104 static const char *mpctoggle[] = { "mpc", "toggle", NULL };
    105 static const char *mpcnext[]  = { "mpc", "next", NULL };
    106 static const char *mpcprev[]  = { "mpc", "prev", NULL };
    107 
    108 static const Key keys[] = {
    109 	/* modifier                     key        function        argument */
    110   // general
    111 	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
    112 	{ MODKEY,                       XK_d,      spawn,          {.v = dmenucmd } },
    113 	{ MODKEY,                       XK_b,      togglebar,      {0} },
    114 	{ MODKEY|ShiftMask,             XK_b,      toggleextrabar, {0} },
    115 	{ MODKEY,                       XK_o,      incnmaster,     {.i = +1 } },
    116 	{ MODKEY|ShiftMask,             XK_o,      incnmaster,     {.i = -1 } },
    117 	{ MODKEY,                       XK_q,      killclient,     {0} },
    118 	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
    119 	{ MODKEY|ControlMask|ShiftMask, XK_q,      quit,           {1} },
    120 
    121   // scripts & programsmarkus
    122   { MODKEY,                       XK_BackSpace, spawn,       {.v = sysact } },
    123   { MODKEY|ShiftMask,             XK_BackSpace, spawn,       {.v = passtype } },
    124   { MODKEY|ControlMask|ShiftMask, XK_BackSpace, spawn,       {.v = passcopy } },
    125 
    126 
    127   // mpc && pulseaudio
    128   { 0,                       XF86XK_AudioLowerVolume, spawn, {.v = decvol } },
    129   { 0,                       XF86XK_AudioRaiseVolume, spawn, {.v = incvol } },
    130   { 0,                       XF86XK_AudioMute, spawn, {.v = mute } },
    131   { 0,                       XF86XK_AudioPlay, spawn, {.v = mpctoggle } },
    132   { MODKEY,                  XK_minus, spawn, {.v = decvol } },
    133   { MODKEY,                  XK_equal, spawn, {.v = incvol } },
    134   { MODKEY|ShiftMask,        XK_m,           spawn, {.v = mute } },
    135   { MODKEY|ShiftMask,        XK_p,           spawn, {.v = mpctoggle } },
    136   { MODKEY|ShiftMask,        XK_minus, spawn, {.v = mpcprev } },
    137   { MODKEY|ShiftMask,        XK_equal, spawn, {.v = mpcnext } },
    138 
    139   // layouts
    140 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} }, // tile
    141 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} }, // float
    142 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} }, // monocle
    143 	{ MODKEY,                       XK_w,      setlayout,      {.v = &layouts[3]} }, // tilewide
    144 
    145   // vanity gaps
    146 	{ MODKEY|ShiftMask,             XK_g,      defaultgaps,    {0} },
    147 	{ MODKEY,                       XK_g,      togglegaps,     {0} },
    148 	{ MODKEY|ShiftMask,             XK_j,      incrgaps,       {.i = -1 } },
    149 	{ MODKEY|ShiftMask,             XK_k,      incrgaps,       {.i = +1 } },
    150 
    151   // navigation
    152 	{ MODKEY,                       XK_space,  zoom,           {0} },
    153 	{ MODKEY,                       XK_Tab,    view,           {0} },
    154 	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
    155 	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
    156 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
    157 	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
    158 	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
    159 
    160   // multi-monitor
    161 	{ MODKEY,                       XK_Left,   focusmon,       {.i = -1 } },
    162 	{ MODKEY,                       XK_Right,  focusmon,       {.i = +1 } },
    163 	{ MODKEY|ShiftMask,             XK_Left,   tagmon,         {.i = -1 } },
    164 	{ MODKEY|ShiftMask,             XK_Right,  tagmon,         {.i = +1 } },
    165 
    166   // scratchpads
    167 	{ MODKEY,            		        XK_y,  	   togglescratch,  {.ui = 0 } },
    168 	{ MODKEY,            		        XK_u,	     togglescratch,  {.ui = 1 } },
    169 	{ MODKEY,            		        XK_p,	     togglescratch,  {.ui = 2 } },
    170 	{ MODKEY,            		        XK_n,	     togglescratch,  {.ui = 3 } },
    171 
    172   // tags
    173 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
    174 	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
    175 	TAGKEYS(                        XK_1,                      0)
    176 	TAGKEYS(                        XK_2,                      1)
    177 	TAGKEYS(                        XK_3,                      2)
    178 	TAGKEYS(                        XK_4,                      3)
    179 	TAGKEYS(                        XK_5,                      4)
    180 	TAGKEYS(                        XK_6,                      5)
    181 	TAGKEYS(                        XK_7,                      6)
    182 	TAGKEYS(                        XK_8,                      7)
    183 	TAGKEYS(                        XK_9,                      8)
    184 };
    185 
    186 /* button definitions */
    187 /* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
    188 static const Button buttons[] = {
    189 	/* click                event mask      button          function        argument */
    190 	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
    191 	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
    192 	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
    193 	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
    194 	{ ClkExBarLeftStatus,   0,              Button2,        spawn,          {.v = termcmd } },
    195 	{ ClkExBarMiddle,       0,              Button2,        spawn,          {.v = termcmd } },
    196 	{ ClkExBarRightStatus,  0,              Button2,        spawn,          {.v = termcmd } },
    197 	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
    198 	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
    199 	{ ClkClientWin,         MODKEY,         Button1,        resizemouse,    {0} },
    200 	{ ClkTagBar,            0,              Button1,        view,           {0} },
    201 	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
    202 	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
    203 	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
    204 };
    205