如何为 Mac 创建一个 Menubar 应用程序

编辑: 这是一个很好的现成的菜单栏应用程序 给你(Github 源代码)的这个 回答


我想知道如何做一个菜单栏应用程序,这样做的要求是什么?

我看到一个简单的应用程序的菜单栏就是用你的浏览器打开链接,我想创建一些类似的东西。

enter image description here

这是我喜欢做类似的应用程序。

89223 次浏览

NSStatusItem 是您正在寻找的。还要将字符串值为1的 LSUIElement 添加到 Info.plist 中,以便对 Dock 隐藏它。

我发现 密码箱弹出窗口是一个很好的起点,在 Github 上分叉。的时机已经成熟

enter image description here

虽然效果不错,但他们在网站上也写了..。

另外,在 Lion 中,苹果公司为酥饼增加了一个新的类别,比如 iOS。 因此,在 OS X 10.7发布之后,您最好还是依赖于原生系统 在可能的情况下使用 Cocoa 类 应该还能用。

FlyCut 是另一个做到这一点的很好的开源应用程序。(麻省理工学院执照)也很方便,我一天用好几次。

下面是一些看起来相关的代码:

    // 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];

随着苹果在约塞米蒂将 NSStatusBarButton属性添加到 NSStatusItem中,我们可以更简单地实现 menubar 应用程序。我刚在 github 上创建了一个示例项目。

Https://github.com/taichino/popuptest

BitBar GitHub上的一个应用程序,它可以“在 Mac OS X 菜单栏中放入任何东西”。

它运行 shell 或其他可执行脚本(称为 插件-见插件回购中的许多例子) ,并在菜单栏中显示结果。你可以编写自己的插件,只需将它添加到‘ Plugins 文件夹’即可运行。除了显示信息,它还可以从您定义的插件菜单交互式地运行预定义的 bash 脚本。

自从我第一次发布这个答案,它的流行有 爆炸了(52个贡献者目前) ,现在甚至有一个可发行版本,你可以打包自己的插件。

一个非常简单的(非互动的)比特币实时价格示例:

enter image description here

Mail Notifr 是另一个开源的 Menubar 应用程序。它帮了我很多,特别是当我需要搞清楚如何实现登录时的开放。应用程序商店也有售。