2009-12-02 8 views
5

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

अब

मैं ubuntu के लिए एक छोटा सा एप्लेट विकसित करने के लिए, कि मैं जीपीएल 2 या 3

विशेष रूप से इन नए कदम हैं मुझे पता है के तहत जारी करने के लिए मैं क्रम में सीखना चाहिए चाहते हैं चाहते हैं मेरा लक्ष्य प्राप्त करने के लिए (यह बहुत संभव वहाँ है कि मैं, के बारे में पता कर रहा हूँ, हालांकि कुछ और कर रहे हैं!):

  • GNOME के ​​साथ घालमेल: मैं अपने आवेदन एक के रूप में उपलब्ध होना चाहता हूँ टास्कबार में एप्लेट।
  • डी-बस का उपयोग करना: विशेष रूप से मैं चाहता हूं कि मेरा एप्लेट यूबंटू के लिए नए ओएसडी-अधिसूचना ढांचे का उपयोग करे, लेकिन दूसरे एप्लेट्स के साथ संचार भी दूसरी पुनरावृत्ति के लिए एक संभावित विशेषता है।
  • पैकेजिंग: जैसे ही एप्लिकेशन अल्फा चरण तक पहुंच जाएगा, मैं सार्वजनिक पीपीए सेट करना चाहता हूं, लेकिन मैं अपने आप में पुस्तकालयों को फिर से शामिल करने के बजाय आधिकारिक रिपो में मौजूदा पैकेजों से निर्भरताओं का उपयोग करना चाहता हूं पैकेज।
बेशक

आधिकारिक दस्तावेज ज्ञान की मेरी पहली स्रोत होगा, लेकिन - बहुत ही उपयोगी जवाब है कि मैं इतने पर another topic यहाँ पर प्राप्त पर अपना निर्णय आधारित - मैं जैसे अतिरिक्त सलाह इकट्ठा करने के लिए इतना समुदाय की सहायता ले करने का निर्णय लिया उदाहरण के लिए:

  1. क्या उन लोगों के लिए अतिरिक्त कदम हैं जिन्हें मैंने पहले बताया था, मुझे अपनी परियोजना को लागू करने में सक्षम होने के लिए सीखना है?
  2. अपने अनुभव के आधार पर, क्या आप मुझे उन चरणों को पहले से सीखने की सलाह देंगे (क्योंकि उनके ज्ञान को मूल कार्यक्षमता को कोड करने के तरीके को प्रभावित किया जाएगा) या आप gnome/d-bus और पैकेजिंग के साथ एकीकरण पर विचार करेंगे " उच्च encapsulating स्तर "जो बाद में कोर कार्यक्षमता के शीर्ष पर जोड़ा जा सकता है (नोट: डी-बस पहले डेटा को धक्का देने के लिए इस्तेमाल किया जाएगा। इनपुट डेटा एक webservice के साथ पुनर्प्राप्त किया जाएगा)?
  3. क्या आप मुझे अपने पैकेज को दो पैकेज (बैक एंड एंड फ्रंट एंड) में अलग करने या इसे एक पैकेज में रखने के लिए सलाह देंगे ?,
  4. क्या आप किसी भी उपयोगी संसाधन के बारे में जानते हैं जो आप मुझे सलाह देंगे देखो, मुझे जो कुछ भी करना है उसे सीखने के लिए?
  5. क्या आप किसी भी सामान्य "शुरुआती गलतियों" से अवगत हैं, जिन्हें मुझे अवगत होना चाहिए?

इन सवालों संपूर्ण, हालांकि नहीं होती हैं: यदि आपको लगता है कि मैं सामान्य तस्वीर से कुछ याद आ रही है, तो आप सही दिशा में मुझे बात करने के लिए स्वागत किया और अधिक से अधिक कर रहे हैं!

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

उत्तर

1

जब मैंने दो साल पहले इस सवाल से पूछा कि उबंटू और जीनोम आज के मुकाबले एक दूसरे के करीब थे। वर्तमान में GNOME (2011 अंत), सूक्ति-खोल अपनाया जबकि विहित उनके बहुत ही यूआई (unity) विकसित करने के लिए ... तनाव कि विभाजन specifically involved libappindicator, जो जिस तरह से मैं तैयार करता है के लिए लाया के

भाग का फैसला किया यह प्रश्न (और शायद उत्तर का हिस्सा) अप्रचलित।

इसके अलावा, अब स्टैक एक्सचेंज पर AskUbuntu है, जो शायद उबंटू-विशिष्ट प्रश्न पूछने के लिए एक बेहतर मंच होगा।

3

ठीक है, आप पाइथन सूचीबद्ध करते हैं, इसलिए आप अपने शस्त्रागार में pynotify रखना चाहेंगे। यह डीबीस को लपेटता है, और आपको ओएसडी अधिसूचना प्रणाली में हेरफेर करने के लिए एक सीधी एपीआई देता है। -, कॉपी, पेस्ट, काटना को समझने

[ ] **Lil' Applet** 
[ICON] 
[ ] Lil' Applet wants you to know something's up. 
+1

अधिसूचना पॉप-अप और पैनल –

+0

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

+0

इस के लिए धन्यवाद (+1)। मैंने कल्पना की कि यह कुछ नाटकीय रूप से अधिक जटिल होगा ... लेकिन हे ... यह बॉक्स से बाहर काम करता प्रतीत होता है! यह निश्चित रूप से उपयोगी था। :) – mac

3

आप पहले से ही जानते हैं, अपना पहला और सबसे अच्छा दोस्त दूसरों द्वारा लिखे कोड होगा:

>>> import pynotify 
>>> pynotify.init("Lil' Applet") 
True 
>>> note = pynotify.Notification(
...   pynotify.get_app_name(), 
...   "Lil' Applet wants you to know something's up.", 
...   "/usr/share/icons/Human/48x48/status/dialog-information.png") 
>>> note.show() 
True 

यह नोटिफिकेशन है कि इस तरह दिखता है प्रदर्शित करता है। सौभाग्य से ऐसी कुछ परियोजनाएं हैं जो आप प्राप्त करने का इरादा रखते हैं। मैं conduit's कोड को एक प्रमुख संदर्भ के रूप में अनुशंसा कर सकता हूं कि स्वच्छ फैशन में चीजें कैसे करें। मुझे लगता है कि उनके पास डीबीस पर सामान भी है। दूसरों को नजर रखने के लिए, deskbar-applet, hamster (हेएच), और किसी भी अन्य ऐप को याद रखने के लिए आपको एक्स की सुविधा होगी। कभी-कभी इसे कुछ सी कोड को समझने की आवश्यकता हो सकती है (जैसे एप्लेट बटन बिट - मेरा सुझाव है कि आप इसे हम्सटर से बेहतर तरीके से लें क्योंकि मुझे चीज़ को सीधे प्राप्त करने में कुछ बड़ा समय था)

फिर "devhelp" ऐप बहुत मददगार होगा - यह आपको मैन पेजों को तेज़ और आसान पढ़ने और खोजने की अनुमति देता है। सुनिश्चित करें कि आपके पास उपयोग किए जाने वाले सभी मॉड्यूल के लिए -doc संकुल भी हैं। उपयोगकर्ता इंटरफ़ेस के लिए मैं दृढ़ता से ग्लैड का उपयोग करने का सुझाव देता हूं, क्योंकि इससे आप बाद में इंटरफ़ेस को अधिक आसान बना सकते हैं। जहां आप ग्लैड - एड और संरेखण बॉक्स का उपयोग नहीं कर सकते हैं और कोड में बॉक्स में विजेट जोड़ सकते हैं। निश्चित रूप से क्विर्क और चीजें होंगी जिन्हें आप कठिन तरीके से सीखेंगे। हालांकि बहुत मुश्किल नहीं होना चाहिए!

पैकेजिंग, विशेष रूप से ऑटोोटूल एक संघर्ष का थोड़ा सा होगा, लेकिन आपको यह सही लगेगा। डेबियन (और वहां से पीपीए) कैसे करें, आप हम्सटर के भंडार इतिहास में खोद सकते हैं। एक बार "डेबियन" फ़ोल्डर था।

मैं छोटे से शुरू करने का सुझाव दूंगा - देखें कि क्या आप एक खिड़की प्राप्त कर सकते हैं। फिर उस पर एक बटन डालें। आपको इसे पहली बार "सही" करने की ज़रूरत नहीं है। पहली बार यह ठीक रहेगा, अगर कुछ काम करता है।

अलगाव के लिए - जब तक आप वहां नहीं जाते, मैं इसके बारे में परेशान नहीं होता। दो हिस्सों में विभाजित होना और कोर रखना, बाद में बहुत कठिन नहीं होना चाहिए। लेकिन यह सब आपकी प्राथमिकताओं पर निर्भर करता है।

अंतिम बात - फ़ील्ड को जानने वाले मित्रों को भी मदद मिलती है। और नए दोस्तों को पाने का एक तरीका है, अन्य परियोजनाओं में भाग लेना, हे।

+0

विभिन्न सिफारिशों (+1) के लिए धन्यवाद। मेरी पहली परियोजना के बाद से ग्लैड और डेहेल्प बेल्ट के नीचे अच्छी तरह से हैं, लेकिन वास्तव में कुछ अच्छे कोड को देखने के लिए कुछ पॉइंटर रखना बहुत उपयोगी है। – mac

1

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

मैं जितनी जल्दी हो सके सोर्स कोड प्रबंधन प्रणाली स्थापित करने का सुझाव दूंगा।आप अपनी डिस्क दुर्घटनाग्रस्त होने के बारे में चिंतित नहीं हो सकते हैं, लेकिन कभी-कभी यह आपको अंतिम प्रतिबद्धता के बाद से किए गए सभी कार्यों को वापस करने में सक्षम होने के लिए बहुत परेशानी बचाता है।

Here आधिकारिक जीनोम पैनल एप्लेट पुस्तकालय पर दस्तावेज़ों का लिंक है। मुझे नहीं पता कि इसमें पाइथन बाइंडिंग है या नहीं।

+0

बहुत उपयोगी, धन्यवाद! (+1)। मेरा मानना ​​है कि आपके द्वारा भेजी गई लाइब्रेरी के अजगर के लिए बाइंडिंग 'पायथन-gnomeapplet' पैकेज में हैं। वर्जनिंग सिस्टम हमेशा ऊपर और चल रहा है (मैं मुख्य रूप से बाज़ार का उपयोग करता हूं)। मेरे पास कोई अतिरिक्त सवाल नहीं है, अगर आपको कोई फर्क नहीं पड़ता है: क्या आप मुझे कुछ पॉइंटर दे सकते हैं कि अन्य डिस्ट्रोज़ के लिए अन्य डिस्ट्रोज़ के लिए पैकेजिंग कैसे करें (यदि यह संभव है तो)? धन्यवाद! – mac

+0

यह सैद्धांतिक रूप से संभव है, लेकिन मुझे "क्रॉस-पैक" पैकेज पर भरोसा नहीं होगा। मेरी राय में सबसे अच्छी बात यह है कि आप जिस वर्चुअल मशीन (यदि आपके पास उचित रूप से तेज़ सिस्टम है) या दोहरी बूट विभाजन (यदि आप नहीं करते हैं) पर उस पैकेज को स्थापित करना चाहते हैं जिसे आप पैकेज करना चाहते हैं। केवीएम ने मेरे लिए बॉक्स से बाहर काम किया। – ptomato