summaryrefslogtreecommitdiff
path: root/src/python.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/python.cc')
-rw-r--r--src/python.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/python.cc b/src/python.cc
index c8cf7eb8..445a9882 100644
--- a/src/python.cc
+++ b/src/python.cc
@@ -370,6 +370,7 @@ void python_init(char *argv0)
init_openbox();
PyRun_SimpleString("from _otk import *; from _openbox import *;");
PyRun_SimpleString("openbox = Openbox_instance()");
+ PyRun_SimpleString("display = OBDisplay_display()");
/* XXX
sys.path.append('stuff')
@@ -554,4 +555,32 @@ void set_reset_key(const std::string &key)
ob::Openbox::instance->bindings()->setResetKey(key);
}
+PyObject *send_client_msg(Window target, int type, Window about,
+ long data, long data1, long data2,
+ long data3, long data4)
+{
+ if (type < 0 || type >= otk::OBProperty::NUM_ATOMS) {
+ PyErr_SetString(PyExc_TypeError,
+ "Invalid atom type. Must be from otk::OBProperty::Atoms");
+ return NULL;
+ }
+
+ XEvent e;
+ e.xclient.type = ClientMessage;
+ e.xclient.format = 32;
+ e.xclient.message_type =
+ Openbox::instance->property()->atom((otk::OBProperty::Atoms)type);
+ e.xclient.window = about;
+ e.xclient.data.l[0] = data;
+ e.xclient.data.l[1] = data1;
+ e.xclient.data.l[2] = data2;
+ e.xclient.data.l[3] = data3;
+ e.xclient.data.l[4] = data4;
+
+ XSendEvent(otk::OBDisplay::display, target, false,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &e);
+ Py_INCREF(Py_None); return Py_None;
+}
+
}