我想在Ruby中使用基于文本的UI构建一个类似于Linux命令“top”的应用程序。我可以使用哪些工具包和/或技术来构建UI?特别是我想要一个不断更新的控制台窗口区域,以及按键操作显示器的能力。
答案 0 :(得分:2)
有关终端界面,请参阅http://ncurses-ruby.berlios.de/
答案 1 :(得分: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
}
}
(这可能会更好,但它是我写过的第一个红宝石脚本,因为它起作用我从来没有重新审视它来改进它 - 它不需要输入。无论如何,它可能会帮助你一些想法)
答案 2 :(得分:0)
有stfl但我不知道是否保留了ruby绑定。 ncurses可能是你最好的选择。