---- - x.c | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) - -diff --git a/x.c b/x.c -index 120e495..5a013f8 100644 ---- a/x.c -+++ b/x.c -_AT_@ -1517,11 +1517,24 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) - if (selected(cx, cy)) { - g.fg = defaultfg; - g.bg = defaultrcs; -+ drawcol = dc.col[g.bg]; - } else { -+ /** swap background, much like alacritty */ -+ g.bg = g.fg; - g.fg = defaultbg; -- g.bg = defaultcs; -+ -+ /** -+ * There were times when the `g.fg` value (now updated to `g.bg) -+ * would jump to a very large one and opening e.g. neovim -+ * would cause a segfault, thus I'm arbitrarily picking this value -+ * and it seems to work, but it'd best if this was improved. -+ */ -+ if (g.bg > 259) { -+ drawcol = dc.col[g.fg]; -+ } else { -+ drawcol = dc.col[g.bg]; -+ } - } -- drawcol = dc.col[g.bg]; - } - - /* draw the new one */ --- -2.30.1 - diff --git a/st.suckless.org/patches/cursor-color/cursor-color.png b/st.suckless.org/patches/dynamic-cursor-color/dynamic-cursor-color.png similarity index 100% rename from st.suckless.org/patches/cursor-color/cursor-color.png rename to st.suckless.org/patches/dynamic-cursor-color/dynamic-cursor-color.png diff --git a/st.suckless.org/patches/dynamic-cursor-color/index.md b/st.suckless.org/patches/dynamic-cursor-color/index.md new file mode 100644 index 00000000..5b8635e1 --- /dev/null +++ b/st.suckless.org/patches/dynamic-cursor-color/index.md _AT_@ -0,0 +1,25 @@ +dynamic-cursor-color +============ + +![](dynamic-cursor-color.png) + +Description +----------- +Swaps the colors of your cursor and the character you're currently on (much like alacritty). Some say the effect is very appealing:) + +Notes +----- + +Might be incomplete - I'm new and improvements are very welcome! + +- Might have some edge cases where it doesn't work properly +- Performance degradation considerations? More testing & feedback needed + +Download +-------- +* [st-dynamic-cursor-color-0.8.4.diff](st-dynamic-cursor-color-0.8.4.diff) + +Authors +------- +* Kipras Melnikovas ([kipras.org](http://kipras.org)) <kipras_AT_kipras.org> +* Stein Gunnar Bakkeby ([github.com/bakkeby](http://github.com/bakkeby)) diff --git a/st.suckless.org/patches/dynamic-cursor-color/st-dynamic-cursor-color-0.8.4.diff b/st.suckless.org/patches/dynamic-cursor-color/st-dynamic-cursor-color-0.8.4.diff new file mode 100644 index 00000000..adf24fd2 --- /dev/null +++ b/st.suckless.org/patches/dynamic-cursor-color/st-dynamic-cursor-color-0.8.4.diff _AT_@ -0,0 +1,80 @@ +From 1115d1d45effebc728891f76b6c8a44568a81bb3 Mon Sep 17 00:00:00 2001 +From: Kipras Melnikovas <kipras_AT_kipras.org> +Date: Thu, 25 Feb 2021 04:13:49 +0200 +Subject: [PATCH] improve cursor-color patch and add dynamic- prefix + +very thankful to Bakkeby [1] for helping out with various improvements, +crash fixes etc., as seen in [2]! + +also renamed the patch (added dynamic- prefix), +because I think this better describes it. + +[1] https://github.com/bakkeby +[2] https://github.com/bakkeby/st-flexipatch/issues/10 + +Signed-off-by: Kipras Melnikovas <kipras_AT_kipras.org> +--- + x.c | 39 ++++++++++++++++++++++++++++++++++++--- + 1 file changed, 36 insertions(+), 3 deletions(-) + +diff --git a/x.c b/x.c +index 120e495..e47e236 100644 +--- a/x.c ++++ b/x.c +_AT_@ -1489,6 +1489,7 @@ void + xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) + { + Color drawcol; ++ XRenderColor colfg; + + /* remove the old cursor */ + if (selected(ox, oy)) +_AT_@ -1517,11 +1518,43 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) + if (selected(cx, cy)) { + g.fg = defaultfg; + g.bg = defaultrcs; ++ drawcol = dc.col[g.bg]; + } else { +- g.fg = defaultbg; +- g.bg = defaultcs; ++ /** this is the main part of the dynamic cursor color */ ++ if (IS_SET(MODE_FOCUSED)) { ++ g.bg = g.fg; ++ g.fg = defaultbg; ++ } ++ ++ /** ++ * the following 2 sections are identical, ++ * they differ only by either using `g.fg` or `g.bg`, ++ * and it depends on what background+foreground ++ * the user has configured (light+dark vs dark+light) ++ * ++ * otherwise, in one of the cases, the cursor will be invisible ++ */ ++ ++ if (IS_TRUECOL(g.fg)) { ++ colfg.alpha = 0xffff; ++ colfg.red = TRUERED(g.fg); ++ colfg.green = TRUEGREEN(g.fg); ++ colfg.blue = TRUEBLUE(g.fg); ++ XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &drawcol); ++ } else { ++ drawcol = dc.col[g.fg]; ++ } ++ ++ if (IS_TRUECOL(g.bg)) { ++ colfg.alpha = 0xffff; ++ colfg.red = TRUERED(g.bg); ++ colfg.green = TRUEGREEN(g.bg); ++ colfg.blue = TRUEBLUE(g.bg); ++ XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &drawcol); ++ } else { ++ drawcol = dc.col[g.bg]; ++ } + } +- drawcol = dc.col[g.bg]; + } + + /* draw the new one */ +-- +2.30.1Received on Thu Feb 25 2021 - 03:30:40 CET
This archive was generated by hypermail 2.3.0 : Thu Feb 25 2021 - 03:36:47 CET