diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-01-07 04:51:55 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-01-07 04:51:55 +0000 |
| commit | 4c768d5d63154e416e1282396dc48492d0585d42 (patch) | |
| tree | 879060f576e9ebea69ca924239e2b162e1cdc9c5 /src/python.cc | |
| parent | 85b0dc80cff679d964820159de018a6e89997184 (diff) | |
use client messages to switch desktops/move windows between desktops
Diffstat (limited to 'src/python.cc')
| -rw-r--r-- | src/python.cc | 29 |
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; +} + } |
