In summer 2004 I started to write Ruby bindings for the EFL.

My aim is to bring rubyists the power to write Edje-enabled applications, i.e. I will focus on ecore, edje and esmart. The complete evas API will be implemented later, as you often only need a small subset of the library in Edje apps.


  • ruby-evas: so-so. The main API is in a good shape. Support for image objects is still lacking some important bits.
  • ruby-edje: almost complete! :) Message queue stuff is about 50% done :)
  • ruby-ecore: good. con-, ipc- and config-modules not supported though
  • ruby-esmart: almost complete (well, easy enough, since it's not a very large API)


HTML documentation is now available at

Get the code now

git clone git://
git clone git://
git clone git://
git clone git://

The docs are still lacking examples, so here's a script that shows off some of the API :)


require "ecore"
require "ecore_x"
require "evas"
require "ecore_evas"
require "edje"

ee =
ee.title = "ruby-evas/edje/ecore \o/"

ee.borderless = true
ee.shaped = true

edje =
edje.load("/home/tilman/.e/apps/euphoria/themes/winter.eet", "euphoria")

edje.on_signal("PLAY", "*") do |signal, src|
    puts "got signal #{signal} on #{src}"

edje.on_signal("QUIT", "*") do

w, h = edje.get_size_max
ee.set_size_max(w, h)

w, h = edje.get_size_min
ee.set_size_min(w, h)

edje.resize(w, h)
ee.resize(w, h)