This project contains Ruby bindings for GLFW library. The package also includes the GLFW library itself, due to the fact that the library is small and generally not preinstalled on target operating systems.

GLFW is a free, Open Source, portable framework for OpenGL application development. In short, it is a single library providing a powerful, portable API for otherwise operating system specific tasks such as opening an OpenGL window, and reading keyboard, time, mouse and joystick input.

Both the bindings and the GLFW library are licensed under zlib/libpng license.

Currently tested and supported systems are Linux, Mac OS X and Windows, although any POSIX compatible system should work as well.


You can visit the project page on rubyforge - there you can fill in bug reports or join mailing list.

I can be reached directly at

Usage and API

For usage information and API documentation see the RDoc page.


Latest stable version: 0.9.1 / 17 Aug 2008

Changes from last version:

You can install directly from gems by typing 'gem install ruby-glfw' (see below for notes)

Additionaly, you can also access the SVN repository.


You need of course ruby(1.8.5+), C compiler, and rake and mkrf(0.20+) (both can be installed from gems). You would probably want to install ruby-opengl as well, although it is not required for the installation process itself.

Windows notes: Binary version of ruby-glfw gem is available for windows - for that you don't need C compiler, just the ruby one-click installer and mkrf + rake from gems. In case you decide to compile the source gem, you will need the same compiler that was used to compile the ruby binary (in case of the one-click installer it is MSVC 6.0). You may need to tweak the Rakefile if you're using other compiler than MSVC.

Mac OS X notes: You will need ruby version from ports (macports or fink), and also Xcode framework which you can download from apple.

Linux notes: On some distributions you may need aditional development packages, like xorg-dev or ruby1.8-dev.


The GLFW threading is not implemented, as ruby has its own threading API.

glfwGetProcAddress is also not implemented, use ruby-opengl functions instead