2012-04-19 8 views
8

Tengo un script de ruby ​​(https://github.com/daemonza/MacBak) que se ejecuta en mi macbook como un daemon y supervisa un grupo de directorios para cambios de archivos y rsync cualquier cambio que ocurra. Me preguntaba si podría dejar que creara un ícono en la barra de menú en la parte superior. Solo para que sepa que se está ejecutando realmente, sin tener que verificarlo con ps.Icono de la barra de menús en OS X para el script que se ejecuta como daemon?

Tal vez más tarde si es necesario puede ser que quiera ser capaz de controlar el guión a partir de ahí, simple desplegables con las entradas de parada y de estado, etc.

Al parecer, de ObjectC puedo llamar NSStatusItem obtener el icono, pero Realmente solo quiero hacerlo fácilmente desde mi script de Ruby. Tal vez tal vez alguna llamada AppleScript que puedo hacer?

+0

Mire RubyCocoa. Nunca lo he usado, pero creo que funciona bastante bien para usar Cocoa de Ruby. – Linuxios

+0

@Linux_iOS Vea [esta respuesta] (http://stackoverflow.com/a/695353/405017) señalando que RubyCocoa es el pasado, y MacRuby es el futuro. – Phrogz

+0

Hm. Nunca lo resolví, así que no lo sabría. Gracias por aclararlo. – Linuxios

Respuesta

6

Este script MacRuby crea un icono de la barra de estado:
https://github.com/ashchan/gmail-notifr

también lo hace éste:
https://github.com/isaac/Stopwatch

Aquí hay un código de Gist incluyendo que lo hace:
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

Gracias se verá en los enlaces – daemonza

+0

$> macruby ./mr_status_bar_app.rb (donde mr_status_bar_app.rb contiene la esencia anterior) no muestra nada en la barra de estado. ¿La imagen png debe tener ciertas dimensiones? – Vassilis

+0

Tiene que estar en el mismo directorio que el script .rb – buley

1

Puedes mirar MacRuby . Es una forma de desarrollar aplicaciones OS X usando Ruby en lugar de Objective-C. Incluye una serie de mejoras, como deshacerse de los archivos de encabezado, por lo que solo tienes archivos de "implementación" en Ruby. Puede usar IB para construir ventanas también

Cuestiones relacionadas