... at least thats what ya consider 4 non-win os, as for win you have to
make small changes to the source, here's my suggestion: since cat doesnt
work for use we go with the dos equivalent TYPE, but wait: dos uses \'es
instead of /'es ... so, inside widget.rb change:

$demo_dir = File.dirname($0)
to
$demo_dir = File.dirname($0).gsub(/\//,'\\')

and in the bottom we use type and \'s:

eval `TYPE #{[$demo_dir, tag[5..-1]].join("\\")}.rb`

yeah, i know kinda lame ... 
okok, being nice today, if you totaly dislike dos and type and want your
own cat... well just do it!

1. Edit widget.rb, replace the line

eval `cat #{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb`

with

eval `ruby cat.rb #{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb`

(so you can leave the seperators as /)

2. create your own cat.rb in the same folder (as widget.rb), here's the
simple content:

f=File.open(ARGV[0],"r")
f.each do |line| print line end
f.close

... although its pointless :-P