mirror of
https://github.com/tmux/tmux.git
synced 2025-01-12 19:39:04 +00:00
Support OSC 10 and 11 to set foreground and background colours, from
"bertnp" in GitHub issue 942.
This commit is contained in:
parent
dbc8cae18c
commit
d5158620bb
48
input.c
48
input.c
@ -110,6 +110,8 @@ static void input_set_state(struct window_pane *,
|
|||||||
static void input_reset_cell(struct input_ctx *);
|
static void input_reset_cell(struct input_ctx *);
|
||||||
|
|
||||||
static void input_osc_4(struct window_pane *, const char *);
|
static void input_osc_4(struct window_pane *, const char *);
|
||||||
|
static void input_osc_10(struct window_pane *, const char *);
|
||||||
|
static void input_osc_11(struct window_pane *, const char *);
|
||||||
static void input_osc_52(struct window_pane *, const char *);
|
static void input_osc_52(struct window_pane *, const char *);
|
||||||
static void input_osc_104(struct window_pane *, const char *);
|
static void input_osc_104(struct window_pane *, const char *);
|
||||||
|
|
||||||
@ -1900,13 +1902,19 @@ input_exit_osc(struct input_ctx *ictx)
|
|||||||
case 4:
|
case 4:
|
||||||
input_osc_4(ictx->wp, p);
|
input_osc_4(ictx->wp, p);
|
||||||
break;
|
break;
|
||||||
case 52:
|
case 10:
|
||||||
input_osc_52(ictx->wp, p);
|
input_osc_10(ictx->wp, p);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
input_osc_11(ictx->wp, p);
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
if (*p != '?') /* ? is colour request */
|
if (*p != '?') /* ? is colour request */
|
||||||
screen_set_cursor_colour(ictx->ctx.s, p);
|
screen_set_cursor_colour(ictx->ctx.s, p);
|
||||||
break;
|
break;
|
||||||
|
case 52:
|
||||||
|
input_osc_52(ictx->wp, p);
|
||||||
|
break;
|
||||||
case 104:
|
case 104:
|
||||||
input_osc_104(ictx->wp, p);
|
input_osc_104(ictx->wp, p);
|
||||||
break;
|
break;
|
||||||
@ -2052,6 +2060,42 @@ bad:
|
|||||||
free(copy);
|
free(copy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle the OSC 10 sequence for setting background colour. */
|
||||||
|
static void
|
||||||
|
input_osc_10(struct window_pane *wp, const char *p)
|
||||||
|
{
|
||||||
|
u_int r, g, b;
|
||||||
|
|
||||||
|
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
|
||||||
|
goto bad;
|
||||||
|
|
||||||
|
wp->colgc.fg = colour_join_rgb(r, g, b);
|
||||||
|
wp->flags |= PANE_REDRAW;
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
bad:
|
||||||
|
log_debug("bad OSC 10: %s", p);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Handle the OSC 11 sequence for setting background colour. */
|
||||||
|
static void
|
||||||
|
input_osc_11(struct window_pane *wp, const char *p)
|
||||||
|
{
|
||||||
|
u_int r, g, b;
|
||||||
|
|
||||||
|
if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
|
||||||
|
goto bad;
|
||||||
|
|
||||||
|
wp->colgc.bg = colour_join_rgb(r, g, b);
|
||||||
|
wp->flags |= PANE_REDRAW;
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
bad:
|
||||||
|
log_debug("bad OSC 11: %s", p);
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle the OSC 52 sequence for setting the clipboard. */
|
/* Handle the OSC 52 sequence for setting the clipboard. */
|
||||||
static void
|
static void
|
||||||
input_osc_52(struct window_pane *wp, const char *p)
|
input_osc_52(struct window_pane *wp, const char *p)
|
||||||
|
Loading…
Reference in New Issue
Block a user