पृष्ठभूमि शोध
मैं एक सरल 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
, आवेदन आइकन और प्रगति बार अब ठीक से प्रदर्शित एकता लॉन्चर बार में। लांचर एकीकरण का एक स्क्रीनशॉट नीचे देखा जा सकता है।