기본적으로 bash 스크립트 또는 Apple Script에서 명령을 실행하고 “시계가있는 곳”이라는 상태 표시 줄에 문자열 (또는 아이콘)이 표시됩니다.
osascript와 유사하지만 상태 표시 줄의 경우 :
/ usr / bin / osascript -e ‘제목이 “Title”인 “Lorem ipsum dolor sit amet”알림 표시’
답변
이것은 내가 오래 전에 찾은 것으로 만족스러운 해결책을 찾지 못했습니다. 귀하의 질문에 대한 해결책을 찾을 때 다시 시작한 프로젝트를 마무리하도록 영감을주었습니다.
GitHub 에서 메뉴 표시 줄 을 확인하십시오 . 스크립트에 문자열을 전달하여 메뉴 표시 줄에 알림을 표시 할 수 있습니다.
./menubarnotifier.py "Notification Text Here"
… OS X 메뉴 표시 줄에 표시됩니다. 알림을 클릭하면 응용 프로그램이 종료됩니다.
스크립트 위치를 경로에 추가하거나 스크립트 자체의 별칭을 만들면 터미널의 어느 곳에서나 사용할 수 있습니다.
기존 구현의 문제점은 기본적으로 stderr에 쓰는 NSLog를 사용하여 로깅한다는 것입니다. 스크립트를 실제로 사용하려면 NSLog 메시지를 억제해야합니다.
내 접근 방식은 다음 기능을 사용자에게 추가 한 다음 ~/.bash_profile
메뉴 표시 줄에 알림을 추가 할 때 함수를 호출하는 것입니다.
# menubarnotifier.py function
mn () {
/path/to/menubarnotifier.py "$1" 2>/dev/null &
}
따라서 다음과 같이 사용할 수 있습니다.
mn "Notification Text Here"
그리고 stdout에 로그하지 않습니다. 또한 Ctrl + C를 요구하지 않기 위해 백그라운드에서 실행됩니다.
스크립트는 PyObjC를 사용하므로 아직 설치하지 않은 경우 설치해야합니다. MacPorts를 사용하여 쉽게 설치 sudo port install py27-pyobjc*
했지만, 그냥 도망 갈 수 있다고 생각합니다 sudo port install py27-pyobjc py27-pyobjc-cocoa
.
아이디어는 NSStatusBar.systemStatusBar().statusItemWithLength_()
OS X 메뉴 표시 줄에서 새 항목을 작성하는 데 사용 됩니다.
self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength_(NSVariableStatusItemLength)
self.statusItem.setTitle_(display_text)
나중에 더 많은 기능 (예 : 질문에 언급 한 이미지)을 추가하겠습니다. 또한 더 나은 로깅 메커니즘을 찾아서 NSLog 출력을 보지 않고 실행할 수 있습니다. 지금은 위에서 작성한 bash 함수를 사용하여 원하는 방식으로 작동하도록하십시오.