2012-04-19 67 views
8

我有一個ruby腳本(https://github.com/daemonza/MacBak),它作爲守護程序在我的macbook上運行,並監視一堆目錄中的文件更改和rsync發生的任何更改。我想知道我能否讓它在頂部的菜單欄中創建一個圖標?只是爲了讓我知道它實際上在運行,而不必使用ps來檢查它。作爲守護程序運行的腳本,OS X中的菜單欄圖標?

也許以後如果需要的話,我可能希望能夠控制從那裏劇本,下降簡單打倒停止和狀態條目等

似乎從ObjectC我可以叫NSStatusItem得到的圖標,但我真的只是想從我的Ruby腳本中輕鬆完成。也許可能是一些我可以做的applescript調用?

+0

看看RubyCocoa。我從來沒有使用它,但我認爲從Ruby使用Cocoa非常有效。 – Linuxios 2012-04-19 13:08:47

+0

@Linux_iOS看到[這個答案](http://stackoverflow.com/a/695353/405017)注意RubyCocoa是過去,而MacRuby是未來。 – Phrogz 2012-04-19 16:08:32

+0

嗯。我從來沒有處理過,所以我不知道。感謝澄清。 – Linuxios 2012-04-19 23:06:50

回答

6

這MacRuby的腳本創建一個狀態欄圖標:
https://github.com/ashchan/gmail-notifr

那麼,這一個:
https://github.com/isaac/Stopwatch

這裏的要點包括代碼,做它:
https://gist.github.com/1480884

# We build the status bar item menu 
def setupMenu 
    menu = NSMenu.new 
    menu.initWithTitle 'FooApp' 
    mi = NSMenuItem.new 
    mi.title = 'Hellow from MacRuby!' 
    mi.action = 'sayHello:' 
    mi.target = self 
    menu.addItem mi 

    mi = NSMenuItem.new 
    mi.title = 'Quit' 
    mi.action = 'quit:' 
    mi.target = self 
    menu.addItem mi 

    menu 
end 

# Init the status bar 
def initStatusBar(menu) 
    status_bar = NSStatusBar.systemStatusBar 
    status_item = status_bar.statusItemWithLength(NSVariableStatusItemLength) 
    status_item.setMenu menu 
    img = NSImage.new.initWithContentsOfFile 'macruby_logo.png' 
    status_item.setImage(img) 
end 

# Menu Item Actions 
def sayHello(sender) 
    alert = NSAlert.new 
    alert.messageText = 'This is MacRuby Status Bar Application' 
    alert.informativeText = 'Cool, huh?' 
    alert.alertStyle = NSInformationalAlertStyle 
    alert.addButtonWithTitle("Yeah!") 
    response = alert.runModal 
end 

def quit(sender) 
    app = NSApplication.sharedApplication 
    app.terminate(self) 
end 

app = NSApplication.sharedApplication 
initStatusBar(setupMenu) 
app.run 
+0

感謝您將看看鏈接 – daemonza 2012-04-20 05:49:39

+0

$> macruby ./mr_status_bar_app.rb(其中mr_status_bar_app.rb包含上面的要點)不會顯示狀態欄中的任何內容。 PNG圖像是否需要有一定的維度? – Vassilis 2012-09-09 16:55:03

+0

它必須與.rb腳本位於同一目錄中 – buley 2014-01-16 20:42:27

1

你可以看看MacRuby 。這是使用Ruby而不是Objective-C開發OS X應用程序的一種方式。它包含了許多改進,比如擺脫頭文件,所以在Ruby中只有「實現」文件。您也可以使用IB來構建窗口

相關問題