Xmon is made up of two separate processes. The core of xmon is xmond which monitors the X protocol streams and displays the protocol messages on standard output. The interactive interface is handled by xmonui. These two processes communicate via a pipe from the standard output of xmonui to the standard input of xmond.
The following diagram shows the relationships between xmonui and xmond, and the clients and the server.
----------
| xmonui |
----------
|
v
------------ ----------
| client 1 |<------->| |
------------ | | ----------
: | xmond |<----->| server |
: | | ----------
------------ | |
| client n |<------->| |
------------ ----------
|
v
monitor output to stdout