Mac用のMenubarアプリケーションを作成する方法


175

EDIT:これは素敵な既製のメニューバーアプリケーションである、ここでgithubのソースこれで)答え


メニューバーアプリケーションの作り方を知りたくて、そのための要件は何ですか?

メニューバーのシンプルなアプリケーションが、ブラウザを使用してリンクを開くことであるのを見ました。それに似たものを作成したいと思います。

ここに画像の説明を入力してください

これは、私が同様に作成したいアプリケーションです。


4
これは簡単なチュートリアルです。
NSRover 2014年

回答:


133

NSStatusItemはあなたが探しているものです。また、文字列値1のLSUIElementをInfo.plistに追加して、Dockから非表示にします。


14
mactech.com/articles/mactech/Vol.22/22.02/Menulet-いくつかの説明付きのサンプルコードを以下に示します。
SteamTrout

2
あなたは、たとえば私のGitHugプロジェクトの一つをチェックアウトすることができます:github.com/nippysaurus/WeatherRock/blob/master/...
Nippysaurus

3
SteamTroutのリンクに記載されている例を実装し、githubに置きました。それはここにあります:github.com/wanderingstan/IPMenuletExample
Stan James

こんにちは、あなたの助けに感謝をトラウトスチーム...しかし、どのように我々は、アプリケーションのアンインストールユーザーまで、メニューバーに常に我々のアプリケーションのショートカットを保つことができます...任意の助け.... stackoverflow.com/questions/23605687/...
VSN

66

Codeboxのポップアップが優れた出発点であることがわかりました。Githubでのforkに適しています。

ここに画像の説明を入力してください

それはうまく機能しますが、彼らは自分のサイトに注意しています...

PSライオンでは、AppleはiOSのようなポップオーバー用の新しいクラスを追加しています。したがって、OS X 10.7がリリースされた後は、可能な場合はネイティブCocoaクラスに依存することをお勧めします。他の場合では、Popupプロジェクトはまだ使用可能です。


3
これはいかなる場合にも当てはまりません。NSPopoverには重大な制限があります。テキストフィールド/ビューはファーストレスポンダーになれないため、テキストを入力できません。
クリスチャンキエンレ2013

@ChristianKienleそれでも、OS Xバージョン> 10.7のPopupアプリケーションから始めることをお勧めしますか?
fatuhoku 2013

はい。NSPopover +ステータスアイテムには、10.7および10.8で重大な制限があります。たとえば、上のスクリーンショットは検索フィールドを示しています。NSPopoverを使用すると、検索フィールドを適切に操作できません。
クリスチャンキエンレ2013

1
Codeboxのポップアップサンプルにこのような複雑なBackgroundPanelがあるのはなぜですか?
rbp

13

BitBarGitHub上のアプリケーションで、「Mac OS Xメニューバーに何でも置く」ことができます。

シェルまたは他の実行可能スクリプト(プラグインと呼ばれる-プラグインリポジトリの多くの例を参照)を実行し、メニューバーに結果を表示します。独自のプラグインを作成して、「プラグインフォルダー」に追加するだけで実行できます。情報を表示するだけでなく、定義済みのプラグインメニューから定義済みのbashスクリプトをインタラクティブに実行することもできます。

私が最初にこの回答を投稿して以来、その人気は爆発的に増加し(現在52人の貢献者)、独自のプラグインをパッケージ化できる配布可能なバージョンもあります。

ビットコインのライブ価格を表示する非常にシンプルな(非インタラクティブ)例:

ここに画像の説明を入力してください


4
私のかわいそうな元の答えを改善してくれたcwdに感謝
MatzFan


2

FlyCutは、これを行うもう1つの優れたオープンソースアプリケーションです。(MITライセンス。)非常に便利で、1日に数回使用します。

これは関連があるように見えるいくつかのコードです:

    // Flycut/AppController.h
    IBOutlet NSMenu *jcMenu;

    // Flycut/AppController.m
    statusItem = [[[NSStatusBar systemStatusBar]
            statusItemWithLength:NSVariableStatusItemLength] retain];
    [statusItem setHighlightMode:YES];

    if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 1 ) {
        [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2704]]; 
    } else if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 2 ) {
        [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2702]]; 
    } else {
        [statusItem setImage:[NSImage imageNamed:@"com.generalarcade.flycut.16.png"]];
    }
    [statusItem setMenu:jcMenu];
    [statusItem setEnabled:YES];

こんにちはfunroll、私はこのショートカットを常にメニューバーに維持したいと思います。Macのデフォルトのvalumeコントロールはプログラミングで可能です...助けてください!!!
VSN 2014年

@VSN StackOverflowコメントは、このような助けを求めるのに適した場所ではありません。良い質問をする方法を読むことを勧めします
funroll 2014年

私は新しい質問をしました
VSN

0

Mail Notifrは、もう1つのオープンソースのメニューバーアプリです。特に、ログイン時にオープンを実装する方法を理解する必要がある場合に、私はたくさんの助けとなりました。App Storeでも入手できます。

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