require 'gtk' require 'find' window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) window.border_width = 2 tree = Gtk::Tree.new tree.set_usize 200, 200 top = ARGV.shift dir = {} dir[File.dirname(top)] = tree Find.find(top) {|f| dirname = File.dirname(f) item = Gtk::TreeItem.new(File.basename f) item.show dir[dirname].append item if File.directory? f dir[f] = Gtk::Tree.new item.set_subtree dir[f] end } window.add tree tree.show window.show Gtk.main