スクリプト可能なメニューバーアイコン


8

メニューバーのステータスエリアにカスタムアイコンを追加する簡単な方法はありますか?Growlのようなもの(コマンドを実行するだけなど)が理想ですが、通知の代わりにメニューバーにアイコンを表示するだけです。

私は主に、さまざまなことを知らせるために使用する数字を描くことを探しています。たとえば、特定の種類の電子メールが到着したときに、コマンド/ AppleScriptを実行して番号を更新するように電子メールクライアントを構成できます。

このようなもの:

img

回答:


4

AppleScript内からCocoa Objective-C呼び出しを使用する方法について説明するこのスレッドから始めることをお勧めします。ここにサンプルXcodeプロジェクトがあります

そして、打ち上げは、機能的にこれを行うのAppleScriptで書かれた完全なアプリケーションです。そのXcodeプロジェクトファイルはこちらです。

基本的な前提は、NSMenuItemインスタンスを生成し、それらをシステムのNSStatusBarに追加することです。

set statusMenu to (NSMenu's alloc)'s initWithTitle_("Launch")
-- (build and do stuff with the statusMenu here)
set sysStatusBar to NSStatusBar's systemStatusBar
set statusItem to sysStatusBar's statusItemWithLength_(32)
tell statusItem to setMenu_(statusMenu)
tell statusItem to setHighlightMode_(1)
set menuImage to NSImage's imageNamed_("icon.png")
tell statusItem to setImage_(menuImage)

LaunchのソースコードからのAppleScriptの抜粋、著作権©Lee Hanken


リンクは、2018年に今欠けている
davidfrancis

3

さて、私はこのためのアプリを作りました。GitHubにあります:0942v8653 / ScriptableStatusBar。アプリを実行し続け、sbarツールを使用してアイテムを設定および削除するだけです。

readmeにあるように:

sbar set face 😃 'Bye!:sbar remove face'

ステータスバーに顔を作成します。メニューには、作成したメニューを削除しBye!て実行するオプションがありますsbar remove face


コンパイル済みバージョンはhttps://github.com/0942v8653/ScriptableStatusBar/releasesからダウンロードできます。


いいのですが、「io.github.0942v8653.ScriptableStatusBar」という名前の通知ではなく、すべての分散通知に登録するのはなぜですか?
マテウスシュロセク

@MateuszSzlosek良い質問です。後で修正します:P
0942v8653

1
@MateuszSzlosek修正済み。
0942v8653 14年

アプリの機能は、上記の「BitBar」に非常に似ているようです。あなたのものにはアイコンがありますが(BitBarにあるかどうかはわかりません)、もう1つはほぼすべてのスクリプト言語(標準出力付き)で右側のメニューバーにその出力を非常に簡単に表示できます。これを使用して、現在のワークスペースの数を「戻す」アップルスクリプトを「osascript」します(以前のOSバージョンのように)。スクリプトは、プラグインフォルダーに追加されるだけです!名前の一部(xx.3s.sh => 3秒など)は、繰り返し間隔を指定します。ステータス表示に非常に便利です!!!
クレムサムラング

2

RubyCocoaを使用することもできます。

require "osx/cocoa"
include OSX

app = NSApplication.sharedApplication
statusitem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
statusitem.setTitle("aa")
app.run


0

はい、Xcodeでこの目的のためにCocoaアプリを作成できます。いいえ、applescriptではできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.