さらに読む前に:私は執事や同様のプログラムについて知っています。サードパーティのアプリなしでこれを行うための組み込みの方法を探しています。
とにかく、私はシェルコマンドを実行するAppleScriptを作成しました。その出力を上部のメニューバーに表示したい...バトラーなしでこれを行うにはどうすればよいですか?
さらに読む前に:私は執事や同様のプログラムについて知っています。サードパーティのアプリなしでこれを行うための組み込みの方法を探しています。
とにかく、私はシェルコマンドを実行するAppleScriptを作成しました。その出力を上部のメニューバーに表示したい...バトラーなしでこれを行うにはどうすればよいですか?
回答:
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のの一部であり、2012年に、おそらく不可能だったものを達成するために、その「財団」の枠組み(税込。NSMenuのメソッド)を使用することが可能です。
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 は「メニュー」を閉じるのに役立ちました。スクリプトの最後の行を参照してください。どうもありがとう!
/programming/29168474/creating-a-simple-menubar-app-using-applescript
。。。。。しかし、私が恐れているのは、別の場所で見つけて適応させた私の最後の行(半分の時間)が正しくないことです。。。。。。私はプログラマーではないので、コードを理解するのにもう少し時間が必要です。
StatusItem's dealloc()
適切であり、AppleScriptObjCアプリにのみ適用可能であり、Script Editorではなく誤ってクラッシュする可能性があります。
set myText to ...
行(コマンドの前の行)は、次のコードに基づいて実際には何も実行しないため、まったく必要ありません。つまり、のみ使用価値のは、後に割り当てられたものであるコマンドをされ実行前には何に設定する理由はコマンドがのコンテキストで必要なコーディング未使用とではありませんコード現在提示します。display dialog
myText
display dialog
display dialog
StatusItem's dealloc()
またはStatusItem's setTitle:""
使用します:current application's NSStatusBar's systemStatusBar()'s removeStatusItem:StatusItem