rubyunix is loosely a shell/terminal emulator written in Ruby. Different people have different ideas of where it should go. Perhaps Rubyunix will someday look like Python's Hotwire Shell. In that direction is also CUIterm. Perhaps Rubyunix will work harder for UNIX and POSIX compliance, a real bash emulator. Once that is done, we can work on reimplementing commands like Perl Power Tools. Right now, we have two cores (rubyunix and rust), two interfaces (console and GTK), a small handful of parsers (for Bash syntax, a handbuilt Regexp parser, a Dhaka parser, and a start at ANTLR, and a curious Ruby/shell parser called Ren), and a dozen or so commands.


Help shape rubyunix.


This status report was written on Friday, January 04 2008.

Rubyunix is currently best used via the GTK interface.

What works

  • History: use up, down, pgup, and pgdown to traverse
  • Commands: exit,help,cat,echo,ls,pwd
  • Configuration: Easily edit defaults.rb to change options

What's planned for the near future

  • Configuration: preferences window
  • Configuration: an alternative to GConf
  • Configuration: styling options
  • Configuration: invocation options like `rubyunix -e exec/this/script -i gtk`
  • Help: a set of commands which access documentation and status of command implementations
  • Help: a simple manual
  • i18n: translations (I don't know any useful languages, but I'll make sure it works)
  • Management: a seriously useful Rakefile
  • Scalability: Maximum length for history before it either 'forgets' or marshalizes it somehow.
  • Commands: I haven't written the part where it actually executes normal commands in, eg. /usr/bin. I'm under the impression Rust has this worked out, so I'll see if I can copy that.
  • Commands: There's at most a dozen commands written in Ruby. Ruby==cross-platform

What's obviously missing

  • A lot of syntax constructs. I've been putting off improving bash.rb (beyond some bug fixes) because I intend to replace it with a formal grammar. I don't really know how long it's going to take me, but I have the Pragmatic Programmer's definitive ANTLR reference, so I'm going to do my best to get that working soon.

  • Branding. An icon and logo would be nice, but I'm no artist.