Dear All,

I coded a programmable GTK2 widget server (opensource under GPL
license, for GTK2, notably under Linux) called Guis. It run with
Python (a year ago I started to make it for Lua) and an experimental
port is (tentative & incomplete) for Ruby.

The idea of Guis is that the application communicate with Guis: it
sends requests (for making GUI widgets etc...) in a scripting language
(Python or Ruby) and recieves arbitrary textual replies or events
(explicitly sent by scripts). An initial script defines the relevant
procedures to be used in further requests (sent by the
application). 

[the idea of a programmable widget server is not new, the old NeWS
system from Sun did it about ten years ago]

Guis is announced on http://freshmeat.net/projects/guis and is
documented on on http://starynkevitch.net/Basile/guisdoc.html the
current released code (for Python only) is on
http://www.starynkevitch.net/Basile/guis-1.2.tar.gz

I am making a prerelease of it, using Ruby with the
ruby-gnome2-all-0.6.0 binding. You can fetch the prerelease code on
http://www.starynkevitch.net/Basile/guis-1.3.pre1.tar.gz and view its
temporary & incomplete documentation on
http://www.starynkevitch.net/Basile/guisdoc_ruby_beta.html - the demo
does work with Ruby (as it does in Python). 

I left a few questions there 

Is it possible to define virtual variables (in the sense of
rb_define_virtual_variable from Ruby C API) inside a module?

Can a built-in module be extended by scripts?

How to define hooks in Ruby? 

  I thought of writing in Ruby script

    Guis::on_end_of_input do |timeout|
      # user end input hook
    done

  But I am not sure of how to implement it in C

How to print the current environment (ie the set of local variables
bindings) in C?

How to set the filename before rb_eval_string (it is hardwired to
"(eval)" and I would like to change it)?

Any remarks and suggestions are welcome. In particular, any design
suggestions are welcome...

Regards.
-- 

Basile STARYNKEVITCH         http://starynkevitch.net/Basile/ 
email: basile<at>starynkevitch<dot>net 
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faż∆ncerie, 92340 Bourg La Reine, France