dwm-scheme_switch-20170804-ceac8c9.diff (3618B)
1 diff --git a/config.def.h b/config.def.h 2 index a9ac303..b047735 100644 3 --- a/config.def.h 4 +++ b/config.def.h 5 @@ -12,10 +12,26 @@ static const char col_gray2[] = "#444444"; 6 static const char col_gray3[] = "#bbbbbb"; 7 static const char col_gray4[] = "#eeeeee"; 8 static const char col_cyan[] = "#005577"; 9 + 10 +/* solarized colors http://ethanschoonover.com/solarized */ 11 +static const char s_base03[] = "#002b36"; 12 +static const char s_base02[] = "#073642"; 13 +static const char s_base01[] = "#586e75"; 14 +static const char s_base00[] = "#657b83"; 15 +static const char s_base0[] = "#839496"; 16 +static const char s_base1[] = "#93a1a1"; 17 +static const char s_base2[] = "#eee8d5"; 18 +static const char s_base3[] = "#fdf6e3"; 19 + 20 + 21 static const char *colors[][3] = { 22 /* fg bg border */ 23 - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, 24 - [SchemeSel] = { col_gray4, col_cyan, col_cyan }, 25 + { s_base0, s_base03, s_base2 }, /* SchemeNorm dark */ 26 + { s_base0, s_base02, s_base2 }, /* SchemeSel dark */ 27 + { s_base00, s_base3, s_base02 }, /* SchemeNorm light */ 28 + { s_base00, s_base2, s_base02}, /* SchemeSel light */ 29 + { col_gray3, col_gray1, col_gray2 }, /* SchemeNorm orig */ 30 + { col_gray4, col_cyan, col_cyan }, /* SchemeSel orig */ 31 }; 32 33 /* tagging */ 34 @@ -84,6 +100,8 @@ static Key keys[] = { 35 { MODKEY, XK_period, focusmon, {.i = +1 } }, 36 { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, 37 { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, 38 + { MODKEY|ShiftMask, XK_t, schemeToggle, {0} }, 39 + { MODKEY|ShiftMask, XK_z, schemeCycle, {0} }, 40 TAGKEYS( XK_1, 0) 41 TAGKEYS( XK_2, 1) 42 TAGKEYS( XK_3, 2) 43 diff --git a/dwm.c b/dwm.c 44 index a5ce993..3935efc 100644 45 --- a/dwm.c 46 +++ b/dwm.c 47 @@ -60,7 +60,6 @@ 48 49 /* enums */ 50 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ 51 -enum { SchemeNorm, SchemeSel }; /* color schemes */ 52 enum { NetSupported, NetWMName, NetWMState, NetWMCheck, 53 NetWMFullscreen, NetActiveWindow, NetWMWindowType, 54 NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ 55 @@ -195,6 +194,8 @@ static void resizemouse(const Arg *arg); 56 static void restack(Monitor *m); 57 static void run(void); 58 static void scan(void); 59 +static void schemeCycle(const Arg*); 60 +static void schemeToggle(const Arg*); 61 static int sendevent(Client *c, Atom proto); 62 static void sendmon(Client *c, Monitor *m); 63 static void setclientstate(Client *c, long state); 64 @@ -264,6 +265,7 @@ static Atom wmatom[WMLast], netatom[NetLast]; 65 static int running = 1; 66 static Cur *cursor[CurLast]; 67 static Scm *scheme; 68 +static int SchemeNorm = 0, SchemeSel = 1; 69 static Display *dpy; 70 static Drw *drw; 71 static Monitor *mons, *selmon; 72 @@ -1410,6 +1412,42 @@ scan(void) 73 } 74 75 void 76 +schemeCycle(const Arg *arg) { 77 + 78 + if ((SchemeSel + 2) < LENGTH(colors)) 79 + { 80 + SchemeNorm += 2; 81 + SchemeSel += 2; 82 + } else { 83 + SchemeNorm = 0; 84 + SchemeSel = 1; 85 + } 86 + 87 + drawbars(); 88 +} 89 + 90 +void 91 +schemeToggle(const Arg *arg) { 92 + 93 + int numThemePairs = LENGTH(colors) / 4; 94 + int sheme = SchemeNorm / 2; 95 + 96 + if (sheme / 2 > numThemePairs-1) { 97 + return; 98 + } 99 + 100 + if (sheme % 2 == 0) { 101 + SchemeNorm += 2; 102 + SchemeSel += 2; 103 + } else { 104 + SchemeNorm -= 2; 105 + SchemeSel -= 2; 106 + } 107 + 108 + drawbars(); 109 +} 110 + 111 +void 112 sendmon(Client *c, Monitor *m) 113 { 114 if (c->mon == m)