mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-23 15:09:24 -05:00
Make terminal true-colour mode configurable.
I know some users don't like any colour _at all_, and we have a separate option to turn off xterm-style 256-colour sequences, so it seems remiss not to have an option to disable true colour as well.
This commit is contained in:
parent
6b824713d5
commit
2f9738a282
3
config.c
3
config.c
@ -1898,6 +1898,9 @@ void setup_config_box(struct controlbox *b, int midsession,
|
|||||||
ctrl_checkbox(s, "Allow terminal to use xterm 256-colour mode", '2',
|
ctrl_checkbox(s, "Allow terminal to use xterm 256-colour mode", '2',
|
||||||
HELPCTX(colours_xterm256), conf_checkbox_handler,
|
HELPCTX(colours_xterm256), conf_checkbox_handler,
|
||||||
I(CONF_xterm_256_colour));
|
I(CONF_xterm_256_colour));
|
||||||
|
ctrl_checkbox(s, "Allow terminal to use 24-bit colours", '4',
|
||||||
|
HELPCTX(colours_truecolour), conf_checkbox_handler,
|
||||||
|
I(CONF_true_colour));
|
||||||
ctrl_radiobuttons(s, "Indicate bolded text by changing:", 'b', 3,
|
ctrl_radiobuttons(s, "Indicate bolded text by changing:", 'b', 3,
|
||||||
HELPCTX(colours_bold),
|
HELPCTX(colours_bold),
|
||||||
conf_radiobutton_handler, I(CONF_bold_style),
|
conf_radiobutton_handler, I(CONF_bold_style),
|
||||||
|
@ -1549,6 +1549,15 @@ If you do not see \cq{colors#256} in the output, you may need to
|
|||||||
change your terminal setting. On modern Linux machines, you could
|
change your terminal setting. On modern Linux machines, you could
|
||||||
try \cq{xterm-256color}.
|
try \cq{xterm-256color}.
|
||||||
|
|
||||||
|
\S{config-truecolour} \q{Allow terminal to use 24-bit colour}
|
||||||
|
|
||||||
|
\cfg{winhelp-topic}{colours.truecolour}
|
||||||
|
|
||||||
|
This option is enabled by default. If it is disabled, PuTTY will
|
||||||
|
ignore any control sequences sent by the server which use the control
|
||||||
|
sequences supported by modern terminals to specify arbitrary 24-bit
|
||||||
|
RGB colour value.
|
||||||
|
|
||||||
\S{config-boldcolour} \q{Indicate bolded text by changing...}
|
\S{config-boldcolour} \q{Indicate bolded text by changing...}
|
||||||
|
|
||||||
\cfg{winhelp-topic}{colours.bold}
|
\cfg{winhelp-topic}{colours.bold}
|
||||||
|
1
putty.h
1
putty.h
@ -859,6 +859,7 @@ void cleanup_exit(int);
|
|||||||
/* Colour options */ \
|
/* Colour options */ \
|
||||||
X(INT, NONE, ansi_colour) \
|
X(INT, NONE, ansi_colour) \
|
||||||
X(INT, NONE, xterm_256_colour) \
|
X(INT, NONE, xterm_256_colour) \
|
||||||
|
X(INT, NONE, true_colour) \
|
||||||
X(INT, NONE, system_colour) \
|
X(INT, NONE, system_colour) \
|
||||||
X(INT, NONE, try_palette) \
|
X(INT, NONE, try_palette) \
|
||||||
X(INT, NONE, bold_style) \
|
X(INT, NONE, bold_style) \
|
||||||
|
@ -609,6 +609,7 @@ void save_open_settings(void *sesskey, Conf *conf)
|
|||||||
write_setting_i(sesskey, "TryPalette", conf_get_int(conf, CONF_try_palette));
|
write_setting_i(sesskey, "TryPalette", conf_get_int(conf, CONF_try_palette));
|
||||||
write_setting_i(sesskey, "ANSIColour", conf_get_int(conf, CONF_ansi_colour));
|
write_setting_i(sesskey, "ANSIColour", conf_get_int(conf, CONF_ansi_colour));
|
||||||
write_setting_i(sesskey, "Xterm256Colour", conf_get_int(conf, CONF_xterm_256_colour));
|
write_setting_i(sesskey, "Xterm256Colour", conf_get_int(conf, CONF_xterm_256_colour));
|
||||||
|
write_setting_i(sesskey, "TrueColour", conf_get_int(conf, CONF_true_colour));
|
||||||
write_setting_i(sesskey, "BoldAsColour", conf_get_int(conf, CONF_bold_style)-1);
|
write_setting_i(sesskey, "BoldAsColour", conf_get_int(conf, CONF_bold_style)-1);
|
||||||
|
|
||||||
for (i = 0; i < 22; i++) {
|
for (i = 0; i < 22; i++) {
|
||||||
@ -1005,6 +1006,7 @@ void load_open_settings(void *sesskey, Conf *conf)
|
|||||||
gppi(sesskey, "TryPalette", 0, conf, CONF_try_palette);
|
gppi(sesskey, "TryPalette", 0, conf, CONF_try_palette);
|
||||||
gppi(sesskey, "ANSIColour", 1, conf, CONF_ansi_colour);
|
gppi(sesskey, "ANSIColour", 1, conf, CONF_ansi_colour);
|
||||||
gppi(sesskey, "Xterm256Colour", 1, conf, CONF_xterm_256_colour);
|
gppi(sesskey, "Xterm256Colour", 1, conf, CONF_xterm_256_colour);
|
||||||
|
gppi(sesskey, "TrueColour", 1, conf, CONF_true_colour);
|
||||||
i = gppi_raw(sesskey, "BoldAsColour", 1); conf_set_int(conf, CONF_bold_style, i+1);
|
i = gppi_raw(sesskey, "BoldAsColour", 1); conf_set_int(conf, CONF_bold_style, i+1);
|
||||||
|
|
||||||
for (i = 0; i < 22; i++) {
|
for (i = 0; i < 22; i++) {
|
||||||
|
@ -1458,6 +1458,7 @@ void term_copy_stuff_from_conf(Terminal *term)
|
|||||||
term->scroll_on_disp = conf_get_int(term->conf, CONF_scroll_on_disp);
|
term->scroll_on_disp = conf_get_int(term->conf, CONF_scroll_on_disp);
|
||||||
term->scroll_on_key = conf_get_int(term->conf, CONF_scroll_on_key);
|
term->scroll_on_key = conf_get_int(term->conf, CONF_scroll_on_key);
|
||||||
term->xterm_256_colour = conf_get_int(term->conf, CONF_xterm_256_colour);
|
term->xterm_256_colour = conf_get_int(term->conf, CONF_xterm_256_colour);
|
||||||
|
term->true_colour = conf_get_int(term->conf, CONF_true_colour);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse the control-character escapes in the configured
|
* Parse the control-character escapes in the configured
|
||||||
@ -5171,7 +5172,6 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
|
|||||||
tattr = (tattr & ~(ATTR_FGMASK | ATTR_BGMASK)) |
|
tattr = (tattr & ~(ATTR_FGMASK | ATTR_BGMASK)) |
|
||||||
ATTR_DEFFG | ATTR_DEFBG;
|
ATTR_DEFFG | ATTR_DEFBG;
|
||||||
|
|
||||||
tc = d->truecolour;
|
|
||||||
if (!term->xterm_256_colour) {
|
if (!term->xterm_256_colour) {
|
||||||
int colour;
|
int colour;
|
||||||
colour = (tattr & ATTR_FGMASK) >> ATTR_FGSHIFT;
|
colour = (tattr & ATTR_FGMASK) >> ATTR_FGSHIFT;
|
||||||
@ -5182,6 +5182,12 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise)
|
|||||||
tattr = (tattr &~ ATTR_BGMASK) | ATTR_DEFBG;
|
tattr = (tattr &~ ATTR_BGMASK) | ATTR_DEFBG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (term->true_colour) {
|
||||||
|
tc = d->truecolour;
|
||||||
|
} else {
|
||||||
|
tc.fg = tc.bg = optionalrgb_none;
|
||||||
|
}
|
||||||
|
|
||||||
switch (tchar & CSET_MASK) {
|
switch (tchar & CSET_MASK) {
|
||||||
case CSET_ASCII:
|
case CSET_ASCII:
|
||||||
tchar = term->ucsdata->unitab_line[tchar & 0xFF];
|
tchar = term->ucsdata->unitab_line[tchar & 0xFF];
|
||||||
|
@ -325,6 +325,7 @@ struct terminal_tag {
|
|||||||
int scroll_on_disp;
|
int scroll_on_disp;
|
||||||
int scroll_on_key;
|
int scroll_on_key;
|
||||||
int xterm_256_colour;
|
int xterm_256_colour;
|
||||||
|
int true_colour;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define in_utf(term) ((term)->utf || (term)->ucsdata->line_codepage==CP_UTF8)
|
#define in_utf(term) ((term)->utf || (term)->ucsdata->line_codepage==CP_UTF8)
|
||||||
|
@ -125,6 +125,7 @@
|
|||||||
#define WINHELP_CTX_selection_rtf "selection.rtf:config-rtfpaste"
|
#define WINHELP_CTX_selection_rtf "selection.rtf:config-rtfpaste"
|
||||||
#define WINHELP_CTX_colours_ansi "colours.ansi:config-ansicolour"
|
#define WINHELP_CTX_colours_ansi "colours.ansi:config-ansicolour"
|
||||||
#define WINHELP_CTX_colours_xterm256 "colours.xterm256:config-xtermcolour"
|
#define WINHELP_CTX_colours_xterm256 "colours.xterm256:config-xtermcolour"
|
||||||
|
#define WINHELP_CTX_colours_truecolour "colours.truecolour:config-truecolour"
|
||||||
#define WINHELP_CTX_colours_bold "colours.bold:config-boldcolour"
|
#define WINHELP_CTX_colours_bold "colours.bold:config-boldcolour"
|
||||||
#define WINHELP_CTX_colours_system "colours.system:config-syscolour"
|
#define WINHELP_CTX_colours_system "colours.system:config-syscolour"
|
||||||
#define WINHELP_CTX_colours_logpal "colours.logpal:config-logpalette"
|
#define WINHELP_CTX_colours_logpal "colours.logpal:config-logpalette"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user