Add an option to control how much dimming SGR dim does

This commit is contained in:
Kovid Goyal 2018-05-20 11:00:13 +05:30
parent 6f2d63eb87
commit 7282d8edc1
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
6 changed files with 13 additions and 5 deletions

View File

@ -47,6 +47,7 @@ out float bg_alpha;
#ifdef NEEDS_FOREGROUND
uniform float inactive_text_alpha;
uniform float dim_opacity;
out vec3 sprite_pos;
out vec3 underline_pos;
out vec3 strike_pos;
@ -152,7 +153,7 @@ void main() {
uint resolved_fg = resolve_color(colors[fg_index], default_colors[fg_index]);
foreground = color_to_vec(resolved_fg);
float has_dim = float((text_attrs >> DIM_SHIFT) & ONE);
effective_text_alpha = inactive_text_alpha * mix(1.0, 0.75, has_dim);
effective_text_alpha = inactive_text_alpha * mix(1.0, dim_opacity, has_dim);
// Selection
foreground = choose_color(float(is_selected & ONE), color_to_vec(highlight_fg), foreground);
// Underline and strike through (rendered via sprites)

View File

@ -356,6 +356,7 @@ type_map = {
'macos_titlebar_color': macos_titlebar_color,
'box_drawing_scale': box_drawing_scale,
'background_opacity': unit_float,
'dim_opacity': unit_float,
'tab_separator': tab_separator,
'active_tab_font_style': tab_font_style,
'inactive_tab_font_style': tab_font_style,

View File

@ -259,6 +259,10 @@ background #000000
# Be aware that using a value less than 1.0 is a (possibly significant) performance hit.
background_opacity 1.0
# How much to dim text that has the DIM/FAINT attribute set. 1.0 means no dimming and
# 0.0 means fully dimmed (i.e. invisible).
dim_opacity 0.75
# The foreground for selections
selection_foreground #000000

View File

@ -394,9 +394,10 @@ set_cell_uniforms(float current_inactive_text_alpha) {
cell_uniform_data.gpploc = glGetUniformLocation(program_id(GRAPHICS_PREMULT_PROGRAM), "inactive_text_alpha");
cell_uniform_data.cploc = glGetUniformLocation(program_id(CELL_PROGRAM), "inactive_text_alpha");
cell_uniform_data.cfploc = glGetUniformLocation(program_id(CELL_FG_PROGRAM), "inactive_text_alpha");
#define S(prog, name, val) { bind_program(prog); glUniform1i(glGetUniformLocation(program_id(prog), #name), val); }
S(GRAPHICS_PROGRAM, image, GRAPHICS_UNIT); S(GRAPHICS_PREMULT_PROGRAM, image, GRAPHICS_UNIT);
S(CELL_PROGRAM, sprites, SPRITE_MAP_UNIT); S(CELL_FG_PROGRAM, sprites, SPRITE_MAP_UNIT);
#define S(prog, name, val, type) { bind_program(prog); glUniform##type(glGetUniformLocation(program_id(prog), #name), val); }
S(GRAPHICS_PROGRAM, image, GRAPHICS_UNIT, 1i); S(GRAPHICS_PREMULT_PROGRAM, image, GRAPHICS_UNIT, 1i);
S(CELL_PROGRAM, sprites, SPRITE_MAP_UNIT, 1i); S(CELL_FG_PROGRAM, sprites, SPRITE_MAP_UNIT, 1i);
S(CELL_PROGRAM, dim_opacity, OPT(dim_opacity), 1f); S(CELL_FG_PROGRAM, dim_opacity, OPT(dim_opacity), 1f);
#undef S
cell_uniform_data.constants_set = true;
}

View File

@ -359,6 +359,7 @@ PYWRAP1(set_options) {
S(cursor_blink_interval, PyFloat_AsDouble);
S(cursor_stop_blinking_after, PyFloat_AsDouble);
S(background_opacity, PyFloat_AsDouble);
S(dim_opacity, PyFloat_AsDouble);
S(inactive_text_alpha, PyFloat_AsDouble);
S(window_padding_width, PyFloat_AsDouble);
S(cursor_shape, PyLong_AsLong);

View File

@ -26,7 +26,7 @@ typedef struct {
bool macos_option_as_alt, macos_hide_titlebar, macos_hide_from_tasks;
int adjust_line_height_px, adjust_column_width_px;
float adjust_line_height_frac, adjust_column_width_frac;
float background_opacity;
float background_opacity, dim_opacity;
float inactive_text_alpha;
float window_padding_width;
Edge tab_bar_edge;