diff --git a/docs/changelog.rst b/docs/changelog.rst index 458da4a55..ad3560552 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -83,6 +83,9 @@ Changelog - Remote control: Fix kitty @ sometimes failing to read the response from kitty. (:iss:`614`) +- Fix `kitty @ set-colors` not working with the window border colors. + (:iss:`623`) + 0.10.1 [2018-05-24] ------------------------------ diff --git a/kitty/boss.py b/kitty/boss.py index 06bd03e74..5edfb9282 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -21,8 +21,8 @@ ChildMonitor, background_opacity_of, change_background_opacity, create_os_window, current_os_window, destroy_global_data, get_clipboard_string, glfw_post_empty_event, global_font_size, - mark_os_window_for_close, os_window_font_size, set_clipboard_string, - set_in_sequence_mode, toggle_fullscreen + mark_os_window_for_close, os_window_font_size, patch_global_colors, + set_clipboard_string, set_in_sequence_mode, toggle_fullscreen ) from .keys import get_shortcut, shortcut_matches from .remote_control import handle_cmd @@ -792,5 +792,6 @@ def patch_colors(self, spec, configured=False): for k, v in spec.items(): if hasattr(self.opts, k): setattr(self.opts, k, color_from_int(v)) + patch_global_colors(spec) for tm in self.all_tab_managers: tm.tab_bar.patch_colors(spec) diff --git a/kitty/shaders.c b/kitty/shaders.c index ded8ddef2..247e67365 100644 --- a/kitty/shaders.c +++ b/kitty/shaders.c @@ -545,13 +545,13 @@ draw_borders(ssize_t vao_idx, unsigned int num_border_rects, BorderRect *rect_bu if (!constants_set) { constants_set = true; glUniform1f(border_uniform_locations[BORDER_background_opacity], w->background_opacity); - glUniform3f(border_uniform_locations[BORDER_active_border_color], CV3(OPT(active_border_color))); - glUniform3f(border_uniform_locations[BORDER_inactive_border_color], CV3(OPT(inactive_border_color))); - glUniform3f(border_uniform_locations[BORDER_bell_border_color], CV3(OPT(bell_border_color))); } if (OPT(dynamic_background_opacity)) { glUniform1f(border_uniform_locations[BORDER_background_opacity], w->background_opacity); } + glUniform3f(border_uniform_locations[BORDER_active_border_color], CV3(OPT(active_border_color))); + glUniform3f(border_uniform_locations[BORDER_inactive_border_color], CV3(OPT(inactive_border_color))); + glUniform3f(border_uniform_locations[BORDER_bell_border_color], CV3(OPT(bell_border_color))); glUniform2ui(border_uniform_locations[BORDER_viewport], viewport_width, viewport_height); color_type default_bg = num_visible_windows > 1 ? OPT(background) : active_window_bg; glUniform3f(border_uniform_locations[BORDER_default_bg], CV3(default_bg)); diff --git a/kitty/state.c b/kitty/state.c index c1834c300..c80124c91 100644 --- a/kitty/state.c +++ b/kitty/state.c @@ -652,6 +652,18 @@ PYWRAP1(set_boss) { Py_RETURN_NONE; } +PYWRAP1(patch_global_colors) { +#define P(name) { \ + PyObject *val = PyDict_GetItemString(args, #name); \ + if (val) { \ + global_state.opts.name = PyLong_AsLong(val); \ + } \ +} + P(url_color); P(active_border_color); P(inactive_border_color); P(bell_border_color); P(background); + if (PyErr_Occurred()) return NULL; + Py_RETURN_NONE; +} + PYWRAP0(destroy_global_data) { Py_CLEAR(global_state.boss); free(global_state.os_windows); global_state.os_windows = NULL; @@ -705,6 +717,7 @@ static PyMethodDef module_methods[] = { MW(global_font_size, METH_VARARGS), MW(os_window_font_size, METH_VARARGS), MW(set_boss, METH_O), + MW(patch_global_colors, METH_O), MW(destroy_global_data, METH_NOARGS), {NULL, NULL, 0, NULL} /* Sentinel */