PGGI is a php extension providing a small langage binding for GTK+ 3 toolkit.
Clone or download
Letargie adding the possibility of more column for GTreeView, removing a usele…
…ss parameter, adding an exception for a wrong type on GButtons and correcting a bug on CellRenderer
Latest commit 1aae380 Aug 1, 2018


PHP extension providing a small langage binding for GTK+ 3 toolkit allowing to write GUI Applications. I made this extension in order to learn how to make php extension and learn GTK, therefore this extension is highly experimental but if you want try it, I would love receiving feedbacks. For now there isn't much but I intend to add more to it.

Table of content

Getting Started


As a prerequisite, you should have a CLI binary (command-line) version of PHP installed along with the header files and development scripts.

PGGI needs PHP 7 or greater to run, and to build.

PGGI supports GTK+ 3.10 or greater (It should work with previous versions or GTK+ 3 but that's not for sure)


For linux users a .rpm is available in the remi repository (link to configure it)

You can also download the rpm directly : under php-pggi-x.x.x-x.remi.src.rpm

Many many thanks to him.

If you can't install a .rpm you'll have to install it manually :

In terminal move to the pggi directory and run.


Followed by


Finally run


In the pggi directory there a pggi file, it's a launcher to use pggi :

path/pggi file

To test the extension, try running the exemples scripts in the exemples directory.

You can also check my other repositories where I put applications using pggi, that a good way to see how it works and have a nice demo.

Running the tests

you can launch tests by running the file run-tests.php

For now there isn't any.


In the tools directory, there is a program genstub.php that generate a stub version of the extension to facilitate the use of the extension with an IDE. Once the stub version generated, you can use it to create the documentation with apidoc or oxygen. (I made a program for apidoc)

A wiki will come to explain how to use each element of the extension.

For now there isn't a lot of information, but I'm working on it.


if you want to contact me, you can send me an email at