AppleScript/JavaScript for Automation (JXA)을 사용하여 Mac에 알림

JXA란?



OSX Yosemite에서 AppleScript를 JavaScript로 대체할 수 있습니다. 이것을 JavaScript for Automation(JXA)라고 합니다만, 해설이 적어서 힘듭니다.
일단 통지 정도 내면 응용이 편리할 것 같아서 써 보았습니다.

Mac 알림 센터에 알림 보내기



응용 프로그램에서 "스크립트 편집기"를 시작하여 다음과 같은 자바 스크립트 파일을 만듭니다.

notify.js
var app=Application.currentApplication();
app.includeStandardAdditions = true;
app.displayNotification('はろーわーるど', {
    withTitle: 'ほげほげ', 
    subtitle: 'ふがふが', 
    soundName: 'Glass'
});

[▶] 버튼을 누르거나 Command(⌘)+R로 실행하면 통지가 나옵니다.
(언어 설정을 AppleScript가 아닌 JavaScript로 만드는 것을 잊지 마세요!)

덧붙여서 소리는 システム環境設定 > サウンド > サウンドエフェクト 에 있는 것으로부터 선택할 수 있습니다. 존재하지 않는 경우는 디폴트의 소리가 되는 것 같습니다. 음량도 여기에서 선택할 수 있습니다(통지 음량이 0이 되어 소리가 울리지 않고 빠졌습니다).

애플리케이션과 협력



이것만으로는 지루하지 않기 때문에, iTunes 안에서 랜덤하게 한 곡 가져와 통지하는 샘플을 만들어 보겠습니다.

itunes_notify.js
var app    = Application.currentApplication(),
    iTunes = Application('iTunes');

app.includeStandardAdditions = true;

var allTracks = iTunes.playlists[0].tracks();
var randomTrack = allTracks[Math.floor(Math.random() * allTracks.length)];

app.displayNotification(
    randomTrack.artist(),
    {
        withTitle: randomTrack.name(),
        subtitle:  randomTrack.album()
    }
);

다시 [▶] 버튼을 누르거나 Command(⌘)+R로 실행합니다.



불행히도 아이콘의 표시를 변경할 수없는 것 같습니다. 앨범의 아트워크로 할 수 있으면 좋았습니다만.

명령줄에서 실행



명령줄에서 실행할 수도 있습니다. 위의 파일을 itunes_notify.js로 저장하고 터미널에서 다음을 수행합니다.
$ osascript -l JavaScript itunes_notify.js

단, 커맨드 라인에서 Application.currentApplication()를 호출하면
warning: failed to get scripting definition from /usr/bin/osascript; it may not be scriptable.

라는 경고가 나옵니다. 지금은 해결 방법을 모르겠습니다.

요약



OSX Yosemite에서 사용할 수있게 된 JavaScript for Automation (JXA)을 사용하여 알림을 보내는 방법을 썼습니다.
문서는 JavaScript for Automation Release Notes을 보거나 스크립트 편집기에서 ファイル > 用語説明を開く > StandardAdditions.osax에 제공됩니다(모두 영어).

좋은 웹페이지 즐겨찾기