क्या मैं एक अलग जीटीके 3 विषय को मुख्य एक से एक व्यक्तिगत आवेदन पर लागू कर सकता हूं?


46

उदाहरण के लिए, क्या मैं मुख्य विषय के रूप में एमिट्स को रख सकता हूं लेकिन प्राथमिक ऐप को प्राथमिक विषय असाइन कर सकता हूं?


8
Gtk2 के बारे में करारा जवाब, मैं Gtk3 के बारे में पूछ रहा हूँ।
नियॉनबॉय

मैंने प्रश्न को बेहतर ढंग से संपादित किया कि आप क्या चाहते हैं। क्षमा करें, लेकिन मेरे शोध का संक्षिप्त उत्तर नहीं है , आप @Kush के अनुसार एक नया "हाइब्रिड" थीम बनाने के लिए कुछ प्रयास किए बिना नहीं रह सकते हैं :( यह किसी भी अधिक GTK2 के रूप में सरल नहीं है।
ish

जवाबों:


32

आप GTK_THEME=elementaryप्रारंभिक विषय के साथ एक ऐप लॉन्च करने के लिए GTK पर्यावरण चर का उपयोग कर सकते हैं । उदाहरण के लिए, रनिंग GTK_THEME=elementary pantheon-filesप्रारंभिक जीटीके थीम का उपयोग करके प्रारंभिक फ़ाइलें ऐप लॉन्च करेगा।

हर बार जब आप एक विशिष्ट ऐप लॉन्च करते हैं, तो इसे लागू करने के लिए, आपका सबसे अच्छा विकल्प एक कस्टम .desktop फ़ाइल (लॉन्चर) बनाने की संभावना है।

एक कस्टम .desktop फ़ाइल बनाएँ

  1. अपना फ़ाइल ब्राउज़र खोलें
  2. पर जाए /usr/share/applications/
  3. प्रारंभिक थीम के साथ लॉन्च करने वाले ऐप के लिए लॉन्चर (हाइलाइट और Ctrl + C) की प्रतिलिपि बनाएँ
  4. ~/.local/share/applications/लॉन्चर पर जाएं और पेस्ट करें (Ctrl + V)
  5. लॉन्चर को टेक्स्ट एडिटर से राइट-क्लिक करें और खोलें
  6. Exec=शामिल करने के लिए Exec=env GTK_THEME=elementaryऔर फिर लाइन के पिछले मौजूदा सामग्री के साथ शुरू होने वाली रेखा को संशोधित करें । (तो Exec=pantheon-filesबन जाएगा Exec=env GTK_THEME=elementary pantheon-files)
  7. फ़ाइल को सहेजें और बंद करें

अगली बार जब आप यूनिटी (या अपनी पसंद का ऐप लॉन्चर) से ऐप लॉन्च करेंगे तो यह प्राथमिक विषय का उपयोग करेगा।

बोनस: कमांड लाइन का उपयोग करते समय इसे काम करें

आप यह भी चाहते हैं कि ऐप को कमांड लाइन से लॉन्च करते समय प्राथमिक विषय के साथ लॉन्च किया जा सके। ऐसा करने के लिए:

  1. अपना टर्मिनल ऐप खोलें
  2. टाइप करें alias pantheon-files="GTK_THEME=elementary pantheon-files"( pantheon-filesवांछित एप्लिकेशन के साथ प्रतिस्थापित )
  3. एंटर दबाए

चेतावनियां:

  1. यह आपके विंडो मैनेजर की थीम को प्राथमिक थीम में नहीं बदलेगा।
  2. यह (डिज़ाइन द्वारा) केवल आपके खाते पर लागू होगा, रूट या मशीन पर किसी और के लिए नहीं।
  3. थीम नाम cAsE-sEnsItiVe हैं और इन्हें थीम फ़ोल्डर नाम से मिलान किया जाना चाहिए।

सूत्रों का कहना है:

  1. मैं एक प्राथमिक योगदानकर्ता हूं;)
  2. जीटीके + 3 संदर्भ मैनुअल: जीटीके + एप्लीकेशन चलाना
  3. चर को .desktop फ़ाइल में सेट करें

अच्छा उत्तर लेकिन मुझे यह किसी भी विषय के लिए काम करने के लिए नहीं मिल सकता है। क्या आप टर्मिनल का उपयोग करके, find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'और geditप्रदर्शन उद्देश्यों के लिए एक उदाहरण दे सकते हैं ? जैसे GTK_THEME="HighContrast" geditया env GTK_THEME="HighContrast" geditया GTK_THEME=Adwaita:dark gedit... कुछ भी नहीं।
Redsandro

मैंने बस इसे बदल दिया /usr/share/applications/<appname>.desktopऔर यह मेरे लिए काम कर गया।
ड्रिप चापिन

ऐप के अंदर कोड से ऐसा करने का कोई तरीका?
15:20 बजे एनी-मौसे

1
यह ध्यान देने योग्य है कि थीम नाम संवेदनशील हैं।
सेड्रिक रीचेंबेक

यह कुछ ऐप्स के लिए काम करता है लेकिन सभी के लिए नहीं।

10

सवाल अभी भी वैध है और मुझे एक रास्ता मिल गया है:

  • कोई भी फ़ोल्डर बनाएँ path/to/MY_FOLDER
  • /share/themes/इसके अंदर एक फ़ोल्डर बनाएं (वह है path/to/MY_FOLDER/share/themes)।
  • बाद के अंदर कोई भी GTK3 विषय रखें
  • CURRENTLY ACTIVE THEME के नाम के लिए विषय का नाम बदलें

    अंत में, यह कमांड वर्तमान में सक्रिय एक के बजाय एक ऐप का उपयोग करके नामांकित थीम का उपयोग करेगा:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(पथ के बाद GTK_DATA_PREFIX=हो गया है कि ( और केवल यह है कि ) उस फ़ोल्डर में शामिल /share/themes/RENAMED_THEME । यही कारण है कि यह है कि के नहीं path/to/MY_FOLDER/share/themes/RENAMED_THEME , लेकिन सिर्फ path/to/MY_FOLDER।)

एक लांचर के अंदर, उसके अनुसार प्रतिस्थापित करें:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'

1
अब यह वास्तव में ग्रहण के साथ भी काम करता है, अन्य उत्तरों के विपरीत मैंने कोशिश की।
रुस्लान

2
जो फ़ाइल / फ़ोल्डर वास्तव में उपयोग करने के लिए हम बात करते हैं GTK_DATA_PREFIX?
रनड्रोसन

1
यह बल्कि भ्रमित करने वाला था, लेकिन मैंने इसे समझ लिया है और उत्तर को संपादित कर दिया है।

दूसरा तरीका ऐप-विशिष्ट नामांकित विषय को ~/.themes(वर्तमान सक्रिय होना है /usr/share/themes) में रखना है और फिर GTK_DATA_PREFIX=path/to/nowhere उस ऐप को लॉन्च करने के लिए कुछ पथ का उपयोग करना है, जो ऐप थीम को वर्तमान में रीसेट कर देगा, केवल इसे पहले देखेंगे ~/.themesऔर ले जाएं वहाँ एक ही नाम के साथ एक।

1
@runDOSrun - पथ के बाद GTK_DATA_PREFIX=है होना करने के लिए है कि ( और केवल यह है कि उस फ़ोल्डर में) शामिल हैं /share/themes/RENAMED_THEME । इसलिए यह नहीं है FOLDER/share/themes/RENAMED_THEME , लेकिन बस FOLDER

8

यह निश्चित रूप से संभव है, मेरे पास बहुत अधिक थीमिंग अनुभव नहीं है, लेकिन जब आप /usr/share/themes/*Theme Name*/gtk-3.0/apps/निर्देशिका में नेविगेट करते हैं, तो आपको .cssफाइलें मिलेंगी, जिनका नाम उन एप्लिकेशन के साथ होगा जो वे थीम पर लक्षित करते हैं, इसलिए हां आप ऐप-विशिष्ट थीम बना सकते हैं।

ध्यान दें कि आपने अपने ऐप्स को थीम के लिए जिस तरह का उल्लेख किया है, उसके लिए कुछ काम करने की आवश्यकता हो सकती है (जैसे कि एंबियंस और एलीमेंट्री दोनों काम एक साथ करना, क्योंकि हर थीम में आधार फ़ाइल होती है, जिसके ऊपर ऐप विशिष्ट स्टाइलिंग की जाती है, gtkrcऔर Gtk 2.0 में एक फ़ाइल । जबकि, Gtk3.0 केgtk.css मामले में एक फ़ाइल )।

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

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

एक तरीका यह है कि आप इसे अपने आप से कर सकते हैं, बेस थीम फ़ाइल ( gtk.css) में केवल आवश्यक नियम हैं जो किसी भी विषय के लिए तटस्थ हैं, अंधेरे या हल्के हैं। और वास्तविक विषय डिज़ाइन ऐप-विशिष्ट फ़ाइलों में लिखा गया है जो उपर्युक्त निर्देशिका में रहते हैं, अर्थात नॉटिलस स्टाइल के लिए, आप nautilus.cssफ़ाइल में सभी आवश्यक गुण लिख सकते हैं । हर उस ऐप के साथ जिसे आप टारगेट करना चाहते हैं। जाहिर है, ऐसा करने के लिए कुछ अच्छे Gtk थीम अनुभव की आवश्यकता होती है।

आप उल्लेख कर सकते हैं इस टेम्पलेट का उपयोग कर खुद अपनी थीम बनाने के लिए, इसके अलावा एक सभ्य वहाँ प्रलेखन जीटीके + themeing पर।


7
मैं एक नया विषय नहीं बनाना चाहता, मैं एक मौजूदा एक असाइन करना चाहता हूं।
नीयनबॉय

@neonboy: जैसा कि मैंने कहा कि GTK3 के साथ, यह उतना आसान नहीं है, एक विषय कई फ़ाइलों में वितरित किया जाता है, और अगर निर्भरता संतुष्ट नहीं हैं, तो टूटी हुई थीम आपको मिल जाएगी। इसलिए मैंने वह उत्तर पोस्ट किया है जो जीटीके 3 के साथ संभव समाधान दिखाता है, न कि जीटीके 2 (जिसमें ऐसा करना काफी आसान है)।
कुशाल

5

हां, सरल तरीका यह है कि आवेदन को उस आवश्यक पथ पर इंगित करें जहां आपकी आरसी फाइल रहती है, आपके एप्लिकेशन को चलाने वाली कमांड में:

GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc inkscape

यह 12.04 onkscape के लिए (जो अभी भी Gnome2 btw है) इसका उत्पादन करता है:

विंडोज़ विषय के साथ इंकस्केप विंडो

Gtk2 विषय के बारे में अधिक जानकारी यहाँ देखें


7
प्रश्न Gtk3 के बारे में है Gtk2 नहीं, धन्यवाद।
नीयनबॉय

आपने अपने मूल प्रश्न में यह निर्दिष्ट नहीं किया है। कृपया प्रश्नकर्ताओं का कोई विरोध न करें।
मार्टिन ओवेन्स -डोक्टोर्मो-

5
मूल रूप से यह "क्या मैं अलग-अलग ऐप्स के लिए अलग-अलग GTK3 विषयों का उपयोग कर सकता हूं?" विच के पास अभी भी Gtk3 विषय था, फिर फॉस फ्रीडम ने मुझे गैर-मान्य उत्तरों पर टिप्पणी करने और प्रश्न को संपादित करने के लिए कहा, यदि यह आवश्यक था, तो मैं किसी के भी खिलाफ नहीं हूं।
नीयनबॉय

1

हाँ, आप कर सकते हैं, वास्तव में मैं googled और कुछ जवाब मिला:

  1. उस प्रोग्राम के लिए सटीक निष्पादन योग्य देखें जिसे आप थीम बदलना चाहते हैं। उदाहरण के लिए, यदि आप इसे ऑफीस के लिए चाहते हैं तो which oofficeटर्मिनल में टाइप करें।
  2. बिन फ़ोल्डर के लिए देखें जहां सभी एप्लिकेशन अपने द्विआधारी निष्पादन योग्य डालते हैं। echo $PATHटर्मिनल में टाइप करें और आप पथ को जियेंगे। मैं आपको टाइप करके अपने घर निर्देशिका में एक बिन फ़ोल्डर बनाने की सलाह देता हूंmkdir ~/bin
  3. gedit ~/.bashrcअपनी bash rc फाइल को खोलने के लिए टाइप करें।
  4. इस फाइल के नीचे जाएं और इस लाइन को जोड़ें export PATH=~/bin:${PATH}

अब हम एक स्क्रिप्ट बनाएंगे जो कस्टम थीम के साथ आपके प्रोग्राम को निष्पादित करेगी:

  1. टाइप करके एप्लिकेशन की स्क्रिप्ट फ़ाइल बनाएं: gedit ~/bin/ooffice
  2. खोली गई फ़ाइल में इन पंक्तियों को टाइप करें:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. टाइप करके फाइल के मोड को एक्जीक्यूटेबल में बदलें chmod +x ~/bin/ooffice:।

आशा है कि यह मदद करता है, आपको केवल एक चीज को याद रखना होगा, स्क्रिप्ट का प्रारूप जैसा कि नीचे दिखाया गया है:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"

GTK2_RC_FILES env का उपयोग कर GTK2 ऐप्स के लिए यह निश्चित रूप से संभव है। चर। साथ ही, आप किन थीमों को संकलित करने की बात कर रहे हैं? सवाल उबंटू में उपलब्ध जीटीके थीम के बारे में है।
ईश

1
मेरा मानना ​​है कि जिस विधि का आपने लक्ष्य Gtk2.0 का उल्लेख किया है, जबकि Ubuntu 12.04 थीम्स के लिए Gtk3.0 का उपयोग करता है, इसलिए यदि यह काम नहीं करता है।
कुशाल

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