Ruby에서 Mac 알림 센터에서 알림을 받는 쉬운 방법(AppleScript)

6380 단어 AppleScriptMac루비
(추기: 2015/2/25 지금 보면 이상한 코드 쓰고 있으므로 재작성하고 싶지만 재작성하지 않겠지요)

Ruby로 통보하고 싶었기 때문에 간단한 방법을 조사했습니다.
Ruby라고 할까, 그냥 AppleScript입니다.

AppleScript



Marvericks에서 AppleScript에서 알림 센터에 알릴 수 있습니다.

notification.scpt
display notification "めっせーじ"



옵션으로 제목, 부제목 및 소리를 지정할 수 있습니다.
그렇지 않으면 변경할 수 없습니다. 아이콘 등.

notification_with_options.scpt
display notification "めっせーじ" with title "たいとる" subtitle "さぶたいとる" sound name "Purr"



통지 센터에서는 이런 느낌. 삭제는 × 버튼.
클릭하면 AppleScript 편집기가 시작됩니다. (변경 불가)


사용법은 「AppleScript 에디터」의 이하를 참조.

파일 > 용어 설명 열기 > StandardAdditions.osax > User Interaction > display notification]

display notification v : Display a notification. At least one of the body text and the title must be specified.
display notification [text] : the body text of the notification
[with title text] : the title of the notification (default is the name of the calling application).
[subtitle text] : the subtitle of the notification
[sound name text] : the name of the sound to play

루비



그래서 Ruby에서 사용하는 간단한 방법은 쉘에서 osascript 명령을 실행하는 방법이라고 생각합니다.
Ruby처럼 -e 옵션을 사용하면 문자열을 AppleScript로 실행할 수 있습니다.

Terminal
osascript -e 'display notification "hello"'

「``」를 사용하면, 그대로의 형태로 Ruby로 실행 가능.

notification_test.rb
`osascript -e 'display notification "hello"'`

메소드로 해 보겠습니다.
이쪽은 커멘드의 실행을 「``」가 아니고 system 메소드로 했습니다.

notification
def notification(message, title:"Ruby", subtitle:"", sound:"")
  [message, title, subtitle, sound].each{|arg| arg.gsub!(/"/, '\\\\\"')}

  scpt = 'display notification "%s"' % message
  scpt << ' with title "%s"' % title
  scpt << ' subtitle "%s"' % subtitle unless subtitle.empty?
  scpt << ' sound name "%s"' % sound unless sound.empty?

  system %|osascript -e "#{scpt.gsub(/"/, '\"')}"|
end

# ダブルクォーテーション、シングルクォーテーションが問題なく使えること確認
notification %q|"I thought what I'd do was, I'd pretend I was one of those deaf-mutes."|, sound:'Glass'


AppleScript 문자열에는 더블 따옴표 만 사용할 수 있습니다.
그러니까 osascript에 건네주는 캐릭터 라인은 싱글로 둘러싸려고 생각했습니다만, 쉘로 싱글을 이스케이프 하는 것이 어쩐지 귀찮게 했으므로 차분히 더블로 했습니다.
(참고: bash와 같은 쉘로 싱글 쿼트를 이스케이프하는 방법 - 나카노 토모후미 )

움직이지 않았을 경우는 코멘트 받을 수 있으면 도움이 됩니다.

사운드 이름 정보


sound name를 생략하면 소리가 나지 않습니다.
존재하지 않는 소리를 지정하면 디폴트의 소리(트라이트 톤)가 울립니다.

사운드는 시스템 환경설정 > 사운드 > 사운드 효과에 있는 이름을 지정합니다.
다만, 트라이톤은 거기에 없기 때문에, 그 밖에도 지정할 수 있는 소리가 있을지도 모릅니다. (정보 요청)

대신 say "hello" 라든지 말하는 것도 좋을지도 모릅니다.

참고



Mavericks는 알림 센터를 스크립트에서 사용할 수있게되었습니다 | Blog by msyk
Mavericks에서 require 'osx / cocoa'를 할 수 없다 - rcmdnk's blog

좋은 웹페이지 즐겨찾기