2009-05-19 20 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可能是你最好的選擇。