• Tutorial: stream GTK applications and use them in your browser (with GTK+ and Broadway)

    A few days ago I’ve (finally) received my first C.H.I.P.. This is the first 9 dollars microcomputer with a 1Gzh R8 ARM CPU, 512Mb of RAM, 4Gb of on-board space and it includes Wireless B/G/N and Bluetooth 4.0.

    All in all for that price, I have to admit that it’s a good, all purpose machine that you can easily use for your experiments and to learn new possibilities in computing.

    So the first thing I wanted to test is how this little machine would be able to stream GTK applications over the network using the Broadway back-end available in GTK+.

    After flashing Debian Jessie on it (that comes without and window manager), I had to compile GTK+ with the Broadway backend enabled (this is now standard in most i386 and amd64 distribution, but not in ARM ones), following the compiling instructions on the GTK+ page.

    So after logging into your C.H.I.P. you need to install the dependencies – some of them are already packaged in the right version, while you will have to compile others:

    sudo apt-get install pkg-config make autoconf2.13 libtool zlib1g-dev libffi-dev gettext libfam-dev libpackagekit-glib2-dev libgtk2.0-dev python2.7-dev gtk-doc-tools libglib2.0-dev gir1.2-glib-2.0 libtiff5-dev flex bison python-dev libcairo2-dev libepoxy-dev libatk-bridge2.0-dev vim libgirepository1.0-dev unzip

    then you will need to install GLIB:

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/glib/2.46/glib-2.46.2.tar.xz

    tar xvfJ glib-2.46.2.tar.xz

    cd glib-2.46.2

    ./autogen.sh

    ./configure

    Now you need to find the path for giving the CFLAGS to make:

    pkg-config --cflags glib-2.0

    the path that will be shown will have to be used as the example below:

    make CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include'

    make install

    export LD_LIBRARY_PATH="/usr/local/lib/:/usr/local/lib/pkgconfig"

    Now it’s time to compile pango, gobject-introspection, gdk-pixbuf, atk and finally GTK+

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/pango/1.38/pango-1.38.1.tar.xz

    tar xvfJ pango-1.38.1.tar.xz

    cd pango-1.38.1

    ./autogen.sh

    ./configure

    make

    make install

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz

    tar xvfJ gobject-introspection-1.46.0.tar.xz

    cd gobject-introspection-1.46.0

    ./configure

    make

    make install

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.32/gdk-pixbuf-2.32.3.tar.xz

    tar xvfJ gdk-pixbuf-2.32.3.tar.xz

    cd gdk-pixbuf-2.32.3

    ./configure

    make

    make install

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/atk/2.18/atk-2.18.0.tar.xz

    tar xvfJ atk-2.18.0.tar.xz

    cd atk-2.18.0

    ./configure

    make

    make install

    cd ~

    wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.18/gtk+-3.18.6.tar.xz

    tar xvfJ gtk+-3.18.6.tar.xz

    cd gtk+-3.18.6

    ./autogen.sh --enable-broadway-backend --enable-x11-backend

    ./configure --enable-broadway-backend --enable-x11-backend

    make

    make install

    The time to test the result of our creature has come:

    first of all enable the broadwayd deamon server and choose the port and screen to use:

    broadwayd -p 8080 :2 &

    export GDK_BACKEND=broadway

    export BROADWAY_DISPLAY=:2

    Finally, install a GTK application like shotwell, gedit or galculator

    sudo apt-get install gedit galculator shotwell

    and launch one of them…

    gedit

    From another machine, now you can fire your browser and point to the address http://ipofyourc.h.i.p:8080

    and use your application running remotely from your browser.

    GEdit working in Chromium