From 14f8ce6e158269df47d91e06f23c748f57cb1d4e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 13 Sep 2021 08:59:34 +0530 Subject: [PATCH] Add a python wrapper to play arbitrary sounds --- kitty/desktop.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/kitty/desktop.c b/kitty/desktop.c index 9fea4bfa0..d8335f4bc 100644 --- a/kitty/desktop.c +++ b/kitty/desktop.c @@ -93,13 +93,6 @@ end_x11_startup_notification(PyObject UNUSED *self, PyObject *args) { Py_RETURN_NONE; } -static PyMethodDef module_methods[] = { - METHODB(init_x11_startup_notification, METH_VARARGS), - METHODB(end_x11_startup_notification, METH_VARARGS), - - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - static void* libcanberra_handle = NULL; static void *canberra_ctx = NULL; FUNC(ca_context_create, int, void**); @@ -163,6 +156,14 @@ play_canberra_sound(const char *which_sound, const char *event_id) { ); } +static PyObject* +play_desktop_sound(PyObject *self UNUSED, PyObject *args) { + const char *which, *event_id = "test sound"; + if (!PyArg_ParseTuple(args, "s|s", &which, &event_id)) return NULL; + play_canberra_sound(which, event_id); + Py_RETURN_NONE; +} + static void finalize(void) { if (libsn_handle) dlclose(libsn_handle); @@ -172,6 +173,15 @@ finalize(void) { if (libcanberra_handle) dlclose(libcanberra_handle); } +static PyMethodDef module_methods[] = { + METHODB(init_x11_startup_notification, METH_VARARGS), + METHODB(end_x11_startup_notification, METH_VARARGS), + METHODB(play_desktop_sound, METH_VARARGS), + + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + + bool init_desktop(PyObject *m) { if (PyModule_AddFunctions(m, module_methods) != 0) return false;