Skip to content

Access macOS JavaScript for Automation APIs directly in node

Notifications You must be signed in to change notification settings

wtfaremyinitials/jxa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jxa

Access macOS JavaScript for Automation APIs directly in node

Similar to the osa2 module, but with synchronous calls and an API with a bit more 'magic'. If you're building a library, use osa2. This module is best suited for small scripts.

Installation

Module: npm install --save jxa

REPL: npm install -g jxa

Usage

Interact with apps in the same way you would with Apple's official JavaScript for automation runtime, as described here. The only difference is that you must get a handle to the Application object by requiring this module.

var Application = require('jxa').Application;

var iTunes = Application('iTunes');

var name   = iTunes.currentTrack.name();
var artist = iTunes.currentTrack.artist();

console.log(name + ' by ' + artist);
// Pay No Mind (feat. Passion Pit) by Madeon

iTunes.pause();
// Music pauses

iTunes.play();
// Music plays

If you install JXA globally (npm install -g jxa) a REPL is provided that exposes Application() in the global scope.

will@laptop ~ $ jxa-node
> Application('iTunes')
[object JXAReference => [object Application]]
> Application('iTunes').play()
undefined
> Application('iTunes').currentTrack
[object JXAReference => [object ObjectSpecifier]]
> Application('iTunes').currentTrack.name()
'No Problem (feat. Lil Wayne & 2 Chainz)'
>

About

Access macOS JavaScript for Automation APIs directly in node

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published