我有一个
ruby脚本(
https://github.com/daemonza/MacBak),它作为守护进程在我的macbook上运行,并监视一堆目录中的文件更改和rsync发生的任何更改.我想知道我能够让它在顶部的菜单栏中创建一个图标吗?只是为了让我知道它实际上正在运行,而不必用ps检查它.
也许以后如果需要我可能希望能够从那里控制脚本,简单下拉停止和状态条目等.
从ObjectC看来我可以调用NSStatusItem来获取图标,但我真的只想从我的Ruby脚本中轻松完成.或许也许是一些我可以做的AppleScript电话?
解决方法
此MacRuby脚本创建状态栏图标:
https://github.com/ashchan/gmail-notifr
https://github.com/ashchan/gmail-notifr
这一个是这样的:
https://github.com/isaac/Stopwatch
这是一个Gist,包括执行它的代码:
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