No description
- Scheme 92.6%
- M4 3.1%
- C 2.6%
- Makefile 1.3%
- Shell 0.4%
# ;; -*- mode: org; coding: utf-8 -*- #+TITLE: GNU G-Golf README #+BEGIN_COMMENT Copyright (C) 2016 - 2026 Free Software Foundation, Inc. This document is part of GNU G-Golf. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. #+END_COMMENT G-Golf - README =========================================== Please send G-Golf bug reports to bug-g-golf@gnu.org * GNU G-Golf [[http://www.gnu.org/software/g-golf][G-Golf]] GNOME: (Guile Object Library for). ** Description [[http://www.gnu.org/software/g-golf][G-Golf]] is a [[https://www.gnu.org/software/guile/][Guile]] Object Library for [[https://www.gnome.org/][GNOME]]. G-Golf is tool to develop fast and feature-rich graphical applications, with a recognizable look and feel. Here is an overview of the [[https://developer.gnome.org/documentation/introduction/overview/libraries.html][GNOME platform libraries]], accessible using G-Golf. In particular, [[https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/][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 [[https://wiki.gnome.org/Apps/Web][GNOME Web]] (best known through its code name, Epiphany, is a good example of such an adaptive UI. G-Golf uses [[https://docs.gtk.org/glib/index.html][GLib]], [[https://docs.gtk.org/gobject/index.html][GObject]] and [[https://gi.readthedocs.io/en/latest/][GObject Introspection]]. As it imports a [[https://gi.readthedocs.io/en/latest/][Typelib]] (a GObject introspectable library), G-Golf defines GObject classes as Guile Object Oriented System ([[https://www.gnu.org/software/guile/manual/html_node/GOOPS.html#GOOPS][GOOPS]]) 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: #+BEGIN_SRC scheme (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 'clicked (lambda (bt) (restart-game window))) (set-titlebar window header-bar) (pack-start header-bar restart) (create-board window) (show window))) #+END_SRC G-Golf comes with some examples, listed on the [[https://www.gnu.org/software/g-golf/learn.html][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 [[http://git.savannah.gnu.org/cgit/g-golf.git][repository]]. ** Latest News February 2026 GNU G-Golf version 0.8.3 released. Visit the NEWS file or see the [[http://git.savannah.gnu.org/cgit/g-golf.git/tree/NEWS][News]] page for the list of visible changes in this release, as well as older news. ** Savannah GNU G-Golf also has a [[https://savannah.gnu.org/][Savannah]] project page, [[https://savannah.gnu.org/projects/g-golf/][here]]. ** Join the GNU Project GNU 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 [[https://www.gnu.org/help/evaluation][here]]. You don't have a program to contribute? Look at all the other ways you still may [[https://www.gnu.org/help/help][help]]. To learn more about Free (libre) Software, you can read and please share [[https://gnu.org/philosophy/free-sw.html][this page]]. ** License GNU 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 GNU G-Golf. This is described in full in the license. For any copyright year range specified as YYYY - ZZZZ in this package, note that the range specifies every single year in that closed interval.