क्या Mavericks में स्थिति पट्टी में एक स्ट्रिंग या एक छवि प्रदर्शित करने के लिए कमांड लाइन उपयोगिता है?


3

मूल रूप से मैं बैश स्क्रिप्ट या ऐप्पल स्क्रिप्ट में एक कमांड जारी करना चाहता हूं और स्टेटस बार उर्फ ​​"जहां घड़ी है" में कुछ स्ट्रिंग (या आइकन) देखें।

ऑसस्क्रिप्ट के समान कुछ लेकिन स्टेटस बार के लिए:

/ usr / bin / osascript -e 'डिस्प्ले नोटिफिकेशन "शीर्षक शीर्षक" के साथ लोरम इप्सम डोरल सिट एमेट "

जवाबों:


6

यह कुछ ऐसा है जिसे मैंने बहुत समय पहले देखा था और इसका कोई संतोषजनक समाधान नहीं मिला। आपके प्रश्न ने मुझे उस परियोजना को खत्म करने के लिए प्रेरित किया है जो मैंने उस समय शुरू की थी जब मैं इसका हल खोज रहा था।

GitHub पर menubarnotifier देखें । आप स्क्रिप्ट को स्ट्रिंग पास करके मेनूबार में एक सूचना प्रदर्शित कर सकते हैं:

./menubarnotifier.py "Notification Text Here"

... और यह ओएस एक्स मेनूबार में प्रदर्शित होगा। अधिसूचना पर क्लिक करने से आवेदन बाहर निकल जाएगा।

स्क्रीनशॉट

स्क्रिप्ट के स्थान को अपने पथ में जोड़ें (या केवल स्क्रिप्ट के लिए एक उपनाम बनाएं) और आप इसे टर्मिनल में कहीं से भी उपयोग कर पाएंगे।

मौजूदा कार्यान्वयन के साथ समस्या यह है कि यह NSLog का उपयोग करके लॉग इन करता है, जो डिफ़ॉल्ट रूप से stderr को लिखता है। स्क्रिप्ट से कोई वास्तविक उपयोग प्राप्त करने के लिए आपको NSLog संदेशों को दबाने की आवश्यकता होगी।

मेरा दृष्टिकोण आपके लिए निम्नलिखित फ़ंक्शन को जोड़ना है ~/.bash_profileऔर फिर फ़ंक्शन को कॉल करना है जब आप मेनूबार में एक अधिसूचना जोड़ना चाहते हैं:

# menubarnotifier.py function
mn () {
    /path/to/menubarnotifier.py "$1" 2>/dev/null &
}

तो आप इसे बस के साथ उपयोग कर सकते हैं:

mn "Notification Text Here"

और यह stdout में प्रवेश नहीं करेगा। यह Ctrl + C की आवश्यकता नहीं करने के लिए पृष्ठभूमि में भी चलेगा।


स्क्रिप्ट PyObjC का उपयोग करती है, इसलिए आपको यह स्थापित करने की आवश्यकता होगी कि यदि आपके पास यह पहले से नहीं है। मैंने इसे आसानी से MacPorts का उपयोग करके स्थापित किया है, sudo port install py27-pyobjc*लेकिन मुझे लगता है कि आप बस के साथ दूर हो सकते हैं sudo port install py27-pyobjc py27-pyobjc-cocoa

NSStatusBar.systemStatusBar().statusItemWithLength_()ओएस एक्स मेनूबार में एक नया आइटम बनाने के लिए उपयोग करने के लिए विचार है ।

self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength_(NSVariableStatusItemLength)
self.statusItem.setTitle_(display_text)

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

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