Mac के लिए Menubar एप्लिकेशन कैसे बनाएं


175

संपादित करें: यह एक अच्छा रेडीमेड मेनूबार अनुप्रयोग है यहाँ ( GitHub स्रोत इस से) जवाब


मैं सोच रहा था कि मेनूबार आवेदन कैसे किया जाए, इसके लिए क्या आवश्यकताएं हैं?

मैंने देखा कि मेनूबार के लिए एक सरल एप्लिकेशन आपके ब्राउज़र का उपयोग करके लिंक खोलना था, मैं इसके समान कुछ बनाना चाहता हूं।

यहां छवि विवरण दर्ज करें

यह मैं इसी तरह बनाने के लिए आवेदन की तरह है।


4
यहाँ एक सरल ट्यूटोरियल है
NSRover

जवाबों:


133

NSStatusItem वह है जिसे आप ढूंढ रहे हैं। अपने डॉक से छिपाने के लिए अपने Info.plist के 1 के स्ट्रिंग मान के साथ LSUIElement भी जोड़ें।


14
mactech.com/articles/mactech/Vol.22/22.02/Menulet - यहां कुछ स्पष्टीकरण के साथ एक नमूना कोड है।
स्टीमट्राउट

2
आप एक उदाहरण के लिए मेरी GitHug परियोजनाओं में से एक की जाँच कर सकते हैं: github.com/nippysaurus/WeatherRock/blob/master/…
Nippysaurus

3
मैंने स्टीमट्राउट के लिंक में वर्णित उदाहरण को लागू किया और इसे गीथूब पर डाल दिया। यह यहाँ है: github.com/wanderingstan/IPMenuletExample
Stan James

हेलो स्टीम ट्राउट, आपकी मदद के लिए धन्यवाद ... लेकिन हम अपने एप्लिकेशन शॉर्टकट को हमेशा मेन्यू बार में कैसे रख सकते हैं, जब तक कि उपयोगकर्ता एप्लिकेशन को अनइंस्टॉल नहीं करता ... कोई मदद .... stackoverflow.com/questions/23605687/…
VSN

66

मैंने कोडबॉक्स के पॉपअप को एक शानदार शुरुआत माना है। यह गितुब पर फोर्क करने के लिए पका है

यहां छवि विवरण दर्ज करें

हालांकि यह अच्छी तरह से काम करता है, वे अपनी साइट पर ध्यान दें ...

PS In Lion, Apple iOS में पॉपओवर के लिए एक नया वर्ग जोड़ रहा है। इसलिए, OS X 10.7 जारी होने के बाद, आप देशी कोको वर्गों पर भरोसा करना बेहतर होगा जहां यह संभव है। अन्य मामलों में, पॉपअप परियोजना अभी भी प्रयोग करने योग्य होनी चाहिए।


3
यह किसी भी मामले में सही नहीं है। NSPopover की गंभीर सीमाएँ हैं: पाठ फ़ील्ड / दृश्य पहले प्रत्युत्तर नहीं बन सकते हैं और इस प्रकार आप पाठ में प्रवेश नहीं कर सकते हैं।
क्रिश्चियन कीनले

@ChristianKienle क्या आप अभी भी OS X संस्करणों> 10.7 के साथ पॉपअप एप्लिकेशन शुरू करने की सिफारिश करेंगे?
फतुहोकू

हाँ। NSPopover + Status आइटम की 10.7 और 10.8 में गंभीर सीमाएँ हैं। उदाहरण के लिए ऊपर स्क्रीनशॉट एक खोज क्षेत्र दिखाता है। NSPopover का उपयोग करके आप खोज फ़ील्ड के साथ ठीक से सहभागिता नहीं कर सकते।
क्रिश्चियन कीनले

1
कोडबॉक्स के पॉपअप नमूने में ऐसी जटिल पृष्ठभूमि क्यों है?
आरबीपी

13

BitBar GitHub पर एक एप्लिकेशन है जो "आपके मैक ओएस एक्स मेनू बार में कुछ भी डाल सकता है"।

यह शेल या अन्य निष्पादन योग्य स्क्रिप्ट चलाता है (जिसे प्लगइन्स कहते हैं - प्लग इन रेपो में कई उदाहरण देखें ) और मेनू बार में परिणाम प्रदर्शित करता है। आप अपना खुद का प्लगइन लिख सकते हैं और इसे केवल 'प्लगइन्स फ़ोल्डर' में जोड़कर चला सकते हैं। सूचना प्रदर्शित करने के साथ-साथ, यह आपके द्वारा परिभाषित प्लगइन मेनू से अंतः-परिभाषित बाश लिपियों को भी अंतःक्रियात्मक रूप से चला सकता है।

जब से मैंने पहली बार इस उत्तर को पोस्ट किया है तब से यह लोकप्रियता फैल गई है (वर्तमान में 52 योगदानकर्ता) और अब एक वितरण योग्य संस्करण भी है जिसके साथ आप अपने स्वयं के प्लगइन्स को पैकेज कर सकते हैं।

बिटकॉइन की कीमत दिखाने के लिए एक बहुत ही सरल (गैर-इंटरैक्टिव) उदाहरण:

यहां छवि विवरण दर्ज करें


4
मेरे बल्कि खराब मूल उत्तर को बेहतर बनाने के लिए cwd को धन्यवाद
MatzFan

10

जैसा कि ऐप्पल ने योसेमाइट में NSStatusBarButtonसंपत्ति को जोड़ा NSStatusItem, हम मेनूबार ऐप को बहुत सरल तरीके से लागू कर सकते हैं। मैंने अभी जीथब पर एक नमूना परियोजना बनाई है।

https://github.com/taichino/PopupTest


इसे एक साथ रखने के लिए धन्यवाद!
cwd

2

फ्लाईकैट एक और अच्छा ओपन सोर्स एप्लिकेशन है जो ऐसा करता है। (एमआईटी लाइसेंस प्राप्त है।) बहुत आसान है, मैं इसे दिन में कई बार उपयोग करता हूं।

यहाँ कुछ कोड है जो ऐसा लगता है कि यह प्रासंगिक हो सकता है:

    // 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, मैं इस शॉर्टकट को हमेशा मेन्यू बार में रखना चाहूंगा जैसे कि मैक में डिफ़ॉल्ट वैल्यू कंट्रोल प्रोग्रामिंग के साथ संभव है ... कृपया मेरी मदद करें !!!
वीएसएन

@VSN StackOverflow टिप्पणियाँ इस तरह की मदद के लिए पूछने के लिए एक अच्छी जगह नहीं हैं। मैं एक अच्छा प्रश्न पूछना चाहता हूं
फफूंद

मैंने नया सवाल पूछा
VSN

0

मेल नोटिफ़र एक अन्य ओपन सोर्स मेनूबार ऐप है। इसने मुझे एक गुच्छा बनाने में मदद की, खासकर जब मुझे यह पता लगाने की आवश्यकता थी कि लॉगिन पर खुले को कैसे लागू किया जाए। ऐप स्टोर पर भी उपलब्ध है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.