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

EDIT: это хорошее готовое приложение menubar здесь (источник github) по этой ответ.


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

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

enter image description here

Это приложение мне нравится подобный.

6 ответов


NSStatusItem это то, что вы ищете. Также добавьте lsuielement со строковым значением 1 к вашей информации.файл plist, чтобы скрыть его от Дока.


Я нашел всплывающее окно Codebox чтобы быть отличной отправной точкой. Он созрел для раздвоение на Github.

enter image description here

хотя это работает хорошо, они отмечают на своем сайте...

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


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

https://github.com/taichino/PopupTest


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

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

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

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

enter image description here


приложения 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];

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