더 읽기 전에 : 나는 버틀러 및 유사한 프로그램 에 대해 알고 있습니다. 타사 앱 없이이 작업을 수행하는 내장 방법을 찾고 있습니다.
어쨌든 쉘 명령을 실행하는 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가 “메뉴”를 닫는 데 도움을주었습니다. 스크립트의 마지막 줄을 참조하십시오. 고마워요!