Mavericks의 상태 표시 줄에 문자열 또는 이미지를 표시하는 명령 줄 유틸리티가 있습니까?


3

기본적으로 bash 스크립트 또는 Apple Script에서 명령을 실행하고 "시계가있는 곳"이라는 상태 표시 줄에 문자열 (또는 아이콘)이 표시됩니다.

osascript와 유사하지만 상태 표시 줄의 경우 :

/ usr / bin / osascript -e '제목이 "Title"인 "Lorem ipsum dolor sit amet"알림 표시'

답변:


6

이것은 내가 오래 전에 찾은 것으로 만족스러운 해결책을 찾지 못했습니다. 귀하의 질문에 대한 해결책을 찾을 때 다시 시작한 프로젝트를 마무리하도록 영감을주었습니다.

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 함수를 사용하여 원하는 방식으로 작동하도록하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.