Consider moving CWinEventsX11Imp's definition into this file and make it a file-scope variable, eg

```c_cpp
#include <boost/scoped_ptr.hpp>

namespace
{
boost::scoped_ptr<CWinEventsX11Imp> WinEvents;
}
```

It can be initialized from CWinEventsX11::Init, for instance:

```c_cpp
void CWinEventsX11::Init(Display *dpy, Window w)
{
    WinEvents.reset(new CWinEventsX11Imp(dpy, w));
}
```

That way you don't have to expose internal details to the rest of the system and it reduces header bloat too.,