sites

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

commit fa4617a6d3057134446dc77e48a2f00fa8412f86
parent b82688ff68ebd0b3403e205cbdbcc685356fcb0e
Author: Steve Ward <planet36@gmail.com>
Date:   Sun, 31 May 2020 22:53:11 -0400

[st][patch][blinking_cursor] Add updated patch

Diffstat:
Mst.suckless.org/patches/blinking_cursor/index.md | 21+++++++++++----------
Ast.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff | 150+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 161 insertions(+), 10 deletions(-)

diff --git a/st.suckless.org/patches/blinking_cursor/index.md b/st.suckless.org/patches/blinking_cursor/index.md @@ -6,25 +6,26 @@ Description This patch allows the use of a blinking cursor. To demonstrate the available cursor styles, try these commands: - echo -e -n "\x1b[\x30 q" # blinking block - echo -e -n "\x1b[\x31 q" # blinking block (default) - echo -e -n "\x1b[\x32 q" # steady block - echo -e -n "\x1b[\x33 q" # blinking underline - echo -e -n "\x1b[\x34 q" # steady underline - echo -e -n "\x1b[\x35 q" # blinking bar - echo -e -n "\x1b[\x36 q" # steady bar + echo -e -n "\x1b[\x30 q" # Blinking block + echo -e -n "\x1b[\x31 q" # Blinking block (default) + echo -e -n "\x1b[\x32 q" # Steady block + echo -e -n "\x1b[\x33 q" # Blinking underline + echo -e -n "\x1b[\x34 q" # Steady underline + echo -e -n "\x1b[\x35 q" # Blinking bar + echo -e -n "\x1b[\x36 q" # Steady bar + echo -e -n "\x1b[\x37 q" # Blinking st cursor + echo -e -n "\x1b[\x38 q" # Steady st cursor When drawing is triggered, the cursor does not blink. Notes ----- -* Only cursor styles 0, 1, 3, and 5 blink. Set `cursorstyle` accordingly. +* Only cursor styles 0, 1, 3, 5, and 7 blink. Set `cursorstyle` accordingly. * Cursor styles are defined [here](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81). Download -------- -* [st-blinking\_cursor-20200511-914fb82.diff](st-blinking_cursor-20200511-914fb82.diff) -* [st-blinking\_cursor-20200515-045a0fa.diff](st-blinking_cursor-20200515-045a0fa.diff) +* [st-blinking\_cursor-20200531-a2a7044.diff](st-blinking_cursor-20200531-a2a7044.diff) Authors ------- diff --git a/st.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff b/st.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff @@ -0,0 +1,150 @@ +From bff176133618854676bbdc74c0099f184d3da365 Mon Sep 17 00:00:00 2001 +From: Steve Ward <planet36@gmail.com> +Date: Sun, 31 May 2020 22:48:25 -0400 +Subject: [PATCH] Allow blinking cursor + +--- + config.def.h | 19 +++++++++++++------ + x.c | 42 ++++++++++++++++++++++++++++++++---------- + 2 files changed, 45 insertions(+), 16 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 6f05dce..3dbe915 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -133,13 +133,20 @@ static unsigned int defaultcs = 256; + static unsigned int defaultrcs = 257; + + /* +- * Default shape of cursor +- * 2: Block ("█") +- * 4: Underline ("_") +- * 6: Bar ("|") +- * 7: Snowman ("☃") ++ * https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81 ++ * Default style of cursor ++ * 0: Blinking block ++ * 1: Blinking block (default) ++ * 2: Steady block ("█") ++ * 3: Blinking underline ++ * 4: Steady underline ("_") ++ * 5: Blinking bar ++ * 6: Steady bar ("|") ++ * 7: Blinking st cursor ++ * 8: Steady st cursor + */ +-static unsigned int cursorshape = 2; ++static unsigned int cursorstyle = 1; ++static Rune stcursor = 0x2603; /* snowman (U+2603) */ + + /* + * Default columns and rows numbers +diff --git a/x.c b/x.c +index 210f184..bd80a5e 100644 +--- a/x.c ++++ b/x.c +@@ -253,6 +253,7 @@ static char *opt_name = NULL; + static char *opt_title = NULL; + + static int oldbutton = 3; /* button event on startup: 3 = release */ ++static int cursorblinks = 0; + + void + clipcopy(const Arg *dummy) +@@ -1526,16 +1527,19 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) + /* draw the new one */ + if (IS_SET(MODE_FOCUSED)) { + switch (win.cursor) { +- case 7: /* st extension */ +- g.u = 0x2603; /* snowman (U+2603) */ ++ case 0: /* Blinking block */ ++ case 1: /* Blinking block (default) */ ++ if (IS_SET(MODE_BLINK)) ++ break; + /* FALLTHROUGH */ +- case 0: /* Blinking Block */ +- case 1: /* Blinking Block (Default) */ +- case 2: /* Steady Block */ ++ case 2: /* Steady block */ + xdrawglyph(g, cx, cy); + break; +- case 3: /* Blinking Underline */ +- case 4: /* Steady Underline */ ++ case 3: /* Blinking underline */ ++ if (IS_SET(MODE_BLINK)) ++ break; ++ /* FALLTHROUGH */ ++ case 4: /* Steady underline */ + XftDrawRect(xw.draw, &drawcol, + borderpx + cx * win.cw, + borderpx + (cy + 1) * win.ch - \ +@@ -1543,12 +1547,23 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) + win.cw, cursorthickness); + break; + case 5: /* Blinking bar */ ++ if (IS_SET(MODE_BLINK)) ++ break; ++ /* FALLTHROUGH */ + case 6: /* Steady bar */ + XftDrawRect(xw.draw, &drawcol, + borderpx + cx * win.cw, + borderpx + cy * win.ch, + cursorthickness, win.ch); + break; ++ case 7: /* Blinking st cursor */ ++ if (IS_SET(MODE_BLINK)) ++ break; ++ /* FALLTHROUGH */ ++ case 8: /* Steady st cursor */ ++ g.u = stcursor; ++ xdrawglyph(g, cx, cy); ++ break; + } + } else { + XftDrawRect(xw.draw, &drawcol, +@@ -1690,9 +1705,12 @@ xsetmode(int set, unsigned int flags) + int + xsetcursor(int cursor) + { +- if (!BETWEEN(cursor, 0, 7)) /* 7: st extension */ ++ if (!BETWEEN(cursor, 0, 8)) /* 7-8: st extensions */ + return 1; + win.cursor = cursor; ++ cursorblinks = win.cursor == 0 || win.cursor == 1 || ++ win.cursor == 3 || win.cursor == 5 || ++ win.cursor == 7; + return 0; + } + +@@ -1936,6 +1954,10 @@ run(void) + if (FD_ISSET(ttyfd, &rfd) || xev) { + if (!drawing) { + trigger = now; ++ if (IS_SET(MODE_BLINK)) { ++ win.mode ^= MODE_BLINK; ++ } ++ lastblink = now; + drawing = 1; + } + timeout = (maxlatency - TIMEDIFF(now, trigger)) \ +@@ -1946,7 +1968,7 @@ run(void) + + /* idle detected or maxlatency exhausted -> draw */ + timeout = -1; +- if (blinktimeout && tattrset(ATTR_BLINK)) { ++ if (blinktimeout && (cursorblinks || tattrset(ATTR_BLINK))) { + timeout = blinktimeout - TIMEDIFF(now, lastblink); + if (timeout <= 0) { + if (-timeout > blinktimeout) /* start visible */ +@@ -1982,7 +2004,7 @@ main(int argc, char *argv[]) + { + xw.l = xw.t = 0; + xw.isfixed = False; +- xsetcursor(cursorshape); ++ xsetcursor(cursorstyle); + + ARGBEGIN { + case 'a': +-- +2.20.1 +