Archive for the 'NSApp' Category

2015/10/22 アプレットのアイコンをDockに出さない

Cocoaの機能を用いて、Dockにアイコン非表示状態のAppleScriptアプレットにする方法です。

一番有名なのは、Info.plistに”LSBackgroundOnly”=”1″のエントリを作成する方法ですが、Cocoaの機能を用いて、アプレットの起動後にアイコンを非表示状態にすることが可能です。

通常のAppleScript Appletを前提にして話をします。

本記事中のプログラムリストは、アプレット(Applet)に書き出した状態で実行してください。Script Editor上で実行しても意味がありません。

export_to_applet.png

export_to_applet2.png

exported_applet.png

通常のAppleScript Appletでは、Cocoa-AppleScript Applet(OS X 10.7で採用になったもの)と異なり、起動時の細かいイベントハンドラは利用できないため、Appletが起動してコードが実行されるまでの間、「ちょっとの間だけ」Dock上にアイコンが表示されます。

cocoa_applescript_applet.png

プロセスの隠し方が2通りあります。

 NSApplicationActivationPolicyAccessory:display dialog実行可能
 NSApplicationActivationPolicyProhibited:display dialog実行不可。display notificationやsayコマンドなどは実行可能

それぞれ、用途に応じて使ってみてください。また、状態を途中で変更することも可能で、通常のアプレットのようにDock表示状態に戻すこともできます。

AppleScript名:アプレットのアイコンをDockに出さない
– Created 2015-10-22 by Takaaki Naganoya
– 2015 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “AppKit”

–Dockアイコン非表示、dialogは出せる
current application’s NSApp’s setActivationPolicy:(current application’s NSApplicationActivationPolicyAccessory)
repeat with i from 1 to 10
  tell current application
    display dialog (i as text) giving up after 1 with icon 1 buttons {“OK”}
  end tell
end repeat
quit

★Click Here to Open This Script 

AppleScript名:アプレットのアイコンをDockに出さない2
– Created 2015-10-22 by Takaaki Naganoya
– 2015 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “AppKit”

–Dockアイコン非表示、dialogも出ない
current application’s NSApp’s setActivationPolicy:(current application’s NSApplicationActivationPolicyProhibited)
repeat with i from 1 to 10
  tell current application
    display notification (i as text)
    
delay 1
  end tell
end repeat
quit

★Click Here to Open This Script 

AppleScript名:アプレットのアイコンをDockに出さない→出す
– Created 2015-10-22 by Takaaki Naganoya
– 2015 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “AppKit”

–Dockアイコン非表示、dialogは出せる
current application’s NSApp’s setActivationPolicy:(current application’s NSApplicationActivationPolicyAccessory)
repeat with i from 1 to 10
  tell current application
    display dialog (i as text) giving up after 1 with icon 1 buttons {“OK”}
  end tell
end repeat

–通常状態
current application’s NSApp’s setActivationPolicy:(current application’s NSApplicationActivationPolicyRegular)
repeat with i from 1 to 10
  tell current application
    display dialog (i as text) giving up after 1 with icon 1 buttons {“OK”}
  end tell
end repeat

★Click Here to Open This Script 

2014/11/04 アプリケーションのDockアイコンに文字列をバッジ表示(5文字まで)

Dockのアイコンにバッジで文字を表示するAppleScriptです。

実際にためしてみると、数字でもアルファベットでも日本語でも、5文字まで表示できます。消すには、ヌルを表示すれば大丈夫です。

こういうの、ひと昔前だとサードパーティのOSAXを入れて実現していたような処理ですが、CocoaをAppleScriptから直接いじくれると「まあ、こんなもんかな」という感じですね。

dock1.png
▲Script Editor上で実行した場合

dock2.png
▲アプレットとして書き出して実行した場合

AppleScript名:asoc_アプリケーションのDockアイコンに文字列をバッジ表示(5文字まで)
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”

delay 10

showDockBadge_(“ぴよまる”) –Max 5 文字

delay 10

showDockBadge_(“”)

–Dockのアプリケーションアイコンに指定文字をバッジ表示
on showDockBadge:theText
  set theDockTile to current application’s NSApp’s dockTile()
  
theDockTile’s setBadgeLabel:theText
  
theDockTile’s display()
end showDockBadge:

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に