如何在Ruby中构建类似顶级的UI

时间:2009-05-19 02:45:48

标签: ruby text user-interface interface tui

我想在Ruby中使用基于文本的UI构建一个类似于Linux命令“top”的应用程序。我可以使用哪些工具包和/或技术来构建UI?特别是我想要一个不断更新的控制台窗口区域,以及按键操作显示器的能力。

3 个答案:

答案 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可能是你最好的选择。