2010-08-10 9 views
12

मेरे लिनक्स अनुप्रयोगों में से एक के लिए, मेरे पास एप्लिकेशन बाइनरी है, एक launcher.sh स्क्रिप्ट (LD_LIBRARY_PATH के लिए) और एक .desktop फ़ाइल, सभी एक ही फ़ोल्डर में हैं।मैं लिनक्स डेस्कटॉप एंट्री फ़ाइल के लिए एक रिलेटिव पथ के साथ आइकन कैसे निर्दिष्ट कर सकता हूं?

मैं आइकन के लिए एक पूर्ण पथ के बजाय एक सापेक्ष पथ का उपयोग करना चाहता हूं।

मैं कोशिश की है:

Icon=app.svg 
Icon=./app.svg 
Icon=$PWD/app.svg 
Icon=$(dirname %k)/app.svg 

लेकिन इन में से कोई भी काम (केवल Icon=/path/to/app.svg)। यदि कोई सापेक्ष पथ निर्दिष्ट करना संभव नहीं है और मुझे एक वर्कअराउंड का उपयोग करना चाहिए, तो मैं सोच रहा था कि जब भी launcher.sh स्क्रिप्ट चलती है तो मैं .desktop फ़ाइल में आइकन पथ को पुन: उत्पन्न कर सकता हूं।

ऐसा करने का सबसे अच्छा तरीका क्या होगा? sed या कुछ अन्य प्रतिस्थापन उपयोगिता का उपयोग छद्म-रेगेक्स के साथ Icon=([valid path chars]+)\n जैसा हो सकता है?

उत्तर

13

कुछ और शोध करने के बाद ऐसा लगता है कि डेस्कटॉप प्रविष्टि फ़ाइल में आइकन के लिए सापेक्ष पथ निर्दिष्ट करना संभव है, जहां तक ​​मैं देख सकता हूं।

वैकल्पिक हल मैं इस्तेमाल किया मेरी launcher.sh स्क्रिप्ट के अंत में निम्नलिखित कोड जोड़ने के लिए किया गया था:

mv myapp.desktop myapp.desktop-bak 
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop 
rm myapp.desktop-bak 

यह चिह्न हर बार लांचर स्क्रिप्ट चलाया जाता है के रास्ते अपडेट करेगा, और के बाद से .desktop फ़ाइल लॉन्चर स्क्रिप्ट पर इंगित करता है, .desktop फ़ाइल पर क्लिक करने से प्रभावी रूप से इसके आइकन को अपडेट किया जाता है।

मुझे पता है कि आप cat या उपरोक्त कोड को छोटा करने के लिए -i विकल्प का उपयोग कर सकते हैं, लेकिन मैंने पढ़ा है कि मैंने जो समाधान इस्तेमाल किया वह अधिक विश्वसनीय है। अगर किसी के पास उस पर और जानकारी है तो कृपया एक टिप्पणी पोस्ट करें।

+0

इसके लिए धन्यवाद ... फिर भी, यह एक चूसने वाला नमूना है। –

+0

निश्चित है ... मैं विश्वास नहीं कर सकता कि कोई भी सापेक्ष पथ समर्थन (स्पष्ट रूप से) जोड़ने का विचार नहीं करता है। –

+0

ठीक है, मैंने कहीं और पढ़ा है कि यह एक सुरक्षा चिंता थी: क्या होगा यदि आपने .desktop फ़ाइल को स्थानांतरित किया है, और आपने जो सोचा था उससे गलती से एक अलग निष्पादन योग्य खोला है ... और मुझे लगता है कि यह एक उचित बिंदु है। लेकिन फिर आइकन निर्दिष्ट करने के लिए एक और तरीका अच्छा रहा होगा। –

संबंधित मुद्दे

 संबंधित मुद्दे