On 08/06/2026 20:54, Thomas Dickey wrote:
On Mon, Jun 08, 2026 at 10:12:50AM +0200, Jocelyn Falempe wrote:
On 07/06/2026 16:30, Thomas Dickey wrote:
...
(also, I saw flash working -- once -- and not later: a bug)
flash and blink are not implemented, so I'm more surprised that it did work
once.
infocmp kmscon:
flash=\E[?5h$<200/>\E[?5l,
Ok, I mean libtsm has no timer, and only send the terminal states when
kmscon asks. But here it's the shell that is doing the sleep, so that
should work.
I tested this command:
$printf '\e[?5h' && sleep 0.2 && printf '\e[?5l'
And that works reliably on my test laptop.
That's using DECSCNM, which is in the source code here:
tsm-render.c:142: if (con->flags & TSM_SCREEN_INVERSE)
tsm-screen.c:1029: if (!(old & TSM_SCREEN_INVERSE) && (flags &
TSM_SCREEN_INVERSE))
tsm-screen.c:1060: if ((old & TSM_SCREEN_INVERSE) && (flags &
TSM_SCREEN_INVERSE))
tsm-vte.c:1659: TSM_SCREEN_INVERSE);
tsm-vte.c:1662: TSM_SCREEN_INVERSE);
case 5: /* DECSCNM */
set_reset_flag(vte, set,
TSM_VTE_FLAG_INVERSE_SCREEN_MODE);
if (set)
tsm_screen_set_flags(vte->con,
TSM_SCREEN_INVERSE);
else
tsm_screen_reset_flags(vte->con,
TSM_SCREEN_INVERSE);
continue;
/* TODO: do some more sophisticated inverse here. When
* INVERSE mode is set, we should instead just select
* inverse colors instead of switching background and
* foreground */
if (con->flags & TSM_SCREEN_INVERSE)
attr.inverse = !attr.inverse;
if (in_sel || was_sel) {
was_sel = false;
attr.inverse = !attr.inverse;
}