0

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

4

3 回答 3

2

对于终端接口,请参见http://ncurses-ruby.berlios.de/

于 2009-05-19T03:01:09.927 回答
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

    }

}

(这可能会更好,但它是我编写的第一个 ruby​​ 脚本,因为它有效,所以我从未重新审视它来改进它——而且它不需要输入。无论如何,它可能有助于给你一些想法)

于 2009-05-19T03:11:57.503 回答
0

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

于 2009-05-20T11:59:53.190 回答