dwm

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

config.def.h (11638B)


      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[]           = "#091833";
     26 static const char col_normfg[]           = "#0abdc6";
     27 static const char col_normbrd[]          = "#091833";
     28 static const char col_selbg[]            = "#321959";
     29 static const char col_selfg[]            = "#ea00d9";
     30 static const char col_selbrd[]           = "#ea00d9";
     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 
     42 const char *spcmd1[] = {"st", "-n", "spterm", "-g", "120x34", NULL };
     43 const char *spcmd2[] = {"st", "-n", "spfm", "-g", "144x41", "-e", "ranger", NULL };
     44 const char *spcmd3[] = {"st", "-n", "pmixer", "-g", "144x41", "-e", "pulsemixer", NULL };
     45 const char *spcmd4[] = {"st", "-n", "spmpc", "-g", "144x41", "-e", "ncmpcpp", NULL };
     46 
     47 static Sp scratchpads[] = {
     48 	/* name          cmd  */
     49 	{"spterm",      spcmd1},
     50 	{"spranger",    spcmd2},
     51 	{"pmixer",      spcmd3},
     52 	{"spmpc",       spcmd4},
     53 };
     54 
     55 /* tagging */
     56 static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
     57 static const Rule rules[] = {
     58 	/* xprop(1):
     59 	 *	WM_CLASS(STRING) = instance, class
     60 	 *	WM_NAME(STRING) = title
     61 	 */
     62 	/* class         instance     title       tags mask    isfloating  isterminal  noswallow  monitor */
     63 	{ "Gimp",        NULL,	      NULL,       0,	         1,	         0,          0,         -1 },
     64 	{ "st-256color", NULL,        NULL,       0,           0,          1,          0,         -1 },
     65 	{ NULL,          "spterm",    NULL,       SPTAG(0),    1,	         1,          0,         -1 },
     66 	{ NULL,	         "spfm",      NULL,       SPTAG(1),    1,	         1,	         0,         -1 },
     67 	{ NULL,	         "pmixer",    NULL,       SPTAG(2),    1,	         1,	         0,         -1 },
     68 	{ NULL,	         "spmpc",     NULL,       SPTAG(3),    1,	         1,	         0,         -1 },
     69 };
     70 
     71 /* layout(s) */
     72 static const float mfact        = 0.55; /* factor of master area size [0.05..0.95] */
     73 static const int nmaster        = 1;    /* number of clients in master area */
     74 static const int resizehints    = 1;    /* 1 means respect size hints in tiled resizals */
     75 static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
     76 
     77 static const Layout layouts[] = {
     78 	/* symbol     arrange function */
     79 	{ "[]=",      tile },    /* first entry is default */
     80 	{ "><>",      NULL },    /* no layout function means floating behavior */
     81 	{ "[M]",      monocle },
     82 	{ "[][]=",    tilewide },
     83 };
     84 
     85 /* key definitions */
     86 #define MODKEY Mod4Mask
     87 #define TAGKEYS(KEY,TAG) \
     88 	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
     89 	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
     90 	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
     91 	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },
     92 
     93 /* helper for spawning shell commands in the pre dwm-5.0 fashion */
     94 #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
     95 
     96 /* commands */
     97 static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
     98 static const char *dmenucmd[]  = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_normbg, "-nf", col_normfg, "-sb", col_selbg, "-sf", col_selfg, NULL };
     99 static const char *termcmd[]   = { "st", NULL };
    100 static const char *mute[]      = { "pamixer", "-t", NULL };
    101 static const char *incvol[]    = { "pamixer", "-i", "5", NULL };
    102 static const char *decvol[]    = { "pamixer", "-d", "5", NULL };
    103 static const char *sysact[]    = { "sysmenu", NULL };
    104 
    105 static const char *mpctoggle[] = { "mpc", "toggle", NULL };
    106 static const char *mpcnext[]   = { "mpc", "next", NULL };
    107 static const char *mpcprev[]   = { "mpc", "prev", NULL };
    108 
    109 static const Key keys[] = {
    110   /* modifier                     key           function        argument */
    111 
    112   // general
    113   { MODKEY,                       XK_Return,    spawn,          {.v = termcmd } },
    114   { MODKEY,                       XK_d,         spawn,          {.v = dmenucmd } },
    115   { MODKEY,                       XK_b,         togglebar,      {0} },
    116   { MODKEY|ShiftMask,             XK_b,         toggleextrabar, {0} },
    117   { MODKEY,                       XK_o,         incnmaster,     {.i = +1 } },
    118   { MODKEY|ShiftMask,             XK_o,         incnmaster,     {.i = -1 } },
    119   { MODKEY,                       XK_q,         killclient,     {0} },
    120   { MODKEY|ShiftMask,             XK_q,         quit,           {0} },
    121   { MODKEY|ControlMask|ShiftMask, XK_q,         quit,           {1} },
    122 
    123   // scripts & programs
    124   { MODKEY,                       XK_BackSpace, spawn,          {.v = sysact } },
    125 
    126   // mpc && pulseaudio
    127   { MODKEY,                       XK_minus,     spawn,          {.v = decvol } },
    128   { MODKEY,                       XK_equal,     spawn,          {.v = incvol } },
    129   { MODKEY|ShiftMask,             XK_m,         spawn,          {.v = mute } },
    130   { MODKEY|ShiftMask,             XK_p,         spawn,          {.v = mpctoggle } },
    131   { MODKEY|ShiftMask,             XK_minus,     spawn,          {.v = mpcprev } },
    132   { MODKEY|ShiftMask,             XK_equal,     spawn,          {.v = mpcnext } },
    133 
    134   // layouts
    135   { MODKEY,                       XK_t,         setlayout,      {.v = &layouts[0]} }, // tile
    136   { MODKEY,                       XK_f,         setlayout,      {.v = &layouts[1]} }, // float
    137   { MODKEY,                       XK_m,         setlayout,      {.v = &layouts[2]} }, // monocle
    138   { MODKEY,                       XK_w,         setlayout,      {.v = &layouts[3]} }, // tilewide
    139 
    140   // vanity gaps
    141   { MODKEY|ShiftMask,             XK_g,         defaultgaps,    {0} },
    142   { MODKEY,                       XK_g,         togglegaps,     {0} },
    143   { MODKEY|ShiftMask,             XK_j,         incrgaps,       {.i = -1 } },
    144   { MODKEY|ShiftMask,             XK_k,         incrgaps,       {.i = +1 } },
    145 
    146   // navigation
    147   { MODKEY,                       XK_space,     zoom,           {0} },
    148   { MODKEY,                       XK_Tab,       view,           {0} },
    149   { MODKEY,                       XK_j,         focusstack,     {.i = +1 } },
    150   { MODKEY,                       XK_k,         focusstack,     {.i = -1 } },
    151   { MODKEY|ShiftMask,             XK_space,     togglefloating, {0} },
    152   { MODKEY,                       XK_h,         setmfact,       {.f = -0.05} },
    153   { MODKEY,                       XK_l,         setmfact,       {.f = +0.05} },
    154 
    155   // multi-monitor
    156   { MODKEY,                       XK_Left,      focusmon,       {.i = -1 } },
    157   { MODKEY,                       XK_Right,     focusmon,       {.i = +1 } },
    158   { MODKEY|ShiftMask,             XK_Left,      tagmon,         {.i = -1 } },
    159   { MODKEY|ShiftMask,             XK_Right,     tagmon,         {.i = +1 } },
    160 
    161   // scratchpads
    162   { MODKEY,            		  XK_y,         togglescratch,  {.ui = 0 } },
    163   { MODKEY,            		  XK_u,	        togglescratch,  {.ui = 1 } },
    164   { MODKEY,            		  XK_p,	        togglescratch,  {.ui = 2 } },
    165   { MODKEY,            		  XK_n,	        togglescratch,  {.ui = 3 } },
    166 
    167   // tags
    168   { MODKEY,                       XK_0,         view,           {.ui = ~0 } },
    169   { MODKEY|ShiftMask,             XK_0,         tag,            {.ui = ~0 } },
    170   TAGKEYS(                        XK_1,                      0)
    171   TAGKEYS(                        XK_2,                      1)
    172   TAGKEYS(                        XK_3,                      2)
    173   TAGKEYS(                        XK_4,                      3)
    174   TAGKEYS(                        XK_5,                      4)
    175   TAGKEYS(                        XK_6,                      5)
    176   TAGKEYS(                        XK_7,                      6)
    177   TAGKEYS(                        XK_8,                      7)
    178   TAGKEYS(                        XK_9,                      8)
    179 
    180   // Media keys
    181   { 0,                            XF86XK_AudioLowerVolume, spawn,          {.v = decvol } },
    182   { 0,                            XF86XK_AudioRaiseVolume, spawn,          {.v = incvol } },
    183   { 0,                            XF86XK_AudioMute,        spawn,          {.v = mute } },
    184   { 0,                            XF86XK_AudioPlay,        spawn,          {.v = mpctoggle } },
    185 };
    186 
    187 /* button definitions */
    188 /* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
    189 static const Button buttons[] = {
    190 	/* click                event mask      button          function        argument */
    191 	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
    192 	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
    193 	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
    194 	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
    195 	{ ClkExBarLeftStatus,   0,              Button2,        spawn,          {.v = termcmd } },
    196 	{ ClkExBarMiddle,       0,              Button2,        spawn,          {.v = termcmd } },
    197 	{ ClkExBarRightStatus,  0,              Button2,        spawn,          {.v = termcmd } },
    198 	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
    199 	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
    200 	{ ClkClientWin,         MODKEY,         Button1,        resizemouse,    {0} },
    201 	{ ClkTagBar,            0,              Button1,        view,           {0} },
    202 	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
    203 	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
    204 	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
    205 };
    206