Consolidate options for hiding window decorations

Merged into a single option, hide_window_decorations. Old
aliases still work if set to yes.

Fixes #1127
This commit is contained in:
Kovid Goyal 2018-11-11 11:56:37 +05:30
parent 34aea3bca1
commit 53166d659e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
5 changed files with 36 additions and 21 deletions

View File

@ -16,7 +16,7 @@ from .conf.utils import (
parse_config_base, python_string, to_bool, to_cmdline parse_config_base, python_string, to_bool, to_cmdline
) )
from .config_data import all_options, parse_mods, type_map from .config_data import all_options, parse_mods, type_map
from .constants import cache_dir, defconf from .constants import cache_dir, defconf, is_macos
from .utils import log_error from .utils import log_error
named_keys = { named_keys = {
@ -312,6 +312,15 @@ special_handlers = {}
def special_handler(func): def special_handler(func):
special_handlers[func.__name__.partition('_')[2]] = func special_handlers[func.__name__.partition('_')[2]] = func
return func
def deprecated_handler(*names):
def special_handler(func):
for name in names:
special_handlers[name] = func
return func
return special_handler
@special_handler @special_handler
@ -336,6 +345,15 @@ def handle_clear_all_shortcuts(key, val, ans):
ans['key_definitions'] = [None] ans['key_definitions'] = [None]
@deprecated_handler('x11_hide_window_decorations', 'macos_hide_titlebar')
def handle_deprecated_hide_window_decorations_aliases(key, val, ans):
if not hasattr(handle_deprecated_hide_window_decorations_aliases, key):
handle_deprecated_hide_window_decorations_aliases.key = True
log_error('The option {} is deprecated. Use hide_window_decorations instead.'.format(key))
if to_bool(val):
ans['hide_window_decorations'] = True
def expandvars(val, env): def expandvars(val, env):
def sub(m): def sub(m):
@ -552,4 +570,6 @@ def load_config(*paths, overrides=None):
if opts.background_opacity < 1.0 and opts.macos_titlebar_color: if opts.background_opacity < 1.0 and opts.macos_titlebar_color:
log_error('Cannot use both macos_titlebar_color and background_opacity') log_error('Cannot use both macos_titlebar_color and background_opacity')
opts.macos_titlebar_color = 0 opts.macos_titlebar_color = 0
if (is_macos and getattr(opts, 'macos_hide_titlebar', False)) or (not is_macos and getattr(opts, 'x11_hide_window_decorations', False)):
opts.hide_window_decorations = True
return opts return opts

View File

@ -538,6 +538,12 @@ o('inactive_text_alpha', 1.0, option_type=unit_float, long_text=_('''
Fade the text in inactive windows by the specified amount (a number between Fade the text in inactive windows by the specified amount (a number between
zero and one, with zero being fully faded). zero and one, with zero being fully faded).
''')) '''))
o('hide_window_decorations', False, long_text=_('''
Hide the window decorations (title-bar and window borders).
Whether this works and exactly what effect it has depends on the
window manager/operating system.
'''))
# }}} # }}}
g('tabbar') # {{{ g('tabbar') # {{{
@ -772,15 +778,6 @@ incompatible with :opt:`background_opacity`. If you want to use both, you are
probably better off just hiding the titlebar with :opt:`macos_hide_titlebar`. probably better off just hiding the titlebar with :opt:`macos_hide_titlebar`.
''')) '''))
o('macos_hide_titlebar', False, long_text=_('''
Hide the kitty window's title bar on macOS.'''))
o('x11_hide_window_decorations', False, long_text=_('''
Hide the window decorations (title bar and window borders) on X11 and Wayland.
Whether this works and exactly what effect it has depends on the window
manager, as it is the job of the window manager/compositor to draw window
decorations.'''))
o('macos_option_as_alt', True, long_text=_(''' o('macos_option_as_alt', True, long_text=_('''
Use the option key as an alt key. With this set to no, kitty will use Use the option key as an alt key. With this set to no, kitty will use
the macOS native :kbd:`Option+Key` = unicode character behavior. This will the macOS native :kbd:`Option+Key` = unicode character behavior. This will

View File

@ -467,9 +467,9 @@ create_os_window(PyObject UNUSED *self, PyObject *args) {
glfwWindowHint(GLFW_DEPTH_BITS, 0); glfwWindowHint(GLFW_DEPTH_BITS, 0);
glfwWindowHint(GLFW_STENCIL_BITS, 0); glfwWindowHint(GLFW_STENCIL_BITS, 0);
#ifdef __APPLE__ #ifdef __APPLE__
if (OPT(macos_hide_titlebar)) glfwWindowHint(GLFW_DECORATED, false);
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, true); glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, true);
glfwSetApplicationShouldHandleReopen(on_application_reopen); glfwSetApplicationShouldHandleReopen(on_application_reopen);
if (OPT(hide_window_decorations)) glfwWindowHint(GLFW_DECORATED, false);
#endif #endif
} }
@ -478,9 +478,7 @@ create_os_window(PyObject UNUSED *self, PyObject *args) {
glfwWindowHintString(GLFW_X11_INSTANCE_NAME, wm_class_name); glfwWindowHintString(GLFW_X11_INSTANCE_NAME, wm_class_name);
glfwWindowHintString(GLFW_X11_CLASS_NAME, wm_class_class); glfwWindowHintString(GLFW_X11_CLASS_NAME, wm_class_class);
glfwWindowHintString(GLFW_WAYLAND_APP_ID, wm_class_class); glfwWindowHintString(GLFW_WAYLAND_APP_ID, wm_class_class);
if (OPT(x11_hide_window_decorations)) { if (OPT(hide_window_decorations)) glfwWindowHint(GLFW_DECORATED, false);
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
}
#endif #endif
if (global_state.num_os_windows >= MAX_CHILDREN) { if (global_state.num_os_windows >= MAX_CHILDREN) {

View File

@ -354,9 +354,10 @@ PYWRAP1(set_options) {
global_state.debug_gl = debug_gl ? true : false; global_state.debug_gl = debug_gl ? true : false;
global_state.debug_font_fallback = debug_font_fallback ? true : false; global_state.debug_font_fallback = debug_font_fallback ? true : false;
#define GA(name) ret = PyObject_GetAttrString(opts, #name); if (ret == NULL) return NULL; #define GA(name) ret = PyObject_GetAttrString(opts, #name); if (ret == NULL) return NULL;
#define S(name, convert) { GA(name); global_state.opts.name = convert(ret); Py_DECREF(ret); if (PyErr_Occurred()) return NULL; } #define SS(name, dest, convert) { GA(name); dest = convert(ret); Py_DECREF(ret); if (PyErr_Occurred()) return NULL; }
GA(kitty_mod); #define S(name, convert) SS(name, global_state.opts.name, convert)
kitty_mod = PyLong_AsLong(ret); Py_CLEAR(ret); if (PyErr_Occurred()) return NULL; SS(kitty_mod, kitty_mod, PyLong_AsLong);
S(hide_window_decorations, PyObject_IsTrue);
S(visual_bell_duration, PyFloat_AsDouble); S(visual_bell_duration, PyFloat_AsDouble);
S(enable_audio_bell, PyObject_IsTrue); S(enable_audio_bell, PyObject_IsTrue);
S(focus_follows_mouse, PyObject_IsTrue); S(focus_follows_mouse, PyObject_IsTrue);
@ -388,10 +389,8 @@ PYWRAP1(set_options) {
S(window_alert_on_bell, PyObject_IsTrue); S(window_alert_on_bell, PyObject_IsTrue);
S(macos_option_as_alt, PyObject_IsTrue); S(macos_option_as_alt, PyObject_IsTrue);
S(macos_traditional_fullscreen, PyObject_IsTrue); S(macos_traditional_fullscreen, PyObject_IsTrue);
S(macos_hide_titlebar, PyObject_IsTrue);
S(macos_quit_when_last_window_closed, PyObject_IsTrue); S(macos_quit_when_last_window_closed, PyObject_IsTrue);
S(macos_window_resizable, PyObject_IsTrue); S(macos_window_resizable, PyObject_IsTrue);
S(x11_hide_window_decorations, PyObject_IsTrue);
S(macos_hide_from_tasks, PyObject_IsTrue); S(macos_hide_from_tasks, PyObject_IsTrue);
S(macos_thicken_font, PyFloat_AsDouble); S(macos_thicken_font, PyFloat_AsDouble);
@ -428,6 +427,7 @@ PYWRAP1(set_options) {
read_adjust(adjust_column_width); read_adjust(adjust_column_width);
#undef read_adjust #undef read_adjust
#undef S #undef S
#undef SS
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@ -23,8 +23,8 @@ typedef struct {
char_type select_by_word_characters[256]; size_t select_by_word_characters_count; char_type select_by_word_characters[256]; size_t select_by_word_characters_count;
color_type url_color, background, active_border_color, inactive_border_color, bell_border_color; color_type url_color, background, active_border_color, inactive_border_color, bell_border_color;
double repaint_delay, input_delay; double repaint_delay, input_delay;
bool focus_follows_mouse; bool focus_follows_mouse, hide_window_decorations;
bool macos_option_as_alt, macos_hide_titlebar, macos_hide_from_tasks, x11_hide_window_decorations, macos_quit_when_last_window_closed, macos_window_resizable, macos_traditional_fullscreen; bool macos_option_as_alt, macos_hide_from_tasks, macos_quit_when_last_window_closed, macos_window_resizable, macos_traditional_fullscreen;
float macos_thicken_font; float macos_thicken_font;
int adjust_line_height_px, adjust_column_width_px; int adjust_line_height_px, adjust_column_width_px;
float adjust_line_height_frac, adjust_column_width_frac; float adjust_line_height_frac, adjust_column_width_frac;