aboutsummaryrefslogtreecommitdiff
path: root/tty-term.c
diff options
context:
space:
mode:
authornicm <nicm>2017-05-31 08:43:44 +0000
committernicm <nicm>2017-05-31 08:43:44 +0000
commit7eb496c00c313c2f8ab8debe6d154d5ac0db277b (patch)
tree6457738ebf46acb92d62e2d2f761424f6dc393f4 /tty-term.c
parentaad4e4ddb194cba9c01b0ddd696fb7b214e1a7eb (diff)
downloadrtmux-7eb496c00c313c2f8ab8debe6d154d5ac0db277b.tar.gz
rtmux-7eb496c00c313c2f8ab8debe6d154d5ac0db277b.tar.bz2
rtmux-7eb496c00c313c2f8ab8debe6d154d5ac0db277b.zip
Look for setrgbf and setrgbb terminfo extensions for RGB colour. This is
the most reasonable of the various (some bizarre) suggestions for capabilities.
Diffstat (limited to 'tty-term.c')
-rw-r--r--tty-term.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/tty-term.c b/tty-term.c
index d1142ad2..38829bdd 100644
--- a/tty-term.c
+++ b/tty-term.c
@@ -242,6 +242,8 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_SE] = { TTYCODE_STRING, "Se" },
[TTYC_SETAB] = { TTYCODE_STRING, "setab" },
[TTYC_SETAF] = { TTYCODE_STRING, "setaf" },
+ [TTYC_SETRGBB] = { TTYCODE_STRING, "setrgbb" },
+ [TTYC_SETRGBF] = { TTYCODE_STRING, "setrgbf" },
[TTYC_SGR0] = { TTYCODE_STRING, "sgr0" },
[TTYC_SITM] = { TTYCODE_STRING, "sitm" },
[TTYC_SMACS] = { TTYCODE_STRING, "smacs" },
@@ -521,6 +523,18 @@ tty_term_find(char *name, int fd, char **cause)
code->type = TTYCODE_STRING;
}
+ /* On terminals with RGB colour (TC), fill in setrgbf and setrgbb. */
+ if (tty_term_flag(term, TTYC_TC) &&
+ !tty_term_has(term, TTYC_SETRGBF) &&
+ !tty_term_has(term, TTYC_SETRGBB)) {
+ code = &term->codes[TTYC_SETRGBF];
+ code->value.string = xstrdup("\033[38;2;%p1%d;%p2%d;%p3%dm");
+ code->type = TTYCODE_STRING;
+ code = &term->codes[TTYC_SETRGBB];
+ code->value.string = xstrdup("\033[48;2;%p1%d;%p2%d;%p3%dm");
+ code->type = TTYCODE_STRING;
+ }
+
return (term);
error:
@@ -577,6 +591,12 @@ tty_term_string2(struct tty_term *term, enum tty_code_code code, int a, int b)
}
const char *
+tty_term_string3(struct tty_term *term, enum tty_code_code code, int a, int b, int c)
+{
+ return (tparm((char *) tty_term_string(term, code), a, b, c));
+}
+
+const char *
tty_term_ptr1(struct tty_term *term, enum tty_code_code code, const void *a)
{
return (tparm((char *) tty_term_string(term, code), a));