mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
Merge branch 'osc-bel'
This commit is contained in:
commit
ecd8776dfd
3 changed files with 19 additions and 6 deletions
23
osc.c
23
osc.c
|
|
@ -159,7 +159,11 @@ from_clipboard_done(void *user)
|
|||
term_to_slave(term, res, 4);
|
||||
}
|
||||
|
||||
term_to_slave(term, "\033\\", 2);
|
||||
if (term->vt.osc.bel)
|
||||
term_to_slave(term, "\a", 1);
|
||||
else
|
||||
term_to_slave(term, "\033\\", 2);
|
||||
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
|
|
@ -642,10 +646,12 @@ osc_dispatch(struct terminal *term)
|
|||
uint8_t r = (color >> 16) & 0xff;
|
||||
uint8_t g = (color >> 8) & 0xff;
|
||||
uint8_t b = (color >> 0) & 0xff;
|
||||
const char *terminator = term->vt.osc.bel ? "\a" : "\033\\";
|
||||
|
||||
char reply[32];
|
||||
size_t n = xsnprintf(reply, sizeof(reply), "\033]4;%u;rgb:%02x/%02x/%02x\033\\",
|
||||
idx, r, g, b);
|
||||
size_t n = xsnprintf(
|
||||
reply, sizeof(reply), "\033]4;%u;rgb:%02x/%02x/%02x%s",
|
||||
idx, r, g, b, terminator);
|
||||
term_to_slave(term, reply, n);
|
||||
}
|
||||
|
||||
|
|
@ -695,6 +701,7 @@ osc_dispatch(struct terminal *term)
|
|||
uint8_t r = (color >> 16) & 0xff;
|
||||
uint8_t g = (color >> 8) & 0xff;
|
||||
uint8_t b = (color >> 0) & 0xff;
|
||||
const char *terminator = term->vt.osc.bel ? "\a" : "\033\\";
|
||||
|
||||
/*
|
||||
* Reply in XParseColor format
|
||||
|
|
@ -702,8 +709,8 @@ osc_dispatch(struct terminal *term)
|
|||
*/
|
||||
char reply[32];
|
||||
size_t n = xsnprintf(
|
||||
reply, sizeof(reply), "\033]%u;rgb:%02x/%02x/%02x\033\\",
|
||||
param, r, g, b);
|
||||
reply, sizeof(reply), "\033]%u;rgb:%02x/%02x/%02x%s",
|
||||
param, r, g, b, terminator);
|
||||
|
||||
term_to_slave(term, reply, n);
|
||||
break;
|
||||
|
|
@ -761,9 +768,13 @@ osc_dispatch(struct terminal *term)
|
|||
uint8_t r = (term->cursor_color.cursor >> 16) & 0xff;
|
||||
uint8_t g = (term->cursor_color.cursor >> 8) & 0xff;
|
||||
uint8_t b = (term->cursor_color.cursor >> 0) & 0xff;
|
||||
const char *terminator = term->vt.osc.bel ? "\a" : "\033\\";
|
||||
|
||||
char reply[32];
|
||||
size_t n = xsnprintf(reply, sizeof(reply), "\033]12;rgb:%02x/%02x/%02x\033\\", r, g, b);
|
||||
size_t n = xsnprintf(
|
||||
reply, sizeof(reply), "\033]12;rgb:%02x/%02x/%02x%s",
|
||||
r, g, b, terminator);
|
||||
|
||||
term_to_slave(term, reply, n);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ struct vt {
|
|||
uint8_t *data;
|
||||
size_t size;
|
||||
size_t idx;
|
||||
bool bel; /* true if OSC string was terminated by BEL */
|
||||
} osc;
|
||||
|
||||
/* Start coordinate for current OSC-8 URI */
|
||||
|
|
|
|||
1
vt.c
1
vt.c
|
|
@ -579,6 +579,7 @@ action_osc_end(struct terminal *term, uint8_t c)
|
|||
if (!osc_ensure_size(term, term->vt.osc.idx + 1))
|
||||
return;
|
||||
term->vt.osc.data[term->vt.osc.idx] = '\0';
|
||||
term->vt.osc.bel = c == '\a';
|
||||
osc_dispatch(term);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue