2012-04-19 2 views
8

Ich habe ein Ruby-Skript (https://github.com/daemonza/MacBak), das auf meinem MacBook als Daemon läuft und eine Reihe von Verzeichnissen nach Dateiänderungen und rsync nach irgendwelchen Änderungen überwacht. Ich fragte mich, ob ich in der Lage sein würde, ein Symbol in der Menüleiste oben zu erstellen? Nur damit ich weiß, dass es tatsächlich läuft, ohne dass ich es mit ps prüfen muss.Menüleistensymbol in OS X für Skripts, die als Daemon ausgeführt werden?

Vielleicht später, wenn nötig, ich könnte das Skript steuern von dort einfach Drop-Down mit Stopp und Statuseinträgen usw.

Es scheint aus ObjectC der Lage sein wollen kann ich NSStatusItem rufen Sie das Symbol zu erhalten, aber Ich möchte es wirklich einfach aus meinem Ruby-Skript machen. Vielleicht vielleicht ein Applescript, dass ich tun kann?

+0

Schauen Sie sich RubyCcoa an. Ich habe es nie benutzt, aber ich denke, es funktioniert ziemlich gut für die Verwendung von Cocoa von Ruby. – Linuxios

+0

@Linux_iOS Siehe [diese Antwort] (http://stackoverflow.com/a/695353/405017), dass RubyCocoa die Vergangenheit ist und MacRuby die Zukunft ist. – Phrogz

+0

Hm. Ich habe mich nie darum gekümmert, also würde ich es nicht wissen. Danke fürs klarstellen. – Linuxios

Antwort

6

Dieses MacRuby Skript erstellt eine Statusleiste Symbol:
https://github.com/ashchan/gmail-notifr

Das Gleiche gilt für diese:
https://github.com/isaac/Stopwatch

Hier ist ein Gist einschließlich Code, der es tut:
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

Danke wird auf die Links – daemonza

+0

sehen $> macruby ./mr_status_bar_app.rb (wo mr_status_bar_app.rb enthält die oben genannten) zeigt nichts in der Statusleiste. Muss das PNG-Bild bestimmte Dimensionen haben? – Vassilis

+0

Sie muss sich im selben Verzeichnis wie das .rb-Skript befinden – buley

1

Sie könnten MacRuby betrachten . Es ist eine Möglichkeit, OS X-Anwendungen mit Ruby anstelle von Objective-C zu entwickeln. Es enthält eine Reihe von Verbesserungen, wie zum Beispiel das Entfernen von Header-Dateien, so dass Sie nur "Implementierungs" -Dateien in Ruby haben. Sie können IB auch zum Erstellen von Fenstern verwenden

Verwandte Themen