प्रत्येक कार्यक्षेत्र पर विभिन्न आइकन के साथ एक अलग एकता लांचर कैसे प्राप्त करें?


20

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

  • कार्यक्षेत्र 1 - विज्ञान और गणित ऐप्स के लिए समर्पित
  • कार्यक्षेत्र 2 - संगीत उपकरण के लिए समर्पित
  • कार्यक्षेत्र 3 - इलेक्ट्रॉनिक सर्किट और सिमुलेशन के लिए
  • कार्यक्षेत्र 4 - वेब ब्राउज़िंग और सामान्य कंप्यूटिंग के लिए

एक एंड्रॉइड टैबलेट के बारे में सोचें जहां प्रत्येक स्क्रीन में अलग-अलग आइकन हो सकते हैं।

यह स्पष्ट होना चाहिए कि यह कैसे करना है, लेकिन मुझे कोई जवाब नहीं मिल रहा है। मैं उबंटू में 4 दिन का हूं, इसलिए कृपया यह न समझें कि मुझे पता है कि मैं क्या कर रहा हूं!


आप कार्यक्षेत्र प्रति लांचर माउस का एक अलग सेट मतलब है ? यम्मी मुझे पसंद है, लेकिन मुझे भागना होगा, कल को उस पर काम करना होगा अगर आपका मतलब है। कृपया मुझे बताओ।
बजे जैकब व्लिजम

हाँ, यह याकूब है। सर्किट सिमुलेशन के लिए विशिष्ट उपकरण (जैसे LTspice) हैं जिनकी संगीत के लिए कोई प्रासंगिकता नहीं है।
डेनिस जे

बिना शक के किया जा सकता है। शायद कल या सोंडे :)।
याकूब Vlijm

शुक्रिया जैकब। बस दिन की शुरुआत हो रही है, इसलिए मैं इसे आजमाऊंगा। यह बिल्कुल वैसा ही लगता है जैसा मैंने पूछा था !!! मैं इसमें जाऊंगा और वापस रिपोर्ट करूंगा।
डेनिस जे

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

जवाबों:


24

कार्यक्षेत्र प्रति भिन्न एकता लॉन्चर सेट करना:


1. यहाँ छवि विवरण दर्ज करें 2. यहाँ छवि विवरण दर्ज करें 3. यहाँ छवि विवरण दर्ज करें 4। यहाँ छवि विवरण दर्ज करें

नीचे दिए गए समाधान से कार्यक्षेत्र प्रति लॉन्चर आइकन का एक अलग सेट होना आसानी से संभव हो जाता है, चाहे आपके पास कितने भी कार्यस्थान हों।

सेटअप में दो भाग शामिल हैं:

  1. वर्तमान कार्यक्षेत्र के लिए लॉन्चर आइकन के सेट को "याद" करने के लिए ए (एक) शॉर्टकट कुंजी संयोजन।

  2. एक स्क्रिप्ट पृष्ठभूमि में चलने के लिए, जो वर्तमान कार्यक्षेत्र का ट्रैक रखता है और संबंधित एकता लांचर सेट करता है। यह तब कार्य करता है जब उपयोगकर्ता कार्यक्षेत्र को स्विच करता है।

यह काम किस प्रकार करता है

दो छोटी स्क्रिप्ट शामिल हैं:

पहले (गिने) कि आपकी होम निर्देशिका, नामित में एक (छुपा) फ़ाइल में वर्तमान लांचर की सामग्री लिखता है अपने वर्तमान कार्यक्षेत्र के बाद: स्क्रिप्ट एक साधारण बात नहीं करता है।

दूसरी स्क्रिप्ट इस बात पर नज़र रखती है कि वर्तमान कार्यक्षेत्र क्या है। यदि कोई कार्यक्षेत्र परिवर्तन है , तो स्क्रिप्ट देखता है कि क्या संबंधित (लॉन्चर-) डेटाफाइल मौजूद है (पहली स्क्रिप्ट द्वारा बनाई गई)। यदि ऐसा है, तो यह फ़ाइल को पढ़ता है और यूनिटी लॉन्चर को बदल देता है, जैसा कि फ़ाइल में याद किया गया है।

बस।

स्थापित कैसे करें

  1. स्क्रिप्ट wmctrlको स्थापित करने की आवश्यकता है:

    sudo apt-get install wmctrl
    
  2. एक निर्देशिका बनाएं जिसमें दोनों लिपियों को संग्रहीत किया जाएगा। यह महत्वपूर्ण है कि दोनों स्क्रिप्ट को एक निर्देशिका में एक साथ रखा जाता है, क्योंकि वे कार्यक्षमता और दूसरे से एक आयात साझा करते हैं। उसी कारण से, यह महत्वपूर्ण है कि आप उन्हें नीचे दिए गए संकेत के अनुसार नाम दें।

  3. नीचे दी गई प्रत्येक स्क्रिप्ट को एक (अलग) खाली फ़ाइल में कॉपी करें, उन्हें निर्देशिका में बनाया (बनाया 2.), बिल्कुल नाम:

    set_workspace.py

    #!/usr/bin/env python3
    import subprocess    
    import os
    
    workspace_data = os.environ["HOME"]+"/.launcher_data_"
    key = ["gsettings get ", "gsettings set ", "com.canonical.Unity.Launcher favorites"]
    
    def get_res():
        # get resolution
        xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
        pos = xr.index("current")
        return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
    
    def current():
        # get the current viewport
        res = get_res()
        vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
        dt = [int(n) for n in vp_data[3].split("x")]
        cols = int(dt[0]/res[0])
        curr_vpdata = [int(n) for n in vp_data[5].split(",")]
        curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
        return str(curr_col+curr_row*cols)
    
    def remember_current():  
        currlauncher = subprocess.check_output(["/bin/bash", "-c", key[0]+key[2]]).decode("utf-8").strip()
        f = workspace_data+current()
        open(f, "w").write(currlauncher)
    
    if __name__ == "__main__":
        remember_current()

    launcher_perworkspace.py

    #!/usr/bin/env python3
    import subprocess
    import set_workspace
    import time
    
    workspace_data = set_workspace.workspace_data
    key = set_workspace.key
    
    def check_datafile(desktop):
        f = workspace_data+str(desktop)
        try:
            new_launcher = open(f).read()
            command = key[1]+key[2]+' "'+str(new_launcher)+'"'
            subprocess.Popen(["/bin/bash", "-c", command])
        except FileNotFoundError:
            pass
    
    curr_dt1 = set_workspace.current()
    check_datafile(curr_dt1)
    
    while True:
        time.sleep(1)
        curr_dt2 = set_workspace.current()
        if curr_dt2 != curr_dt1:
            check_datafile(curr_dt2)
        curr_dt1 = curr_dt2
  4. set_workspace.pyअपनी पसंद के शॉर्टकट कुंजी संयोजन में पहली स्क्रिप्ट ( ) जोड़ें : सिस्टम सेटिंग्स> "कीबोर्ड"> "शॉर्टकट"> "कस्टम शॉर्टकट"। "+" पर क्लिक करें और कमांड जोड़ें:

    python3 /path/to/set_workspace.py
    
  5. कुंजी संयोजन को चलाएं और देखें कि क्या फ़ाइल, जैसे: .launcher_data_3आपके होम डायरेक्टरी में बनाई गई है। आपको फ़ाइल को दृश्यमान बनाने के लिए Ctrl+ प्रेस करने की आवश्यकता होगी H(फाइलें, .डिफ़ॉल्ट रूप से अदृश्य हैं)।

    अपने कार्यक्षेत्र के माध्यम से नेविगेट करें और प्रक्रिया को दोहराएं: लॉन्चर आइकन का एक संयोजन सेट करें, और उस विशिष्ट कार्यक्षेत्र के लिए सेट को "याद" करने के लिए अपने प्रमुख संयोजन को दबाएं।

  6. आप व्यावहारिक रूप से अब कर रहे हैं। कमांड के साथ पृष्ठभूमि स्क्रिप्ट का परीक्षण करें (टर्मिनल विंडो से, इसे चालू रखें):

    python3 /path/to/launcher_perworkspace.py
    

    यदि सभी ठीक काम करता है, और आपका लांचर प्रति कार्यस्थान पर स्विच करता है, तो निम्न कमांड को अपने स्टार्टअप एप्लिकेशन में जोड़ें: डैश> स्टार्टअप एप्लिकेशन> अपडेट:

    /bin/bash -c "sleep 15&&python3 /path/to/launcher_perworkspace.py"
    

टिप्पणियाँ

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

संपादित करें

आपकी टिप्पणी से, मैं समझता हूं कि आप स्क्रिप्ट चलाने के लिए अनिश्चित हैं और आपको डर है कि आप अपने वर्तमान लांचर को गड़बड़ कर देंगे।

मुझे पूरा यकीन है कि स्क्रिप्ट जो कर रही है उसके लिए बहुत ज्यादा (या बहुत कम :)) सम्मान है। हालाँकि, आप केवल कमांड के साथ वर्तमान यूनिटी लॉन्चर का बैकअप ले सकते हैं:

printf 'gsettings set com.canonical.Unity.Launcher favorites "' > ~/launcher_output&&printf "$(gsettings get com.canonical.Unity.Launcher favorites)">>~/launcher_output&&printf '"'>>~/launcher_output

यह एक फाइल बनाएगा ~/launcher_output, जिसमें आपके यूनिटी लॉन्चर को शुरुआती स्थिति में लाने के लिए पूरी कमांड होगी। आपातकाल के मामले में, बस फ़ाइल की सामग्री की प्रतिलिपि बनाएँ और इसे टर्मिनल में पेस्ट करें।

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


महत्वपूर्ण संस्करण (2)

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

मैंने इसे स्क्रिप्ट के "संस्करण 1" में आज़माया था, लेकिन हमेशा दो कार्यक्षेत्र-चेकों के बीच दो लॉन्चर-चेकों को "एम्बेड" किया जाता है ताकि कार्यक्षेत्रों के माध्यम से तेज़ी से आगे बढ़ने पर अवांछित व्यवहार (गलत डेटा को सहेजने) को रोकने की चाल हो।

कैसे इस्तेमाल करे

  1. पहले संस्करण की तरह, यह स्क्रिप्ट उपयोग करती है wmctrl:

    sudo apt-get install wmctrl

  2. एक खाली फ़ाइल में स्क्रिप्ट की प्रतिलिपि बनाएँ, इसे सहेजें launcher_toworkspace.py

  3. इसे कमांड से चलाएँ:

    python3 /path/to/launcher_toworkspace.py
    
  4. यदि यह अपेक्षा के अनुरूप काम करता है, तो निम्न आदेश अपने स्टार्टअप अनुप्रयोगों में जोड़ें:

    /bin/bash -c "sleep 15&&python3 /path/to/launcher_toworkspace.py"
    

लिपी

#!/usr/bin/env python3
import subprocess    
import os
import time

datadir = os.environ["HOME"]+"/.config/lswitcher"
if not os.path.exists(datadir):
    os.makedirs(datadir)
workspace_data = datadir+"/launcher_data_"

key = [
    "gsettings get ",
    "gsettings set ",
    "com.canonical.Unity.Launcher favorites",
    ]

def get_launcher():
    return subprocess.check_output(
        ["/bin/bash", "-c", key[0]+key[2]]
        ).decode("utf-8").strip()

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

def current():
    # get the current viewport
    res = get_res()
    vp_data = subprocess.check_output(
        ["wmctrl", "-d"]
        ).decode("utf-8").split()
    dt = [int(n) for n in vp_data[3].split("x")]
    cols = int(dt[0]/res[0])
    curr_vpdata = [int(n) for n in vp_data[5].split(",")]
    curr_col = int(curr_vpdata[0]/res[0])+1
    curr_row = int(curr_vpdata[1]/res[1])
    return str(curr_col+curr_row*cols)

curr_ws1 = current()
currlauncher1 = get_launcher()

while True:
    time.sleep(1)
    currlauncher2 = get_launcher()
    curr_ws2 = current()
    datafile = workspace_data+curr_ws2
    if curr_ws2 == curr_ws1:
        if currlauncher2 != currlauncher1:
            open(datafile, "wt").write(currlauncher2)
    else:
        if not os.path.exists(datafile):
            open(datafile, "wt").write(currlauncher2)
        else:
            curr_set = open(datafile).read()
            command = key[1]+key[2]+' "'+str(curr_set)+'"'
            subprocess.Popen(["/bin/bash", "-c", command])
    curr_ws1 = curr_ws2
    currlauncher1 = get_launcher()

ध्यान दें

यदि आप स्क्रिप्ट के पिछले संस्करण के साथ अपने कार्यस्थान सेट करते हैं, तो उन्हें इस संस्करण के लिए भी काम करना चाहिए।

पीपीए

2015-04-23 के अनुसार, डेनिस जे का अच्छा प्रश्न, और पार्टो के प्रोत्साहन ppaने स्क्रिप्ट को बनाने के लिए नेतृत्व किया है , जो इसे प्रबंधित करने के लिए GUI सहित webupd8 पर कवर किया गया है।

ppa:vlijm/lswitcher

इसे स्थापित करने के लिए, चलाएं:

sudo add-apt-repository ppa:vlijm/lswitcher
sudo apt-get update
sudo apt-get install lswitcher

यहाँ छवि विवरण दर्ज करें

अब से, यह ट्रस्टी और यूटोपिक के लिए पैक किया गया है। मैं परीक्षण के बाद दूसरों को जोड़ूंगा। मैं एक .debइंस्टॉलर भी जोड़ूंगा, लेकिन मैं सुझाव दूंगा कि ppaआमतौर पर इस तरह की चीजों को हर बार अपडेट किया जाता है।

चूंकि व्यूपोर्ट डेटा का स्थान इससे बदल गया ~/है ~/.config/lswitcher, इसलिए यदि आपने पिछली स्क्रिप्ट का उपयोग किया है, तो आपको अपना यूनिटी लॉन्चर फिर से सेट करना होगा।


क्या यह कीबोर्ड शॉर्टकट का उपयोग किए बिना संभव है? मैं इसकी कल्पना कैसे करता हूं, यह नीचे दिया गया है: जब कार्यक्षेत्र एक में, केवल माउस का एक सेट दिखाया गया है; जब मैं कार्यक्षेत्र दो पर जाता हूं, तो डैश और ट्रैश आइकनों को छोड़कर लॉन्चर खाली हो जाता है - फिर मैं उन आइकनों को जोड़ देता हूं जिन्हें मैं चाहता हूं जो अपने आप सहेजे जाते हैं। अन्य कार्यस्थानों के लिए दोहराएं। हो सकता है कि आप इसके लिए एक GUI भी बना सकते हैं - यदि आप इसे काम करते हैं तो आपको +500 देंगे। GUI वैकल्पिक है।
पार्टो

1
@ फोटो वाह, आप जानते हैं कि किसी का ध्यान कैसे जाना है :) यह सुनिश्चित करने के लिए संभव है, लेकिन इसे सुचारू रूप से काम करने के लिए कई धागे लगेंगे (इसे "मोनो" ट्रैक स्क्रिप्ट में आज़माया गया है)। अगले कुछ दिनों में उत्तर की उम्मीद करें :)।
जैकब व्लिजम

1
बहुत बढ़िया। मैं इंतज़ार कर रहा हूँ ... अच्छा सवाल है, आश्चर्य है कि मैं उस के बारे में कैसे नहीं सोचा था।
पार्टो

1
@Parto मुझे कहना होगा कि मैं आपकी उदारता से प्रभावित हूं। मैं इस पर आगे काम करने की योजना बना रहा हूं और शायद एक बनाने के लिए ppa, जिसमें जीयूआई शुरू / बंद करना, प्राथमिकताएं आदि शामिल हैं! आपका डेस्कटॉप बहुत अच्छा लग रहा है!
याकूब Vlijm

1
किसी भी समय। हर किसी को अब एक धक्का चाहिए। इसके अलावा आपने इससे पहले भी मेरी मदद की है - बस इसे एक धन्यवाद मानें। इस 'प्रोजेक्ट' के बारे में, एक ppa अच्छा होगा क्योंकि हर कोई तकनीकी नहीं है।
पार्टो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.