The GGI Project


GGI stands for General Graphics Interface, and it is a project that aims to develop a reliable, stable and fast graphics system that works everywhere. We want to allow any program using GGI to run on any platform, requiring at most a recompile.

Historically, GGI was developed in order to provide a unified interface to manage access to graphics hardware under Linux, to avoid the conflicts and instability arising from the direct access of hardware by competing graphics systems such as X and svgalib. The GGI project is now focussed on developing a set of portable user-space libraries, with an array of different backends or targets (eg. framebuffer, X, quartz, directx). While GGI no longer aims to manage direct access to graphics hardware, we provide a target to use the interfaces provided by our associated KGI Project, which is concerned with providing the necessary kernel level support (protection, virtualization and abstraction) through a fast, secure and portable Kernel Graphics Interface.

Developed in a professional manner, the clean design, stability and scalability of GGI make it excellent in embedded, production and research environments, and it is user-supported with complete source.

The GGI project provides various libraries, of which the two most fundamental are LibGII (for input-handling) and LibGGI (for graphical output). All other packages add features to these core libraries, and so depend on one or both of them; for a more in-depth explanation of package categories, see the longer introduction to GGI.

Latest News

2008-02-02: GGI success on Windows Vista

Late last month there was success at running GGI on Windows Vista (32-bit). There were the usual Vista troubles, with MinGW not finding its stuff and a manifest missing for install.exe, but no unexpected trouble for those used to these tools on Vista. Once built, it seems to work just as on previous Windows releases. See Setting up GGI on Windows for details.

2007-12-06: ggivnc 0.4.0 released

ggivnc is a VNC client and has been implemented from scratch with GGI libraries for input/output. Since the initial anouncement here about a year ago, it has gained a couple of encodings, a user interface (through libggiwidget) and support for IPv6. And some more things as well, read the CHANGES or the SourceForge project page for more details.

2007-06-13 : gii pseudo-encoding for RFB

The GGI project has gotten some protocol numbers registered in the RFB protocol (the Remote Frame Buffer protocol, used by VNC). These protocol numbers are filed under the name gii and are intended to be used for delivering gii events from the vnc client to the vnc server. Here is a draft specification for the extension, and this draft has been implemented in both ggivnc and the vnc target.

2007-03-25 : Google Summer of Code 2007

The GGI project is pleased to announce that we will participate in this year edition of Google Summer of Code. The Summer of Code is a program, funded by Google, sponsoring students to work on Open Source projects under the supervision of experienced free software developers. So, if you are a student and are interested in working on one of our project ideas, you have until March 26th 2007 to apply using the GSoC Web App. If you have any questions or if you just want to talk with the GGI project team, join us on #ggi (freenode) or on the mailing lists (check the contact page for more information). Remember your application must be sent before March 26th!

2007-02-17 : ggivnc 0.1.0 released

ggivnc is a VNC client and has been implemented from scratch with GGI libraries for input/output. It features the following encodings:

Raw, CopyRect, RRE, CoRRE, Hextile, Zlib, ZlibHex, ZRLE and LastRect.

ggivnc came about as a test application for the VNC target (see older news). The VNC target has matured significantly during the months since it was first announced here, and it now supports many encodings.

Read the announcement or the SourceForge project page for more information about ggivnc.