1. /* see LICENSE for copyright and license */
  2.  
  3. #ifndef CONFIG_H
  4. #define CONFIG_H
  5.  
  6. /** modifiers **/
  7. #define MOD1            Mod4Mask    /* ALT key */
  8. #define MOD4            Mod1Mask    /* Super/Windows key */
  9. #define CONTROL         ControlMask /* Control key */
  10. #define SHIFT           ShiftMask   /* Shift key */
  11.  
  12. /** generic settings **/
  13. #define MASTER_SIZE     0.52
  14. #define SHOW_PANEL      True     /* show panel by default on exec */
  15. #define TOP_PANEL       True      /* False means panel is on bottom */
  16. #define PANEL_HEIGHT    14        /* 0 for no space for panel, thus no panel */
  17. #define DEFAULT_MODE    TILE      /* initial layout/mode: TILE MONOCLE BSTACK GRID FLOAT */
  18. #define ATTACH_ASIDE    True      /* False means new window is master */
  19. #define FOLLOW_WINDOW   False     /* follow the window when moved to a different desktop */
  20. #define FOLLOW_MOUSE    False     /* focus the window the mouse just entered */
  21. #define CLICK_TO_FOCUS  True      /* focus an unfocused window when clicked  */
  22. #define FOCUS_BUTTON    Button3   /* mouse button to be used along with CLICK_TO_FOCUS */
  23. #define BORDER_WIDTH    1         /* window border width */
  24. #define FOCUS           "#E6E6E6" /* focused window border color    */
  25. #define UNFOCUS         "#444444" /* unfocused window border color  */
  26. #define MINWSZ          50        /* minimum window size in pixels  */
  27. #define DEFAULT_DESKTOP 0         /* the desktop to focus initially */
  28. #define DESKTOPS        5         /* number of desktops - edit DESKTOPCHANGE keys to suit */
  29. #define USELESSGAP      5
  30. /**
  31.  * layouts for each desktops
  32.  */
  33. /* static const int initlayouts[] = { TILE, BSTACK, BSTACK, FIBONACCI, MONOCLE, TILE, }; */
  34.  
  35. /**
  36.  * open applications to specified desktop with specified mode.
  37.  * if desktop is negative, then current is assumed
  38.  */
  39. static const AppRule rules[] = { \
  40.     /*  class     desktop  follow  float */
  41.     { "MPlayer",     4,    True,   False },
  42.     { "Dwb",         1,    False,  False },
  43.     { "Zathura",     4,    True,   False },
  44.     { "sxiv",        4,    True,   False },    
  45. };
  46.  
  47. /* helper for spawning shell commands */
  48. #define SHCMD(cmd) {.com = (const char*[]){"/bin/sh", "-c", cmd, NULL}}
  49.  
  50. /**
  51.  * custom commands
  52.  * must always end with ', NULL };'
  53.  */
  54. static const char *termcmd[] = { "termite",     NULL };
  55. static const char *filecmd[] = { "termite",  "-e", "ranger",     NULL };
  56. static const char *menucmd[] = { "dmenu-recent", NULL };
  57. static const char *webcmd[]  = { "dwb",     NULL    };
  58. static const char *streamcmd[] = { "dmenu-twitch", NULL };
  59. static const char *calccmd[] = { "dcalc",   NULL    };
  60. static const char *volupcmd[]      = { "cmus-remote", "-v", "+5%", NULL };
  61. static const char *voldncmd[]      = { "cmus-remote", "-v", "-5%", NULL };
  62. static const char *playcmd[]       = { "cmus-remote", "-p", NULL };
  63. static const char *stopcmd[]       = { "cmus-remote", "-s", NULL };
  64. static const char *pausecmd[]      = { "cmus-remote", "-u", NULL };
  65. static const char *nextcmd[]       = { "cmus-remote", "-n", NULL };
  66. static const char *prevcmd[]       = { "cmus-remote", "-r", NULL };
  67.  
  68. #define DESKTOPCHANGE(K,N) \
  69.     {  MOD1,             K,              change_desktop, {.i = N}}, \
  70.     {  MOD1|ShiftMask,   K,              client_to_desktop, {.i = N}},
  71.  
  72. /**
  73.  * keyboard shortcuts
  74.  */
  75. static Key keys[] = {
  76.     /* modifier          key            function           argument */
  77.     {  MOD1,             XK_b,          togglepanel,       {NULL}},
  78.     {  MOD1,             XK_BackSpace,  focusurgent,       {NULL}},
  79.     {  MOD1|SHIFT,       XK_c,          killclient,        {NULL}},
  80.     {  MOD1,             XK_j,          next_win,          {NULL}},
  81.     {  MOD1,             XK_k,          prev_win,          {NULL}},
  82.     {  MOD1,             XK_h,          resize_master,     {.i = -10}}, /* decrease size in px */
  83.     {  MOD1,             XK_l,          resize_master,     {.i = +10}}, /* increase size in px */
  84.     {  MOD1,             XK_o,          resize_stack,      {.i = -10}}, /* shrink   size in px */
  85.     {  MOD1,             XK_p,          resize_stack,      {.i = +10}}, /* grow     size in px */
  86.     {  MOD1|CONTROL,     XK_h,          rotate,            {.i = -1}},
  87.     {  MOD1|CONTROL,     XK_l,          rotate,            {.i = +1}},
  88.     {  MOD1|SHIFT,       XK_h,          rotate_filled,     {.i = -1}},
  89.     {  MOD1|SHIFT,       XK_l,          rotate_filled,     {.i = +1}},
  90.     {  MOD1,             XK_Tab,        last_desktop,      {NULL}},
  91.     {  MOD1|SHIFT,       XK_Return,     swap_master,       {NULL}},
  92.     {  MOD1|SHIFT,       XK_j,          move_down,         {NULL}},
  93.     {  MOD1|SHIFT,       XK_k,          move_up,           {NULL}},
  94.     {  MOD1|SHIFT,       XK_t,          switch_mode,       {.i = TILE}},
  95.     {  MOD1|SHIFT,       XK_m,          switch_mode,       {.i = MONOCLE}},
  96.     {  MOD1|SHIFT,       XK_b,          switch_mode,       {.i = BSTACK}},
  97.     {  MOD1|SHIFT,       XK_g,          switch_mode,       {.i = GRID}},
  98.     {  MOD1|SHIFT,       XK_f,          switch_mode,       {.i = FLOAT}},
  99.     {  MOD1|CONTROL,     XK_r,          quit,              {.i = 0}}, /* quit with exit value 0 */
  100.     {  MOD1|CONTROL,     XK_q,          quit,              {.i = 1}}, /* quit with exit value 1 */
  101.     {  MOD1,             XK_Return,     spawn,             {.com = termcmd}},
  102.     {  MOD1,             XK_r,          spawn,             {.com = filecmd}},
  103.     {  MOD1,             XK_q,          spawn,             {.com = menucmd}},
  104.     {  MOD1,             XK_s,          spawn,             {.com = streamcmd}},
  105.     {  MOD1,             XK_d,          spawn,             {.com = webcmd}},
  106.     {  MOD1,             XK_c,          spawn,             {.com = calccmd}},
  107.     {  MOD1,             XK_0,          spawn,             {.com = volupcmd}},
  108.     {  MOD1,             XK_9,          spawn,             {.com = voldncmd}},
  109.     {  MOD4|SHIFT,       XK_x,          spawn,             {.com = playcmd}},
  110.     {  MOD4|SHIFT,       XK_c,          spawn,             {.com = pausecmd}},
  111.     {  MOD4|SHIFT,       XK_b,          spawn,             {.com = nextcmd}},
  112.     {  MOD4|SHIFT,       XK_z,          spawn,             {.com = prevcmd}},
  113.     {  MOD4|SHIFT,       XK_v,          spawn,             {.com = stopcmd}},
  114.     {  MOD4,             XK_j,          moveresize,        {.v = (int []){   0,  25,   0,   0 }}}, /* move down  */
  115.     {  MOD4,             XK_k,          moveresize,        {.v = (int []){   0, -25,   0,   0 }}}, /* move up    */
  116.     {  MOD4,             XK_l,          moveresize,        {.v = (int []){  25,   0,   0,   0 }}}, /* move right */
  117.     {  MOD4,             XK_h,          moveresize,        {.v = (int []){ -25,   0,   0,   0 }}}, /* move left  */
  118.     {  MOD4|SHIFT,       XK_j,          moveresize,        {.v = (int []){   0,   0,   0,  25 }}}, /* height grow   */
  119.     {  MOD4|SHIFT,       XK_k,          moveresize,        {.v = (int []){   0,   0,   0, -25 }}}, /* height shrink */
  120.     {  MOD4|SHIFT,       XK_l,          moveresize,        {.v = (int []){   0,   0,  25,   0 }}}, /* width grow    */
  121.     {  MOD4|SHIFT,       XK_h,          moveresize,        {.v = (int []){   0,   0, -25,   0 }}}, /* width shrink  */
  122.        DESKTOPCHANGE(    XK_1,                             0)
  123.        DESKTOPCHANGE(    XK_2,                             1)
  124.        DESKTOPCHANGE(    XK_3,                             2)
  125.        DESKTOPCHANGE(    XK_4,                             3)
  126.        DESKTOPCHANGE(    XK_5,                             4)
  127. };
  128.  
  129. /**
  130.  * mouse shortcuts
  131.  */
  132. static Button buttons[] = {
  133.     {  MOD1,    Button1,     mousemotion,   {.i = MOVE}},
  134.     {  MOD1,    Button3,     mousemotion,   {.i = RESIZE}},
  135.     {  MOD4,    Button3,     spawn,         {.com = menucmd}},
  136. };
  137. #endif
  138.  
  139. /* vim: set expandtab ts=4 sts=4 sw=4 : */