[Xcb] [Awesome 3] Awesome port from Xlib to XCB

Arnaud Fontaine arnaud at andesi.org
Wed Apr 9 07:55:24 PDT 2008


Julien already  made an short announce about  the Awesome[0] roadmap[1],
so  it's  time  for me  to  give  some  details  about Awesome  3.0  and
especially about  XCB. BTW, sorry for  the delay about  this announce, I
should have done it before but didn't have time before...

XCB is a  client library to the X protocol aiming  to replace Xlib. More
precisely it is a C binding  for the X Window System, which provides the
following features  compared to Xlib  (only the ones related  tightly to
Awesome are given  here, for further details, please take  a look at XCB

* modular architecture;
* direct access to the protocol;
* multithreading;
* asynchronous requests/replies;
I worked  as my yearly  school project on  port of Awesome from  Xlib to
XCB.   At  the moment,  the  port  is considered  stable  but  not in  a
releasable  shape  yet  because  it  needs to  take  fully-advantage  of
asynchronous requests/replies and multithreading provided by XCB.

If you want to give a try at this port, you have to follow these steps:

1/ Get xcb main library and also Xinerama, Shape, Render and RandR.

2/ Build and install xcb-util:

   You can't  use the official  xcb-util git repository as  some patches
   have unfortunately not been applied  yet by XCB developers (I hope it
   will be done soon though), so basically you have to do the following:

   $ git clone git://git.naquadah.org/arnau/xcb-util.git
   $ cd xcb-util && ./autogen.sh && make
   # make install

3/ Build and install cairo with XCB support:

   $ wget http://cairographics.org/snapshots/cairo-1.5.20.tar.gz
   $ tar zxvf cairo-1.5.20.tar.gz && cd cairo-1.5.20
   $ ./configure --enable-xcb && make
   # make install

4/ Build and install awesome:

   $ git clone git://git.naquadah.org/arnau/awesome.git
   $ cd awesome && ./autogen.sh && ./configure && make
   # make install

5/ Have  fun with this  new awesome Awesome  and don't forget  to report

However,   there   is   still   one   issue   in   current   port:   XKB
support. Actually, at the moment XKB extension is not ready yet for XCB,
so you can't use properly  awesome-menu, and all modifiers don't work as
expected. I need to work on that...

I would like to particularly thank Julien Danjou, Vincent Torri and Josh
Triplett for their help.

Arnaud Fontaine

[0] http://awesome.naquadah.org
[1] http://lists.naquadah.org/awesome_naquadah.org/msg01520.html
[2] http://xcb.freedesktop.org/

More information about the Xcb mailing list