[Development] xcb-icccm dependency in Qt 5/libxcb

Samuel Rødal samuel.rodal at digia.com
Mon Oct 22 14:10:12 CEST 2012

On 10/22/2012 01:53 PM, Koehne Kai wrote:
> Hi,
> In Qt 5 we're relying on libxcb instead of the aging xlib. One drawback is that it limits the portability of Qt binaries on Linux (AFAIK xcb isn't part of any LSB). But it turns out the real dealbreaker when trying to have a somewhat portable Qt binary on Linux is libxcb-icccu: E.g. I can't run a Qt compiled on Ubuntu 11.10 on my OpenSUSE 12.1 because of this dependency, and the LSB appchecker even says it's not available on any platform known to him.

s/libxcb-icccu/libxcb-icccm ?

> Now I don't have a real understanding of icu, and couldn't really figure out what libxcb-icccm does. I learnt it's an acronym for "Inter-Client Communication Convention" , but how crucial is it? Would it be feasible to make icccm optional for the icu platform plugin (preferably by configure switch)?

What does ICU have to do with icccm?

In any case, it's probably possible to make the xcb plugin have an 
optional dependency on libxcb-icccm, but it might leave the xcb plugin a 
lot less usable on desktop platforms.

I guess there are two other options:

1) include libxcb-icccm in qtbase/src/3rdparty, build it into the xcb 
2) make the xcb plugin not use the convenience that libxcb-icccm 
provides, instead using lower level xcb calls to achieve the same thing

Not sure which would be preferable. The latter seems cleaner but would 
have to duplicate some of the effort that went into libxcb-icccm. It's 
really annoying that libxcb-icccm hasn't kept a stable ABI between releases.


More information about the Development mailing list