sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-flyschemes-6.6-alpha.diff (7470B)


      1 diff -up dwm-6.6-alpha/config.def.h dwm-6.6-flyschemes-alpha/config.def.h
      2 --- dwm-6.6-alpha/config.def.h	2025-12-21 17:07:31.747211857 +0300
      3 +++ dwm-6.6-flyschemes-alpha/config.def.h	2025-12-21 17:17:13.773890266 +0300
      4 @@ -9,17 +9,64 @@ static const char *fonts[]          = {
      5  static const char dmenufont[]       = "monospace:size=10";
      6  static unsigned int baralpha        = 0xd0;
      7  static unsigned int borderalpha     = OPAQUE;
      8 -static const char col_gray1[]       = "#222222";
      9 -static const char col_gray2[]       = "#444444";
     10 -static const char col_gray3[]       = "#bbbbbb";
     11 -static const char col_gray4[]       = "#eeeeee";
     12 -static const char col_cyan[]        = "#005577";
     13 -static const char *colors[][3]      = {
     14 -	/*               fg         bg         border   */
     15 -	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
     16 -	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
     17 +
     18 +/* loaded on dwm launch, has to be present */
     19 +static const char *flyscheme_default[][3] = {
     20 +	[SchemeNorm] = { "#bbbbbb", "#222222", "#444444" },
     21 +	[SchemeSel]  = { "#eeeeee", "#005577", "#005577" },
     22 +};
     23 +
     24 +static const char *flyscheme_dracula[][3] = {
     25 +	[SchemeNorm] = { "#f8f8f2", "#282a36", "#44475a" },
     26 +	[SchemeSel]  = { "#282a36", "#bd93f9", "#bd93f9" },
     27 +};
     28 +
     29 +static const char *flyscheme_solarized[][3] = {
     30 +	[SchemeNorm] = { "#839496", "#002b36", "#073642" },
     31 +	[SchemeSel]  = { "#002b36", "#2aa198", "#2aa198" },
     32 +};
     33 +
     34 +static const char *flyscheme_nord[][3] = {
     35 +	[SchemeNorm] = { "#d8dee9", "#2e3440", "#4c566a" },
     36 +	[SchemeSel]  = { "#2e3440", "#88c0d0", "#88c0d0" },
     37 +};
     38 +
     39 +static const char *flyscheme_gruvbox[][3] = {
     40 +	[SchemeNorm] = { "#ebdbb2", "#282828", "#3c3836" },
     41 +	[SchemeSel]  = { "#282828", "#fabd2f", "#fabd2f" },
     42  };
     43  
     44 +static const char *flyscheme_light[][3] = {
     45 +	[SchemeNorm] = { "#222222", "#eeeeee", "#cccccc" },
     46 +	[SchemeSel]  = { "#ffffff", "#4a90e2", "#4a90e2" },
     47 +};
     48 +
     49 +static const char *flyscheme_plan9[][3] = {
     50 +	[SchemeNorm] = { "#000000", "#ffffea", "#999999" },
     51 +	[SchemeSel]  = { "#000000", "#9ecfff", "#9ecfff" },
     52 +};
     53 +
     54 +static const char *flyscheme_cyberpunk[][3] = {
     55 +	[SchemeNorm] = { "#00ffcc", "#0d0221", "#1d1231" },
     56 +	[SchemeSel]  = { "#0d0221", "#ff00aa", "#ff00aa" },
     57 +};
     58 +
     59 +/* you can move the schemes to a different header and do #include "flyschemes.h"
     60 + * or you can move each scheme to its own file
     61 + * and do #include flyscheme_light.h, #include flyscheme_plan9.h, ... */
     62 +
     63 +static const char *(*flyschemes[])[3] = {
     64 +	flyscheme_default,
     65 +	flyscheme_light,
     66 +	flyscheme_plan9,
     67 +	flyscheme_dracula,
     68 +	flyscheme_solarized,
     69 +	flyscheme_nord,
     70 +	flyscheme_gruvbox,
     71 +	flyscheme_cyberpunk,
     72 +	NULL // used to count the number of flyschemes
     73 + };
     74 +
     75  /* tagging */
     76  static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
     77  
     78 @@ -59,7 +106,16 @@ static const Layout layouts[] = {
     79  
     80  /* commands */
     81  static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
     82 -static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
     83 +static const char *dmenucmd[] = {
     84 +	"dmenu_run",
     85 +	"-m", dmenumon,
     86 +	"-fn", dmenufont,
     87 +	"-nb", "#222222", /* changed as dmenucmd[6] in cycle_flyschemes */
     88 +	"-nf", "#bbbbbb", /* changed as dmenucmd[8] in cycle_flyschemes */
     89 +	"-sb", "#005577", /* changed as dmenucmd[10] in cycle_flyschemes */
     90 +	"-sf", "$eeeeee", /* changed as dmenucmd[12] in cycle_flyschemes */
     91 +	NULL
     92 +};
     93  static const char *termcmd[]  = { "st", NULL };
     94  
     95  static const Key keys[] = {
     96 @@ -75,7 +131,9 @@ static const Key keys[] = {
     97  	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
     98  	{ MODKEY,                       XK_Return, zoom,           {0} },
     99  	{ MODKEY,                       XK_Tab,    view,           {0} },
    100 -	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
    101 +	{ MODKEY|ShiftMask,             XK_x,      killclient,     {0} },
    102 +	{ MODKEY,                       XK_c,      cycle_flyschemes, { .i = +1 } },
    103 +	{ MODKEY|ShiftMask,             XK_c,      cycle_flyschemes, { .i = -1 } },
    104  	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
    105  	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
    106  	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
    107 diff -up dwm-6.6-alpha/dwm.1 dwm-6.6-flyschemes-alpha/dwm.1
    108 --- dwm-6.6-alpha/dwm.1	2025-12-18 12:11:49.852471883 +0300
    109 +++ dwm-6.6-flyschemes-alpha/dwm.1	2025-12-21 17:12:23.410551062 +0300
    110 @@ -113,9 +113,15 @@ Decrease master area size.
    111  .B Mod1\-Return
    112  Zooms/cycles focused window to/from master area (tiled layouts only).
    113  .TP
    114 -.B Mod1\-Shift\-c
    115 +.B Mod1\-Shift\-x
    116  Close focused window.
    117  .TP
    118 +.B Mod1\-c
    119 +Cycle flyscheme.
    120 +.TP
    121 +.B Mod1\-Shift\-c
    122 +Cycle flyscheme back.
    123 +.TP
    124  .B Mod1\-Shift\-space
    125  Toggle focused window between tiled and floating state.
    126  .TP
    127 diff -up dwm-6.6-alpha/dwm.c dwm-6.6-flyschemes-alpha/dwm.c
    128 --- dwm-6.6-alpha/dwm.c	2025-12-21 17:07:31.747211857 +0300
    129 +++ dwm-6.6-flyschemes-alpha/dwm.c	2025-12-21 17:19:34.253893111 +0300
    130 @@ -143,6 +143,8 @@ typedef struct {
    131  } Rule;
    132  
    133  /* function declarations */
    134 +static void cycle_flyschemes(const Arg *arg);
    135 +static void update_scheme();
    136  static void applyrules(Client *c);
    137  static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact);
    138  static void arrange(Monitor *m);
    139 @@ -237,6 +239,7 @@ static void xinitvisual(void);
    140  static void zoom(const Arg *arg);
    141  
    142  /* variables */
    143 +static unsigned int iflysch = 0;
    144  static const char broken[] = "broken";
    145  static char stext[256];
    146  static int screen;
    147 @@ -492,7 +495,7 @@ cleanup(void)
    148  		cleanupmon(mons);
    149  	for (i = 0; i < CurLast; i++)
    150  		drw_cur_free(drw, cursor[i]);
    151 -	for (i = 0; i < LENGTH(colors); i++)
    152 +	for (i = 0; i < LENGTH(flyscheme_default); i++)
    153  		free(scheme[i]);
    154  	free(scheme);
    155  	XDestroyWindow(dpy, wmcheckwin);
    156 @@ -1591,10 +1594,10 @@ setup(void)
    157  	cursor[CurResize] = drw_cur_create(drw, XC_sizing);
    158  	cursor[CurMove] = drw_cur_create(drw, XC_fleur);
    159  	/* init appearance */
    160 -	scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
    161  	unsigned int alphas[] = {borderalpha, baralpha, OPAQUE};
    162 -	for (i = 0; i < LENGTH(colors); i++)
    163 -		scheme[i] = drw_scm_create(drw, colors[i], alphas, 3);
    164 +	scheme = ecalloc(LENGTH(flyscheme_default), sizeof(Clr *));
    165 +	for (i = 0; i < LENGTH(flyscheme_default); i++)
    166 +		scheme[i] = drw_scm_create(drw, flyscheme_default[i], alphas, 3);
    167  	/* init bars */
    168  	updatebars();
    169  	updatestatus();
    170 @@ -2187,6 +2190,37 @@ zoom(const Arg *arg)
    171  	pop(c);
    172  }
    173  
    174 +void
    175 +update_scheme()
    176 +{
    177 +	unsigned int alphas[] = {borderalpha, baralpha, OPAQUE};
    178 +	scheme[SchemeNorm] = drw_scm_create(drw, flyschemes[iflysch][SchemeNorm], alphas, 3);
    179 +	scheme[SchemeSel] = drw_scm_create(drw, flyschemes[iflysch][SchemeSel], alphas, 3);
    180 +	dmenucmd[6] = flyschemes[iflysch][SchemeNorm][1];
    181 +	dmenucmd[8] = flyschemes[iflysch][SchemeNorm][0];
    182 +	dmenucmd[10] = flyschemes[iflysch][SchemeSel][1];
    183 +	dmenucmd[12] = flyschemes[iflysch][SchemeSel][0];
    184 +	Client *cl = selmon->sel;
    185 +	Client *c;
    186 +	Monitor *m;
    187 +	for (m = mons; m; m = m->next)
    188 +		for (c = m->clients; c; c = c->next)
    189 +			focus(c);
    190 +	focus(cl);
    191 +}
    192 +
    193 +void
    194 +cycle_flyschemes(const Arg *arg)
    195 +{
    196 +	int flyschemes_limit = 256;
    197 +	int i;
    198 +	for(i = 0; flyschemes[i] != NULL && i < flyschemes_limit; i++)
    199 +		;
    200 +	iflysch += i + arg->i;
    201 +	iflysch %= i;
    202 +	update_scheme();
    203 +}
    204 +
    205  int
    206  main(int argc, char *argv[])
    207  {