Skip to content

Instantly share code, notes, and snippets.

@uchcode
Created March 13, 2016 18:57
Show Gist options
  • Save uchcode/96fa4febe6a0386a6348 to your computer and use it in GitHub Desktop.
Save uchcode/96fa4febe6a0386a6348 to your computer and use it in GitHub Desktop.
Statusbar App in JXA
#!/usr/bin/osascript -l JavaScript
ObjC.import('Cocoa')
app = Application.currentApplication()
app.includeStandardAdditions = true
ObjC.registerSubclass({
name: 'MenuAction',
methods: {
'sayHello:': {
types: ['void', ['id']],
implementation: function(sender) {
app.displayAlert('hello world')
}
},
'quit:': {
types: ['void', ['id']],
implementation: function(sender) {
$.NSApp.terminate(this)
}
}
}
})
function Menu() {
target = $.MenuAction.alloc.init
menu = $.NSMenu.alloc.init
miSayHello = $.NSMenuItem.alloc.init
miSayHello.title = 'Hello from JXA!'
miSayHello.target = target
miSayHello.action = 'sayHello:'
menu.addItem(miSayHello)
miQuit = $.NSMenuItem.alloc.init
miQuit.setTitle('Quit')
miQuit.setTarget(target)
miQuit.setAction('quit:')
menu.addItem(miQuit)
return menu
}
function StatusBar(title, menu) {
statusBar = $.NSStatusBar.systemStatusBar
statusItem = statusBar.statusItemWithLength($.NSVariableStatusItemLength)
statusItem.title = title
statusItem.menu = menu
}
nsapp = $.NSApplication.sharedApplication
StatusBar('Statusbar App in JXA', Menu())
nsapp.run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment