The Python X Library is intended to be a fully functional X client library for Python programs. It is written entirely in Python, in contrast to earlier X libraries for Python (the ancient X extension and the newer plxlib) which were interfaces to the C Xlib.
This is possible to do since X client programs communicate with the X server via the X protocol. The communication takes place over TCP/IP, Unix sockets, DECnet or any other suitable streaming network protocol. The C Xlib is merely an interface to this protocol, providing functions suited for a C environment.
There are three advantages of choosing to implement a pure Python library:
- Integration: The library can make use of the wonderful object system in Python, providing an easy-to-use class hierarchy.
- Portability: The library will be usable on (almost) any computer which have Python installed. A C interface could be problematic to port to non-Unix systems, such as MS Windows or OpenVMS.
- Maintainability: It is much easier to develop and debug native Python modules than modules written in C.
More information, downloadable archives and Subversion access can be found at the project page at Sourceforge.
Maintainer still wanted!
Python Xlib is partially maintained by interested developers - bugfixes and feature patches will be applied and released. However, if anyone wishes to take on a more complete maintenance and new development role, please join the mailing list and introduce yourself!
The low-level protocol and a rudimentary object oriented interface is complete, implementing client-side X11R6. This should be usable for writing applications. It runs at least on Linux using XFree86 as the server, but should run on most Unices.
A resource database has been implemented and there is a framework for adding X extension code. Several extensions have been implemented (RECORD, SHAPE, Xinerama and XTEST) - patches for additions are very welcome.
There are most likely bugs, as only a rather small subset of all the requests and methods have been tested. The code is released anyway to let other interested Python hackers have a look (and hopefully help out with debugging and coding :).