पृष्ठभूमि शोध
मैं एक सरल python/Gtkअनुप्रयोग के लिए एकता लांचर के भीतर प्रगति बार को अपडेट करने का प्रयास कर रहा हूं Quicklyजिसे कॉल किया गया है test; हालाँकि, इस वीडियो में दिए गए निर्देशों का पालन करते हुए , मैं Unityलॉन्चर में प्रगति बार को सफलतापूर्वक अपडेट नहीं कर पाया । यूनिटी इंटीग्रेशन वीडियो में, Quicklyउपयोग नहीं किया गया था, इसलिए जिस तरह से एप्लिकेशन संरचित किया गया था, वह थोड़ा अलग था, और वीडियो में प्रयुक्त कोड डिफ़ॉल्ट Quickly ubuntu-applicationटेम्पलेट एप्लिकेशन में संशोधन के बिना ठीक से काम नहीं करता है ।
स्क्रीनशॉट
यहाँ एप्लिकेशन आइकन का एक स्क्रीनशॉट है क्योंकि यह वर्तमान में एकता लॉन्चर में प्रदर्शित किया गया है।

यहाँ एकता लांचर प्रगति बार कार्यक्षमता का एक स्क्रीनशॉट है जो मुझे पसंद आएगा (मेल आइकन पर ओवरलेड : wiki.ubuntu.com )।

परियोजना क्रमांक
एक .zipपरियोजना फ़ाइलों से युक्त फ़ाइल पाया जा सकता है यहाँ ।
अपेक्षित् व्यवहार
मैं उपरोक्त कोड को एक प्रगति पट्टी दिखाने की उम्मीद करूंगा जो एकता लांचर में परीक्षण अनुप्रयोग के लिए आइकन पर 75% पूर्ण ओवरले है , लेकिन एप्लिकेशन केवल तभी चलता है और जब कमांड quickly runनिष्पादित होता है तो कोई प्रगति पट्टी प्रदर्शित नहीं करता है।
समस्या की जांच
मेरा मानना है कि समस्या यह है कि मुझे एप्लिकेशन की मुख्य विंडो का संदर्भ ठीक से नहीं मिल रहा है, हालांकि, मुझे यकीन नहीं है कि इस समस्या को ठीक से कैसे ठीक किया जाए। मैं यह भी मानता हूं कि लाइन: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")जटिलता का एक और स्रोत हो सकता है क्योंकि साधारण फ़ाइलों के बजाय फाइलें Quicklyबनाता है , इसलिए मुझे यकीन नहीं है कि अगर यह समस्या भी पैदा कर सकता है।.desktop.in.desktop
शायद, इस मुद्दे का एक अन्य स्रोत यह है कि मैं पूरी तरह से .desktopऔर .desktop.inफ़ाइलों के बीच के अंतर को नहीं समझता हूं । क्या यह संभवतः test.desktop.inफ़ाइल की एक प्रतिलिपि बनाने और इसे नाम बदलने के लिए समझ में आता है test.desktop, और सही फ़ाइल को संदर्भित /usr/share/applicationsकरने के लिए इसे जगह देता है ?get_for_desktop_id("test,desktop").desktop
संबंधित अनुसंधान लिंक
हालाँकि, मैं अभी भी .desktop और .desktop.in फ़ाइलों के बीच के अंतर पर स्पष्ट नहीं हूं, मैंने .desktop फ़ाइलों पर कुछ शोध किया है और मैं कुछ लिंक पर आया हूं:
- डेस्कटॉप एंट्री फाइल्स (Library.gnome.org)
- डेस्कटॉप फ़ाइल स्थापना निर्देशिका (askubuntu.com)
- एकता लॉन्चर API (wiki.ubuntu.com)
- डेस्कटॉप फ़ाइलें: डेस्कटॉप मेनू में अपने आवेदन डाल (developer.gnome.org)
- डेस्कटॉप मेनू विशिष्टता (standard.freedesktop.org)
संपादित करें
चलने python setup.py buildऔर फिर /build/share/applicationsनिर्मित test.desktopफ़ाइल को नेविगेट करने और स्थानांतरित करने के लिए ~/.local/share/applications, और अंत में निष्पादित करने के बाद quickly run, केवल एक आइकन के लिए एक प्रश्न चिह्न प्रदर्शित किया जा रहा है, जिसमें कोई दृश्य प्रगति पट्टी नहीं है ।

संपादित करें २
निर्मित .desktopफ़ाइल की आगे की जांच के बाद , यह पता चला कि लाइन:
फ़ाइल के Icon=/usr/share/test/media/test.svgभीतर .desktopएक आइकन फ़ाइल की ओर इशारा किया गया था, test.svgजिसका नाम मौजूद नहीं था।
आदेश में इस समस्या को हल करने के लिए, मैं नामक एक नया फ़ोल्डर बनाया testमें /usr/share/आदेश का उपयोग sudo mkdir testकरें और फिर परीक्षण फ़ोल्डर बुलाया का एक और फ़ोल्डर के अंदर बनाया mediaआदेश का उपयोग sudo mkdir mediaकरें, और तब मैं चले गए test.svgआइकन पर मेरी जल्दी परियोजना निर्देशिका में स्थित फ़ाइल test/data/media/test.svgको /usr/share/test/media/। .svgआवेदन के लिए आइकन अब एकता लॉन्चर बार में ठीक से प्रदर्शित करता है और ऑल्ट-टैब ध्यान में रखते हुए, हालांकि वहां अभी भी नहीं दिखाई प्रगति बार है के रूप में नीचे स्क्रीनशॉट में दिखाया गया।

संपादित करें 3
जैसा कि @dobey ने बताया, लाइन में TestWindow.py फ़ाइल के कोड में एक टाइपो था:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop"),
कहाँ test.destkop, होना चाहिए test.desktop।
मैंने इस टाइपो को बदल दिया और अनुप्रयोग का उपयोग करके निष्पादित किए जाने पर कोई दृश्यमान परिवर्तन नहीं हुआ quickly run। हालांकि, लाइन को जोड़ने के बाद print('Integrating with launcher')करने के लिए add_launcher_integration()वहाँ टर्मिनल जब आवेदन चलाया गया था में कोई इसी उत्पादन किया गया था, यह दर्शाता है कि समस्या हो कि लगता है add_launcher_integration()आवेदन शुरू होता है सही ढंग से जब कहा जा करने के लिए नहीं प्रतीत होता है।
संपादित करें ४
आगे की जांच के बाद, यह पता चला कि add_launcher_integration()वास्तव में कहा जाता है जब आवेदन शुरू होता है। लाइन के अलावा के साथ:
os.system("clear")
लाइन से पहले
print("Integrating with launcher")
संदेश "लांचर के साथ एकीकरण" अब में प्रदर्शित करता है terminal।
हालांकि, यूनिटी लॉन्चर बार में अभी भी कोई प्रगति नहीं है ।
संपादित करें ५
पुनर्निर्माण के बाद Quicklyक्रियान्वित करते हुए परियोजना python setup.py buildऔर निर्मित चलती .desktopभीतर फ़ाइल Quicklyमें स्थित परियोजना /build/share/applications/के लिए ~/.local/share/applications, आवेदन आइकन और प्रगति बार अब ठीक से प्रदर्शित एकता लॉन्चर बार में। लांचर एकीकरण का एक स्क्रीनशॉट नीचे देखा जा सकता है।
