diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi index aa3ba00a2..d826597e7 100644 --- a/kitty/fast_data_types.pyi +++ b/kitty/fast_data_types.pyi @@ -1032,8 +1032,8 @@ def set_active_window(os_window_id: int, tab_id: int, window_id: int) -> None: pass -def ring_bell(os_window_id: int = 0) -> None: - pass +def ring_bell(os_window_id: int = 0) -> None: ... +def request_attention(os_window_id: int) -> None: ... def concat_cells(cell_width: int, cell_height: int, is_32_bit: bool, cells: Tuple[bytes, ...], bgcolor: int = 0) -> bytes: diff --git a/kitty/glfw.c b/kitty/glfw.c index 5f842bc05..c24bd58d4 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -2167,6 +2167,16 @@ ring_bell(PyObject *self UNUSED, PyObject *args) { Py_RETURN_NONE; } +static PyObject* +request_attention(PyObject *self UNUSED, PyObject *args) { + unsigned long long os_window_id; + if (!PyArg_ParseTuple(args, "K", &os_window_id)) return NULL; + OSWindow *w = os_window_for_id(os_window_id); + if (w && w->handle) glfwRequestWindowAttention(w->handle); + Py_RETURN_NONE; +} + + static PyObject* get_content_scale_for_window(PYNOARG) { OSWindow *w = global_state.callback_os_window ? global_state.callback_os_window : global_state.os_windows; @@ -2913,6 +2923,7 @@ static PyMethodDef module_methods[] = { METHODB(macos_cycle_through_os_windows, METH_O), METHODB(get_content_scale_for_window, METH_NOARGS), METHODB(ring_bell, METH_VARARGS), + METHODB(request_attention, METH_VARARGS), METHODB(toggle_fullscreen, METH_VARARGS), METHODB(toggle_maximized, METH_VARARGS), METHODB(change_os_window_state, METH_VARARGS),