Adding example loading of alpha values via Xresources

vertigo
bakkeby 2 years ago
parent c1744129bd
commit 464a95315c

@ -163,7 +163,7 @@ static const char *fonts[] = { "monospace:size=10" };
unsigned int default_alphas[] = { OPAQUE, 0xd0U, OPAQUE };
#endif // BAR_ALPHA_PATCH
static char *colors[SchemeLast][5] = {
static char *colors[SchemeLast][4] = {
/* fg bg border resource prefix */
[SchemeNorm] = { "#bbbbbb", "#222222", "#444444", "norm" },
[SchemeSel] = { "#eeeeee", "#005577", "#005577", "sel" },
@ -179,39 +179,39 @@ static char *colors[SchemeLast][5] = {
[SchemeScratchNorm] = { "#FFF7D4", "#664C67", "#77547E", "scratchsel" },
#endif // RENAMED_SCRATCHPADS_PATCH
#if BAR_FLEXWINTITLE_PATCH
[SchemeFlexActTTB] = { "#eeeeee", "#440000", "#440000", "actTTB" },
[SchemeFlexActLTR] = { "#eeeeee", "#440044", "#440044", "actLTR" },
[SchemeFlexActMONO] = { "#eeeeee", "#000044", "#000044", "actMONO" },
[SchemeFlexActGRID] = { "#eeeeee", "#004400", "#004400", "actGRID" },
[SchemeFlexActGRD1] = { "#eeeeee", "#004400", "#004400", "actGRD1" },
[SchemeFlexActGRD2] = { "#eeeeee", "#004400", "#004400", "actGRD2" },
[SchemeFlexActGRDM] = { "#eeeeee", "#507711", "#507711", "actGRDM" },
[SchemeFlexActHGRD] = { "#eeeeee", "#b97711", "#b97711", "actHGRD" },
[SchemeFlexActDWDL] = { "#eeeeee", "#004444", "#004444", "actDWDL" },
[SchemeFlexActSPRL] = { "#eeeeee", "#444400", "#444400", "actSPRL" },
[SchemeFlexActFloat] = { "#eeeeee", "#116688", "#116688", "actfloat" },
[SchemeFlexInaTTB] = { "#bbbbbb", "#330000", "#330000", "normTTB" },
[SchemeFlexInaLTR] = { "#bbbbbb", "#330033", "#330033", "normLTR" },
[SchemeFlexInaMONO] = { "#bbbbbb", "#000033", "#000033", "normMONO" },
[SchemeFlexInaGRID] = { "#bbbbbb", "#003300", "#003300", "normGRID" },
[SchemeFlexInaGRD1] = { "#bbbbbb", "#003300", "#003300", "normGRD1" },
[SchemeFlexInaGRD2] = { "#bbbbbb", "#003300", "#003300", "normGRD2" },
[SchemeFlexInaGRDM] = { "#bbbbbb", "#506600", "#506600", "normGRDM" },
[SchemeFlexInaHGRD] = { "#bbbbbb", "#b96600", "#b96600", "normHGRD" },
[SchemeFlexInaDWDL] = { "#bbbbbb", "#003333", "#003333", "normDWDL" },
[SchemeFlexInaSPRL] = { "#bbbbbb", "#333300", "#333300", "normSPRL" },
[SchemeFlexInaFloat] = { "#bbbbbb", "#115577", "#115577", "normfloat" },
[SchemeFlexSelTTB] = { "#eeeeee", "#550000", "#550000", "selTTB" },
[SchemeFlexSelLTR] = { "#eeeeee", "#550055", "#550055", "selLTR" },
[SchemeFlexSelMONO] = { "#eeeeee", "#212171", "#212171", "selMONO" },
[SchemeFlexSelGRID] = { "#eeeeee", "#005500", "#005500", "selGRID" },
[SchemeFlexSelGRD1] = { "#eeeeee", "#005500", "#005500", "selGRD1" },
[SchemeFlexSelGRD2] = { "#eeeeee", "#005500", "#005500", "selGRD2" },
[SchemeFlexSelGRDM] = { "#eeeeee", "#508822", "#508822", "selGRDM" },
[SchemeFlexSelHGRD] = { "#eeeeee", "#b98822", "#b98822", "selHGRD" },
[SchemeFlexSelDWDL] = { "#eeeeee", "#005555", "#005555", "selDWDL" },
[SchemeFlexSelSPRL] = { "#eeeeee", "#555500", "#555500", "selSPRL" },
[SchemeFlexSelFloat] = { "#eeeeee", "#117799", "#117799", "selfloat" },
[SchemeFlexActTTB] = { "#eeeeee", "#440000", "#440000", "act.TTB" },
[SchemeFlexActLTR] = { "#eeeeee", "#440044", "#440044", "act.LTR" },
[SchemeFlexActMONO] = { "#eeeeee", "#000044", "#000044", "act.MONO" },
[SchemeFlexActGRID] = { "#eeeeee", "#004400", "#004400", "act.GRID" },
[SchemeFlexActGRD1] = { "#eeeeee", "#004400", "#004400", "act.GRD1" },
[SchemeFlexActGRD2] = { "#eeeeee", "#004400", "#004400", "act.GRD2" },
[SchemeFlexActGRDM] = { "#eeeeee", "#507711", "#507711", "act.GRDM" },
[SchemeFlexActHGRD] = { "#eeeeee", "#b97711", "#b97711", "act.HGRD" },
[SchemeFlexActDWDL] = { "#eeeeee", "#004444", "#004444", "act.DWDL" },
[SchemeFlexActSPRL] = { "#eeeeee", "#444400", "#444400", "act.SPRL" },
[SchemeFlexActFloat] = { "#eeeeee", "#116688", "#116688", "act.float" },
[SchemeFlexInaTTB] = { "#bbbbbb", "#330000", "#330000", "norm.TTB" },
[SchemeFlexInaLTR] = { "#bbbbbb", "#330033", "#330033", "norm.LTR" },
[SchemeFlexInaMONO] = { "#bbbbbb", "#000033", "#000033", "norm.MONO" },
[SchemeFlexInaGRID] = { "#bbbbbb", "#003300", "#003300", "norm.GRID" },
[SchemeFlexInaGRD1] = { "#bbbbbb", "#003300", "#003300", "norm.GRD1" },
[SchemeFlexInaGRD2] = { "#bbbbbb", "#003300", "#003300", "norm.GRD2" },
[SchemeFlexInaGRDM] = { "#bbbbbb", "#506600", "#506600", "norm.GRDM" },
[SchemeFlexInaHGRD] = { "#bbbbbb", "#b96600", "#b96600", "norm.HGRD" },
[SchemeFlexInaDWDL] = { "#bbbbbb", "#003333", "#003333", "norm.DWDL" },
[SchemeFlexInaSPRL] = { "#bbbbbb", "#333300", "#333300", "norm.SPRL" },
[SchemeFlexInaFloat] = { "#bbbbbb", "#115577", "#115577", "norm.float" },
[SchemeFlexSelTTB] = { "#eeeeee", "#550000", "#550000", "sel.TTB" },
[SchemeFlexSelLTR] = { "#eeeeee", "#550055", "#550055", "sel.LTR" },
[SchemeFlexSelMONO] = { "#eeeeee", "#212171", "#212171", "sel.MONO" },
[SchemeFlexSelGRID] = { "#eeeeee", "#005500", "#005500", "sel.GRID" },
[SchemeFlexSelGRD1] = { "#eeeeee", "#005500", "#005500", "sel.GRD1" },
[SchemeFlexSelGRD2] = { "#eeeeee", "#005500", "#005500", "sel.GRD2" },
[SchemeFlexSelGRDM] = { "#eeeeee", "#508822", "#508822", "sel.GRDM" },
[SchemeFlexSelHGRD] = { "#eeeeee", "#b98822", "#b98822", "sel.HGRD" },
[SchemeFlexSelDWDL] = { "#eeeeee", "#005555", "#005555", "sel.DWDL" },
[SchemeFlexSelSPRL] = { "#eeeeee", "#555500", "#555500", "sel.SPRL" },
[SchemeFlexSelFloat] = { "#eeeeee", "#117799", "#117799", "sel.float" },
#endif // BAR_FLEXWINTITLE_PATCH
};

@ -15,7 +15,6 @@ loadxrdbcolor(XrmDatabase xrdb, char **dest, unsigned int *alpha, char *resource
switch(sscanf(value.addr, "#%6x%2x", &rgb, &a)) {
case 1:
sprintf(*dest, "#%.6x", rgb);
*alpha = 0xFF;
return 1;
case 2:
sprintf(*dest, "#%.6x", rgb);
@ -25,6 +24,24 @@ loadxrdbcolor(XrmDatabase xrdb, char **dest, unsigned int *alpha, char *resource
return 1;
}
#if BAR_ALPHA_PATCH
int
loadxrdbalpha(XrmDatabase xrdb, unsigned int *alpha, char *resource)
{
XrmValue value;
char *type;
if (XrmGetResource(xrdb, resource, NULL, &type, &value) != True)
return 0;
if (value.addr == NULL)
return 0;
*alpha = atoi(value.addr);
return 1;
}
#endif // BAR_ALPHA_PATCH
void
loadxrdbconfig(XrmDatabase xrdb, char *name, enum resource_type rtype, void *dst)
{
@ -70,7 +87,7 @@ loadxrdb()
int s, c;
char resource[40];
char *pattern = "dwm.%s%scolor";
char *pattern = "dwm.%s.%s.%s";
char fg[20] = "#00000000";
char bg[20] = "#00000000";
@ -88,17 +105,18 @@ loadxrdb()
xrdb = XrmGetStringDatabase(resm);
if (xrdb != NULL) {
for (s = 0; s < SchemeLast; s++) {
/* Skip schemes that do not specify a resource string */
if (colors[s][ColCount][0] == '\0')
continue;
for (c = 0; c < LENGTH(columns); c++) {
#if BAR_ALPHA_PATCH
alphas[c] = default_alphas[c];
sprintf(resource, pattern, colors[s][ColCount], columns[c], "alpha");
if (!loadxrdbalpha(xrdb, &alphas[c], resource))
alphas[c] = default_alphas[c];
#endif // BAR_ALPHA_PATCH
sprintf(resource, pattern, colors[s][ColCount], columns[c]);
sprintf(resource, pattern, colors[s][ColCount], columns[c], "color");
if (!loadxrdbcolor(xrdb, &clrnames[c], &alphas[c], resource))
strcpy(clrnames[c], colors[s][c]);
}

@ -14,6 +14,9 @@ typedef struct {
} ResourcePref;
static void loadxrdb(void);
#if BAR_ALPHA_PATCH
static int loadxrdbalpha(XrmDatabase xrdb, unsigned int *alpha, char *resource);
#endif // BAR_ALPHA_PATCH
static int loadxrdbcolor(XrmDatabase xrdb, char **dest, unsigned int *alpha, char *resource);
static void loadxrdbconfig(XrmDatabase xrdb, char *name, enum resource_type rtype, void *dst);
static void xrdb(const Arg *arg);
static void xrdb(const Arg *arg);
Loading…
Cancel
Save