메뉴 막대에 AppleScript 출력을 표시하는 방법이 있습니까? 전에 : 나는

더 읽기 전에 : 나는 버틀러 및 유사한 프로그램 에 대해 알고 있습니다. 타사 앱 없이이 작업을 수행하는 내장 방법을 찾고 있습니다.

어쨌든 쉘 명령을 실행하는 AppleScript를 작성했습니다. Butler없이 상단의 메뉴 막대에 해당 출력을 표시하고 싶습니다. 어떻게해야합니까?



답변

일반적으로 Growl과 같은 타사 프로그램이 없으면이 작업을 수행 할 수있는 방법이 없습니다.

그러나 여기 에서 찾은 프로그램이나 스크립트 릿 서비스를 제공 하는 스크립트 또는 기타 프로그램을 작성할 수 있습니다. Growl 통합이 훨씬 쉬울 것이라고 확신합니다.


답변

OS X에서는이를 수행 할 수있는 기본 방법이 없습니다. 그러나 Growl을 사용 하면 알림을받을 수 있습니다. 이에 대한 샘플 스크립트는 다음과 같습니다.

--Make sure Growl is running
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

if isRunning then
    tell application id "com.Growl.GrowlHelperApp"
        set the allNotificationsList to ¬
            {"Test Notification", "Another Test Notification"}
        --Notifications can be enabled in System Preferences>Growl>Applications>Display Options
        set the enabledNotificationsList to ¬
            {"Test Notification"}
        register as application ¬
            "Growl AppleScript Sample" all notifications allNotificationsList ¬
            default notifications enabledNotificationsList ¬
                    -- Set the icon. You can use any icon from any application
            icon of application "AppleScript Editor"

        notify with name ¬
            "Test Notification" title ¬
            "Test Notification" description ¬
            "This is a test AppleScript notification." application name "Growl AppleScript Sample"

        notify with name ¬
            "Another Test Notification" title ¬
            "Another Test Notification :) " description ¬
            "Alas — you won't see me until you enable me..." application name "Growl AppleScript Sample"

    end tell
end if

다음이 표시되어야합니다.

다른 알림도 활성화 한 경우 :


더 고급 기술이 여기 에 설명되어 있습니다.


답변

AppleScriptObjC 는 macOS의 일부 이므로 “Foundation”프레임 워크 (NSMenu의 방법 포함)를 사용하여 2012 년에는 불가능했던 것을 달성 할 수 있습니다.

AppleScript 내에서 사용자 정의 메뉴를 생성하는 흥미로운 스크립트를 발견했습니다. 이것으로부터 나는 macOS의 메뉴 바에 텍스트배치 하기 위해 적절한 코드를 추출했습니다 . 실제로 일부 내용을 삽입하기 위해 메뉴의 “제목”만 사용합니다.

이를 증명하기 위해 사용자에게 텍스트 입력을 요청하는 (6 초 대기) 매우 기본적인 대화 스크립트를 구현 한 다음 메뉴 표시 줄에 일시적으로 (5 초) 표시됩니다.
여기있어:

use framework "Foundation"
use framework "AppKit"
use scripting additions
property StatusItem : missing value
property newMenu : class "NSMenu"

display dialog "Write something:" default answer "" giving up after 6
set myText to text returned of the result
if myText is "" then set myText to "TOOOOO slow … try again !"
set myText to ">>    " & myText & "    <<"

set bar to current application's NSStatusBar's systemStatusBar
set StatusItem to bar's statusItemWithLength:-1.0
StatusItem's setTitle:myText
set newMenu to current application's NSMenu's alloc()'s initWithTitle:"Custom"
StatusItem's setMenu:newMenu

delay 5
current application's NSStatusBar's systemStatusBar()'s ¬
        removeStatusItem:StatusItem  

이 AppleScript 코드는 모든 스크립트에서 사용할 수 있습니다. ( “대화창”부분은 선택 사항입니다 …)

user3439894가 “메뉴”를 닫는 데 도움을주었습니다. 스크립트의 마지막 줄을 참조하십시오. 고마워요!


답변