About G-Golf

GNOME: (Guile Object Library for)


G-Golf is a Guile Object Library for GNOME.

G-Golf is a tool to develop fast and feature-rich graphical applications, with a clean and recognizable look and feel. Here is an overview of the GNOME platform libraries, accessible using G-Golf.

In particular, libadwaita provides a number of widgets that change their layout based on the available space. This can be used to make applications adapt their UI between desktop and mobile devices. The GNOME Web (best known through its code name, Epiphany, is a good example of such an adaptive UI.

G-Golf uses Glib, GObject and GObject Introspection. As it imports a Typelib (a GObject introspectable library), G-Golf defines GObject classes as GOOPS (the Guile Object Oriented System) classes. GObject methods are defined and added to their corresponding generic function. Simple functions are defined as scheme procedures.

Here is an example, an excerpt taken from the peg-solitaire game, that shows the implementation, for the peg-solitaire game, of the GtkApplication activate signal callback in G-Golf:

(define (activate app)
  (let ((window (make <gtk-application-window>
                  #:title "Peg Solitaire"
                  #:default-width 420
                  #:default-height 420
                  #:application app))
        (header-bar (make <gtk-header-bar>))
        (restart (make <gtk-button>
                   #:icon-name "view-refresh-symbolic")))

    (connect restart
             (lambda (bt)
               (restart-game window)))

    (set-titlebar window header-bar)
    (pack-start header-bar restart)
    (create-board window)
    (show window)))

G-Golf comes with some examples, listed on the learn page of the G-Golf web site. Each example comes with a screenshot and has a link that points to its source code, in the G-Golf sources repository.

Latest News

July 2024

G-Golf version 0.8.0-rc.5 is released.

This is the fifth release candidate of the upcoming 0.8.0 release, now available for testing.

See the News page for a summary of the noteworthy changes in this release. For a complete list and description of all changes, see the G-Golf git summary and git log.


Documentation for G-Golf is available online as is documentation for most GNU software. You may also look at the G-Golf manual by running info g-golf or find it, if you installed G-Golf manually and did run make install-html, by looking at $prefix/share/doc/g-golf/g-golf.html/. If you installed G-Golf using a distribution package, you may find it, perhaps, by looking at /usr/share/doc/g-golf/ or similar directories on your system


G-Golf also has a Savannah project page here.

Join the GNU Project

G-Golf is part of the GNU Operating System, developed by the GNU Project.

If you are the author of an awesome program and want to join us in writing Free (libre) Software, please consider making it an official GNU program and become a GNU Maintainer. You can find instructions on how to do this here.

You don't have a program to contribute? Look at all the other ways you still may help.

To learn more about Free (libre) Software, you can read and please share this page.


G-Golf is a free software, distributed under the terms of the GNU Lesser General Public License LGPLv3 or higher. You must be aware there is no warranty whatsoever for G-Golf. This is described in full in the license.