Hi all, 

Beta (trial) version of Ruby/TkORCA is available.


*** What's that? ****

Its concept is "GUI, Anywhere!".

Ruby/TkORCA (Ruby/Tk On RFB Canvas) is a framework which makes
Ruby/Tk-based multiwindow GUI applications (those are written for the
local window system) accessible to general public on the network with
ease, with safe, with little or nothing of modification of those
sources, with no difference about GUI operation, and with supervision
and control of applications include user's handling of each window.


*** How to use? ***

The following is one of the simplest way of usage.

1. Create a Ruby/Tk application which works on your local windowing
   system. Using external programs or libraries is OK. You can also
   use $stdout and $stderr to output messages. The only restriction 
   is "toplevel layer of GUI is constructed with Ruby/Tk".

2. Test your application by loading to Ruby/TkORCA's core script.
   You'll be able to see and use your application is a Ruby/TkORCA
   window. Please test whether does the application work properly. 
   If not (e.g. security error), you may modify the application. 
   If your application is secure (e.g. never read a string from user, 
   unavailable public use, and so on), you can change safe-level for 
   the application (you can define by commandline options).

3. Start Ruby/TkORCA server. 
   Please connect to port 5940 (default) of the server by VNC viewer. 
   You'll be able to see the same view as the window which you saw at
   Step 2, if your firewall passes through the packets ;-).
   Adminitrator of the Ruby/TkORCA server (is YOU :-)) can supervise
   and control the running application (like IRB).

For example, a network-accessable "Hello, World" GUI application is, 

1. create "/tmp/hello.rb"
   -----------------------------------------------------------------
    require 'tk'
    TkButton.new(:text=>'hello', :command=>proc{
                   Tk.messageBox(:message=>'Hello, Ruby/TkORCA !!')
                 }).pack
    Tk.mainloop
   -----------------------------------------------------------------

2. test it on the local windowing system.
   -----------------------------------------------------------------
    $ tkorca.rb /tmp/hello.rb
   -----------------------------------------------------------------

3. start a server.
   -----------------------------------------------------------------
    $ tkorca_server.rb /tmp/hello.rb
   -----------------------------------------------------------------
   If you want to run as a daemon, 
   -----------------------------------------------------------------
    $ tkorca_daemon.rb /tmp/hello.rb
   -----------------------------------------------------------------

That's all. Probably, you'll be able to complete all of them in 3 minutes.

And the following is an example of administration.
In it, the administrator forces to invoke the "hello" button. 
=========================================================================
$ telnet localhost 5941
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

*** Control Port of Ruby/TkORCA Server ***
Username: admin
Password:
Connect ...

Pod[5940]> list
--- list of current connections ---
ID[1]: connection ["AF_INET", 54592, "192.168.11.8", "192.168.11.8"] on display :1 from 2006-08-26 23:36:38
-----------------------------------
Pod[5940]> connect 1

ID[1]:0> TkORCA.daughter_list
=> {#<TkORCA::Daughter:0xb67b6018>=>"/tmp/hello.rb"}
ID[1]:0> daughter = TkORCDA.daughter_list.index('/tmp/hello.rb')
=> #<TkORCA::Daughter:0xb67b6018>
ID[1]:0> daughter.eval{ Tk.root.winfo_children }.value
=> [#<TkButton:0xb679cf8c @cmdtbl=["c00065"], @path=".w00014">]
ID[1]:0> daughter.eval{ Tk.root.winfo_children[0].invoke }
=> #<Thread:0xb6744bd4 run>
ID[1]:0>
=========================================================================

You can define a method that do such administration steps on the other
script file, and load it at starting the application. 
You can also add supervising or control operations to exsisting methods.
Ruby/TkORCA has a module to help you to define such wrappers.



*** What are required? ***

Ruby/TkORCA is a pure-Ruby/Tk application. It requires 

 * Ruby 1.8.5 or later with working Ruby/Tk
   ( It means that Tcl/Tk is required also. )

 * Xvnc with "inetd" support
   ( I recommend TightVNC. )

And other programs and libraries which your applications require.



*** How to install? ***

Extract the Ruby/TkORCA archive. :-)

You may want to modify some configuration files to change default
settings of Ruby/TkORCA.



*** How to get? ***

You can find an archive of the beta version of Ruby/TkORCA at 
<http://qwik.jp/ruby-tk/RubyTkORCA.html>.

However... 
I'm very sorry but it doesn't include English documents. 
( There are Japanese documents. But many part of Ruby/TkORCA are
  undocumented. So, it is still a "trial" version.
  Could anyone help me to translate documents to English? )

There is no official site of Ruby/TkORCA yet.
If you want to ask me about Ruby/TkORCA, please post it to this ML. 
( Please add "[Ruby/TKORCA]" at head of the subject. )

NOTE: The archive includes some examples. 
      One of them requires Tcl/Tk's Tile extension. 
      And another one of them require VTk (Visualization Tool Kit).


Welcome to your comments. 
I'm very happy if you can enjoy "network GUI programming" with Ruby/TkORCA.
-- 
Hidetoshi NAGAI (nagai / ai.kyutech.ac.jp)