अलग-अलग डेस्कटॉप वातावरण के लिए अलग-अलग डिफ़ॉल्ट एप्लिकेशन सेट करना


9

मैं डिफ़ॉल्ट एकता इंटरफ़ेस के साथ Ubuntu 12.04 का उपयोग कर रहा हूं। मैंने बाद में KDE डेस्कटॉप, XFCE, LXDE, gnome-shell और Cinnamon स्थापित किया।

KDE यूनिटी की तुलना में विभिन्न डिफ़ॉल्ट अनुप्रयोगों के साथ आता है, जैसे कि

  • kwrite पाठ संपादन के लिए,
  • konsole वर्चुअल टर्मिनल के रूप में,
  • kfontview फ़ॉन्ट देखने और स्थापित करने के लिए,
  • dolphin जैसे फाइल ब्राउज़र आदि।

अन्य DE कुछ अन्य डिफ़ॉल्ट अनुप्रयोगों के साथ आते हैं।

समस्या तब पैदा होती है जब आप एक फाइल जैसे कि एक टेक्स्ट फाइल खोलना चाहते हैं, जिसके साथ दोनों को खोला जा सकता है geditऔर kwrite, मैं kwriteकेडीई और geditयूनिटी या ग्नोम पर उपयोग करना चाहता हूं । लेकिन, इस तरह सेट करने का कोई तरीका नहीं है। मैं केडीई और एकता दोनों में संबंधित सेटिंग्स को बदलकर पाठ फ़ाइल के लिए डिफ़ॉल्ट एप्लिकेशन सेट कर सकता हूं, लेकिन यह डीई के लिए डिफ़ॉल्ट हो जाता है।

उदाहरण के लिए, यदि मैं kfontviewerकेडीई में डिफ़ॉल्ट फ़ॉन्ट देखने के अनुप्रयोग के रूप में सेट करता हूं , तो यह फोंट को खोलता है जब मैं यूनिटी या ग्नोम में होता हूं और इसके विपरीत। यह एक समस्या है क्योंकि, अन्य DE के प्रोग्राम को लोड करने में उपयोग किए गए DE के लिए डिफ़ॉल्ट की तुलना में लंबा समय लगता है।

मेरा प्रश्न है: क्या मैं विभिन्न डीई के लिए अलग-अलग डिफ़ॉल्ट अनुप्रयोगों का उपयोग कर सकता हूं? कैसे?


जवाबों:


5

मैंने आपकी समस्या को हल करने के लिए इस समाधान को एक साथ रखा है, और इसे केडीई और एक्सएफसीई पर पाठ फ़ाइलों और फ़ॉन्ट फ़ाइलों को खोलने के साथ परीक्षण किया है। यह एक सामान्य समाधान है जो किसी भी डेस्कटॉप वातावरण और माइम प्रकार पर लागू होना चाहिए। जिस तरह से यह काम करता है वहां कस्टम-ओपन नामक एक सरल अजगर स्क्रिप्ट है जो विभिन्न डेस्कटॉप वातावरणों के लिए विभिन्न अनुप्रयोगों का उपयोग करके एक फ़ाइल खोलेगी। ये समाधान स्थापित करने के चरण हैं:

  1. अपने पथ पर अधिमानतः अपने कंप्यूटर पर कस्टम-ओपन स्क्रिप्ट को बचाएं, लेकिन ऐसा नहीं होना चाहिए।
  2. अपने .custom-open.ini को अपने होम डायरेक्टरी ~ / .custom-open.ini में सेव करें
  3. किसी भी फ़ाइल प्रकार के लिए डिफ़ॉल्ट अनुप्रयोग के रूप में कस्टम-ओपन सेट करें जिसे आप इसके द्वारा नियंत्रित करना चाहते हैं।

कस्टम खुला

#!/usr/bin/env python
import traceback, sys, os, ConfigParser, os.path
from subprocess import Popen, check_output
from gtk import MessageDialog, MESSAGE_ERROR, BUTTONS_CLOSE

try:
    file, desktop = sys.argv[1], os.environ['DESKTOP_SESSION']
    mime = check_output(['file', '--mime-type', file]).strip().split(': ')[1]
    config = ConfigParser.RawConfigParser()
    config.read(os.path.expanduser('~/.custom-open.ini'))
    cmd = config.get(desktop, mime)
    Popen([cmd] + sys.argv[1:])
except:
    msg = "CUSTOM OPEN ERROR\n\n" + traceback.format_exc()
    MessageDialog(None, 0, MESSAGE_ERROR, BUTTONS_CLOSE, msg).run()

.custom-open.ini

[gnome]
text/plain = gedit
application/x-font-ttf = gnome-font-viewer

[xubuntu]
text/plain = leafpad
application/x-font-ttf = gnome-font-viewer

[kde-plasma]
text/plain = kate
application/x-font-ttf = kfontview

तो इस समाधान के बारे में बहुत अच्छी बात यह है कि आप जितने चाहें उतने नए डेस्कटॉप वातावरण जोड़ सकते हैं और जितने चाहें उतने माइम टाइप कर सकते हैं। यह जांचने के लिए कि डेस्कटॉप वातावरण के लिए आपको क्या नाम प्रदान करना चाहिए, एक टर्मिनल में नीचे कमांड चलाएं।

env | grep -i DESKTOP_SESSION

बस चलाने के लिए एक फ़ाइल के सटीक माइम प्रकार की जाँच करने के लिए:

file --mime-type filename

संपादित करें: प्रतीकात्मक लिंक की आवश्यकता को हटा दिया गया है जिससे इसे उपयोग करना आसान हो जाए। मैंने एक ग्राफिकल एरर हैंडलर भी जोड़ा है जो एक त्रुटि होने पर अलर्ट लाएगा।


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

यहां बताया गया है कि मैंने स्क्रिप्ट को डिफ़ॉल्ट ऐप के रूप में कैसे परिभाषित किया: 1.) ~ / .local / शेयर / एप्लिकेशन के co.desktopसाथ एक लॉन्चर ( ) बनाएं Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-text। 2.) ./local/share/applications/mimeapps.listनिम्नलिखित डिफ़ॉल्ट एसोसिएशन को संपादित करें और जोड़ें text/plain=co.desktop:। इस प्रक्रिया में कोई ग़लती खोजें?
Glutanimate

1
ठीक है, नए संस्करण को आज़माएँ, मैंने कुछ संवर्द्धन किए हैं ताकि इसका उपयोग करना आसान हो सके। मैंने ग्राफिकल एरर हैंडलर भी जोड़ा है, इसलिए अब इसे एरर मैसेज के साथ अलर्ट पॉपअप करना चाहिए। यदि यह अभी भी काम नहीं करता है, तो फिर से कोशिश करें और त्रुटि संदेश को एक टिप्पणी में पोस्ट करें। आप यह भी उल्लेख कर सकते हैं कि उबंटू का कौन सा संस्करण और कौन सा डेस्कटॉप वातावरण आपने आज़माया।
मारवान अलसबाग

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

1
मुझे खेद है, लेकिन मैं ओपी नहीं हूं, मैंने केवल इनाम निर्धारित किया है। @ ऑलिव ट्विस्ट के जवाब के रूप में अपने प्रश्न को चिह्नित करना होगा।
Glutanimate

2

यदि आपको ऐसा करने का "सही" तरीका नहीं मिलता है, तो आप एक ब्रूट फोर्स विधि का उपयोग कर सकते हैं जैसे कि:

  1. एक डेस्कटॉप वातावरण में सभी चूक सेट करें
  2. cd $HOME;ls -Rlrt | lessयह पता लगाने के लिए कुछ करें कि क्या फाइलें अभी अपडेट की गई थीं - यानी जहां उन विकल्पों को सहेजा गया था
  3. प्रत्येक डेस्कटॉप वातावरण (बैकअप) के लिए उन फ़ाइलों की एक अलग प्रतिलिपि बनाएँ।
  4. प्रत्येक डेस्कटॉप वातावरण के लिए दोहराएँ
  5. उस डेस्कटॉप वातावरण पर स्विच करने से पहले उचित सेट कॉपी करें (संभवतः लॉग आउट करके और नए डेस्कटॉप वातावरण का चयन करके वापस लॉग इन करके)।

उम्मीद है, डेस्कटॉप वातावरण को शेल स्क्रिप्ट से स्विच करने का एक तरीका है जिसमें डेस्कटॉप वातावरण को यह बताने के विकल्प के साथ है कि इसे कहाँ से विन्यास फाइल प्राप्त करना है। हो सकता है कि यह हर समय फाइलों को घुमाने से ज्यादा साफ हो, लेकिन मैंने इस बात पर शोध नहीं किया है कि यह कैसे काम करता है।

एक और, बहुत सरल समाधान, लेकिन जैसा आपने पूछा, वैसा बिलकुल नहीं:

  1. प्रत्येक डेस्कटॉप वातावरण के लिए अलग उपयोगकर्ता खाते बनाएँ
  2. इन उपयोगकर्ताओं के लिए एक नया समूह बनाएं
  3. इन सभी उपयोगकर्ताओं को नए समूह में जोड़ें
  4. इन सभी उपयोगकर्ताओं -rwxrwxr-x ( chmod 775 list-of-files-and-directories) से एक्सेस करने के लिए आपको कोई भी सामान्य डेटा फ़ाइल बनानी होगी । इस तरह से आपको उन त्रुटियों को फ़ाइल में लिखने की कोशिश करने की अनुमति नहीं मिलेगी जो आपके "उपयोगकर्ता" में से किसी एक ने पहले लिखी थीं।

    • यदि आप चाहते हैं कि इन सभी उपयोगकर्ताओं के लिए कुछ फाइलें समान हों, तो आप उन्हें एक उपयोगकर्ता में बना सकते हैं और उन्हें बाकी लोगों के साथ जोड़ सकते हैं। यह काम करना चाहिए, लेकिन आपको यह याद रखना होगा कि जब आप उनमें से किसी को बदलते हैं तो वे उस तरह से सेट होते हैं। उदाहरण के लिए, यदि आप उनमें से किसी एक को संपादित करते हैं और आपका संपादक एक बैकअप फ़ाइल बनाता है, तो वह बैकअप फ़ाइल केवल वहीं सहेजी जाएगी जहाँ आपने उसे संपादित किया था, अन्य सभी उपयोगकर्ता खातों पर नहीं।

आप ध्यान दें कि प्रति उपयोगकर्ता फ़ाइल संघों को कहाँ संग्रहीत किया जाता है~/.local/share/mime/
रोबॉटहैंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.