Eavesdropping on the X Protocol
The X windowing system uses a network protocol between clients and the X server. GUI libraries like Xlib, GTK or Qt abstract the X Protocol away from the user, converting the X Protocol messages into simple library calls. The communication between the client and the server shows some interesting design choices. IDs for the resources on the server are chosen by the client, not the server, and the messages are sent asynchronously, meaning that the server may response with errors after the client has already issued several other calls. The client then needs to rollback to a previous state. The use of a network as communication layer allows one to proxy the X protocol. Projects such as xmond use this ability to debug the stream while the client is running; another project called xmove can shift clients from one server to another at runtime. This seminar will show the basics of the X protocol and what is actually sent over the wire when a client uses libraries to display a GUI on an X server.
Peter Hutterer is a PhD student at the Wearable Computers Laboratory at the University of South Australia. He studied in Austria and worked on a project using watch-like computers during his internship in Australia. When he came back to Adelaide to commence his PhD program, he switched back to desktop sized computers and is now researching real-time groupware for distributed groups.