Как создать приложение Menubar для Mac

EDIT: это приятное готовое меню для меню здесь (источник github) этим .


Мне было интересно, как сделать приложение в стиле меню, каковы требования для этого?

Я увидел простое приложение для меню, чтобы открывать ссылки, используя ваш браузер, я хочу создать что-то похожее на это.

enter image description here

Это приложение, которое мне нравится делать аналогичным.

Ответ 1

NSStatusItem - это то, что вы ищете. Также добавьте LSUIElement со строковым значением 1 в ваш Info.plist, чтобы скрыть его от Dock.

Ответ 2

Я нашел Codebox Popup, чтобы стать отличной отправной точкой. Пришло время для разветвления на Github.

enter image description here

Хотя он работает красиво, они замечают на своем сайте...

Р. S. In Lion, Apple добавляет новый класс для popovers, как в iOS. Таким образом, после освобождения OS X 10.7 вам лучше полагаться на собственный Cocoa классы, где это возможно. В других случаях проект Popup должен по-прежнему использоваться.

Ответ 3

Когда Apple добавило свойство NSStatusBarButton к NSStatusItem в Yosemite, мы можем реализовать меню в стиле menubar намного проще. Я только что создал образец проекта на github.

https://github.com/taichino/PopupTest

Ответ 4

BitBar - это приложение на GitHub, который может "Поместить что-нибудь в панель меню Mac OS X".

Он запускает оболочку или другие исполняемые скрипты (которые он вызывает Плагины - см. множество примеров в репозитории плагинов) и отображает результаты в в строке меню. Вы можете написать свой собственный плагин и запустить его, добавив его в папку "Plugins". Помимо отображения информации, она также может запускать предварительно определенные сценарии bash в интерактивном режиме из меню плагинов, которое вы определяете.

Поскольку я впервые опубликовал этот ответ, его популярность взорвалась (сейчас 52 участника), и теперь есть даже распространяемая версия, с которой вы можете упакуйте свои собственные плагины.

Очень простой (неинтерактивный) пример, показывающий текущую цену биткойнов:

введите описание изображения здесь

Ответ 5

FlyCut - еще одно приятное приложение с открытым исходным кодом, которое делает это. (Лицензия на MIT.) Очень удобна, я использую ее несколько раз в день.

Вот какой код, который выглядит как он может быть релевантным:

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

Ответ 6

Mail Notifr - еще одно приложение Menubar с открытым кодом. Это помогло мне кучу, особенно когда мне нужно было выяснить, как реализовать открытый при входе в систему. Также доступен в App Store.