2009-05-19 98 views
0

我想在Ruby中使用基于文本的UI构建一个类似于Linux命令“顶部”的应用程序。我可以使用什么工具包和/或技术来构建UI?特别是我想要一个不断更新的控制台窗口区域,并且能够按下按键来操作显示。如何在Ruby中构建顶级UI

回答

1

Ncurses的是伟大的控制台应用程序,你可以找到绑定,它大量的语言(或只是使用shell脚本)。甚至还有一个诅咒的gtk(http://zemljanka.sourceforge.net/cursed/),尽管我认为它的工作停止了一段时间。

你没有提到你的平台,但是对于OS/X,有一个名为Geektool(http://projects.tynsoe.org/en/geektool/)的很棒的小应用程序,它允许你将脚本输出放到桌面上。我用一个小的Ruby脚本来生成我顶进程列表:

puts %x{uptime} 

IO.popen("ps aruxl") { |readme| 
    pslist = readme.to_a 
    pslist.shift # remove header line 
    pslist.each_with_index { |i,index| 
     ps = i.split 
     psh = { user: ps[0], pid: ps[1], pcpu: ps[2], pmem: ps[3], 
       vsz: ps[4], rss: ps[5], tty: ps[6], stat: ps[7], 
       time: ps[8], uid: ps[9], ppid: ps[10], cpu: ps[11], pri: ps[12], 
       nice: ps[13], wchan: ps[14], cmd: ps[16..ps.size].join(" ") } 
     printf("%-6s %-6s %-6s %s", "PID:", "%CPU:", "%Mem", "Command\n") if index == 0 
     printf("%-6d %-6.1f %-6.1f %s\n", 
     psh[:pid].to_i, psh[:pcpu].to_f, psh[:pmem].to_f, psh[:cmd]) if index < 10 

    } 

} 

(这很可能会更好,但它是我写过的第一台红宝石脚本,因为它的作品我从来没有重新审视它来改善它 - 它不需要输入。无论如何,它可能会帮助给你一些想法)

+0

@jess,那是Ruby 1.9吗? – runako 2009-05-19 03:40:56

+0

是的。我有#!到ruby19,但由于某种原因,当我发布时,它将字体强化了大约500%,所以我将它删除了。我喜欢新的语法糖! – jess 2009-05-19 04:16:15

0

stfl但我不知道是否维护ruby绑定。 ncurses可能是你最好的选择。