summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Biering <moritzbiering.mb@gmail.com>2021-05-06 14:32:57 +0200
committerMoritz Biering <moritzbiering.mb@gmail.com>2021-05-06 14:41:36 +0200
commitbb56685063532f732f4fbdba1d890931dad3d891 (patch)
tree8c9b5b12df5d8c57530c2945761dff0d9003c958
parent69925ee23b8b1590f65e1f71f2d9ea5156629868 (diff)
Use the additional alpha-value as offset to support a changing alpha properly
-rw-r--r--Xdefaults2
-rw-r--r--config.h5
-rw-r--r--x.c17
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();