2012-04-19 9 views
8

Ho uno script ruby ​​(https://github.com/daemonza/MacBak) che viene eseguito sul mio macbook come demone e controlla un gruppo di directory per le modifiche ai file e rsync qualsiasi modifica che si verifica. Mi stavo chiedendo sarebbe in grado di lasciarlo creare un'icona nella barra dei menu in alto? Solo per sapere che è effettivamente in esecuzione, senza doverlo verificare con ps.Icona della barra dei menu in OS X per lo script eseguito come daemon?

Forse più tardi, se necessario, potrei voglio essere in grado di controllare lo script da lì, semplice menu a discesa con le voci di arresto e di stato, ecc

Sembra da ObjectC posso chiamare NSStatusItem per ottenere l'icona, ma Voglio davvero farlo facilmente dal mio script Ruby. Forse forse una chiamata da AppleScript che posso fare?

+0

Guarda RubyCocoa. Non l'ho mai usato, ma penso che funzioni abbastanza bene per l'utilizzo di Cocoa da Ruby. – Linuxios

+0

@Linux_iOS Vedi [questa risposta] (http://stackoverflow.com/a/695353/405017) notando che RubyCocoa è il passato e MacRuby è il futuro. – Phrogz

+0

Hm. Non l'ho mai affrontato, quindi non lo saprei. Grazie per il chiarimento. – Linuxios

risposta

6

Questo script MacRuby crea un'icona nella barra di stato:
https://github.com/ashchan/gmail-notifr

E anche questa:
https://github.com/isaac/Stopwatch

Ecco un codice di Gist compreso che lo fa:
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

Grazie esamineremo i link – daemonza

+0

$> macruby ./mr_status_bar_app.rb (dove mr_status_bar_app.rb contiene il gist sopra) non mostra nulla nella barra di stato. L'immagine png deve avere certe dimensioni? – Vassilis

+0

Deve essere nella stessa directory dello script .rb – buley

1

Si potrebbe guardare MacRuby . È un modo di sviluppare app OS X usando Ruby invece di Objective-C. Include una serie di miglioramenti, come la rimozione dei file di intestazione, quindi hai solo i file di "implementazione" in Ruby. Puoi usare IB anche per costruire finestre

Problemi correlati