From bb56685063532f732f4fbdba1d890931dad3d891 Mon Sep 17 00:00:00 2001 From: Moritz Biering Date: Thu, 6 May 2021 14:32:57 +0200 Subject: [PATCH] Use the additional alpha-value as offset to support a changing alpha properly --- Xdefaults | 2 +- config.h | 5 +++-- x.c | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Xdefaults b/Xdefaults index 2c2d2e0..040c772 100644 --- a/Xdefaults +++ b/Xdefaults @@ -1,6 +1,6 @@ !! Transparency (0-1): st.alpha: 0.92 -st.alphaUnfocus: 0.62 +st.alphaOffset: 0.3 !! Set a default font and font size as below: st.font: Monospace-11; diff --git a/config.h b/config.h index 3adf598..d6eeade 100644 --- a/config.h +++ b/config.h @@ -108,7 +108,8 @@ unsigned int tabspaces = 8; /* bg opacity */ float alpha = 0.8; -float alphaUnfocus = 0.8; +float alphaOffset = 0.0; +float alphaUnfocus; /* Terminal colors (16 first used in escape sequence) */ static const char *colorname[] = { @@ -219,7 +220,7 @@ ResourcePref resources[] = { { "cwscale", FLOAT, &cwscale }, { "chscale", FLOAT, &chscale }, { "alpha", FLOAT, &alpha }, - { "alphaUnfocus", FLOAT, &alphaUnfocus }, + { "alphaOffset", FLOAT, &alphaOffset }, }; /* diff --git a/x.c b/x.c index d1721d7..2580d2a 100644 --- a/x.c +++ b/x.c @@ -182,6 +182,7 @@ static void xsetenv(void); static void xseturgency(int); static int evcol(XEvent *); static int evrow(XEvent *); +static float clamp(float, float, float); static void expose(XEvent *); static void visibility(XEvent *); @@ -319,10 +320,8 @@ changealpha(const Arg *arg) { if((alpha > 0 && arg->f < 0) || (alpha < 1 && arg->f > 0)) alpha += arg->f; - if(alpha < 0) - alpha = 0; - if(alpha > 1) - alpha = 1; + alpha = clamp(alpha, 0.0, 1.0); + alphaUnfocus = clamp(alpha-alphaOffset, 0.0, 1.0); xloadcols(); redraw(); @@ -381,6 +380,15 @@ evrow(XEvent *e) return y / win.ch; } +float +clamp(float value, float lower, float upper) { + if(value < lower) + return lower; + if(value > upper) + return upper; + return value; +} + void mousesel(XEvent *e, int done) { @@ -2298,6 +2306,7 @@ run: cols = MAX(cols, 1); rows = MAX(rows, 1); defaultbg = MAX(LEN(colorname), 256); + alphaUnfocus = alpha-alphaOffset; tnew(cols, rows); xinit(cols, rows); xsetenv();