मैं विंडो टाइटल को स्थायी रूप से कैसे बदल सकता हूँ?


17

विंडो शीर्षक बनाने में कौन सी फाइलें शामिल हैं? उदाहरण के लिए, यदि आप रिदमबॉक्स खोलते हैं, तो आप प्रोग्राम का नाम विंडो शीर्षक के रूप में देखते हैं। लेकिन यह .desktopफ़ाइल द्वारा जनरेट नहीं किया गया है। किसी एप्लिकेशन के शीर्षक में पाठ जोड़ने के लिए मुझे कौन सी फ़ाइल (फाइलों) को संपादित करने की आवश्यकता है? मैं चाहता हूं कि परिवर्तन स्थायी हों

मैं गनोम 3.16 के साथ उबंटू GNOME 15.04 का उपयोग करता हूं।


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

1
मैं आपकी राय को समझता हूं और मैं निश्चित रूप से भविष्य के सवालों के साथ करूंगा क्योंकि मैं देख सकता हूं कि यह लोगों के लिए काफी भ्रामक हो सकता है। मैं निश्चित रूप से धागे में आपके योगदान को कम नहीं समझता हूं, जो स्पष्ट है। मैं चाहता था कि शीर्षक अधिक विशिष्ट हो क्योंकि मूल शीर्षक वास्तव में मेरे वास्तविक प्रश्न को कवर नहीं करता था और इस थ्रेड के साथ मेरा लक्ष्य क्या था, इस बारे में थोड़ी अनिश्चितता जताई। आपकी सहायताके लिए धन्यवाद! :)
मौड कोन

जवाबों:


21

प्रारंभिक नाम आमतौर पर आवेदन के भीतर (कोड के भीतर) द्वारा निर्धारित किया जाता है। हालाँकि आप इसे बदल सकते हैं, जैसे कि उपयोग करके xdotool, जिसे आपको पहले स्थापित करना होगा:

sudo apt-get install xdotool

फिर, इसे स्थापित करने के बाद, आप कमांड द्वारा (जैसे) एक और विंडो नाम सेट कर सकते हैं:

xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"

यह बदल जाएगा:

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

में:

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

ध्यान दें

जैसा कि आप देख सकते हैं, कमांड मौजूद है:

xdotool search --name "<current_name>" set_window --name "<new_name>"

<current_name>बिल्कुल मेल खाना चाहिए।


वैकल्पिक रूप से संपादित करें

आपकी टिप्पणी से, मैं समझता हूं कि ऊपर की कमांड ने काम नहीं किया। मैंने इसे विभिन्न अनुप्रयोगों के साथ परीक्षण किया, और इसने काम किया ...

लेकिन एक कारण के लिए मुझे समझ में नहीं आता, साथ नहीं Rhytmbox(!! एक बग हो सकता है)

एक विकल्प का उपयोग करना है wmctrl, जिसे आपको भी स्थापित करना होगा:

sudo apt-get install wmctrl

फिर कमांड का उपयोग करें:

xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"

मैंने सफलतापूर्वक इसका परीक्षण किया Rhythmbox:

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

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

परिवर्तन स्थायी करें?

जैसा कि उल्लेख किया गया है, डिफ़ॉल्ट विंडो नाम को एप्लिकेशन के कोड में परिभाषित किया गया है।

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


EDIT 2

एकल फ़ाइल से प्रति एप्लिकेशन कस्टम विंडो नामों को लचीले ढंग से प्रबंधित / सेट करें

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

नीचे दिए गए सेटअप में, आप बहुत आसानी से प्रति एप्लिकेशन आधार पर परिभाषित कर सकते हैं कि नई विंडो का नाम कैसे है। बस ~(आपके घर निर्देशिका), नाम में एक फ़ाइल बनाएँ window_names.txt। जिन अनुप्रयोगों के लिए आप एक विशिष्ट पवनचक्की सेट करना चाहते हैं, उनके लिए, बाद में, आवेदन और वांछित विंडो नाम की एक पंक्ति जोड़ें:

एक टेक्स्टफाइल, प्रति एप्लिकेशन विंडो नाम निर्धारित करना

gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts

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

व्याख्या

सेटअप एक साधारण पृष्ठभूमि स्क्रिप्ट से मौजूद है। स्क्रिप्ट बहुत हल्की है, इसलिए इसका प्रदर्शन पर कोई ध्यान देने योग्य प्रभाव नहीं पड़ेगा।

स्क्रिप्ट शुरू होने के बाद, यह फ़ाइल को पढ़ता है ~/window_names.txtऔर प्रति एप्लिकेशन सेटिंग्स लोड करता है। फिर यह नव निर्मित खिड़कियों पर नजर रखता है । यदि एक विंडो दिखाई देती है जो कि किसी एक एप्लिकेशन से संबंधित है, तो फ़ाइल में निश्चित रूप से, यह विंडो नाम को तदनुसार सेट करता है।

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

  1. स्क्रिप्ट दोनों का उपयोग करती है wmctrlऔर xdotool:

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. एक खाली फ़ाइल में स्क्रिप्ट को कॉपी करें इसे इस रूप में सहेजें setwindowname.py

  3. फ़ाइल बनाएँ ~/window_names.txt(बिल्कुल नाम window_names.txt), प्रारूप में अपने आवेदन जोड़ें:

    <application> <window_name>
    

    जैसे

    gedit Text editor
    

    विंडो नाम में स्थान शामिल हो सकते हैं।

  4. टर्मिनल से स्क्रिप्ट को कमांड द्वारा टेस्ट-रन करें:

    python3 /path/to/setwindowname.py
    
  5. यदि सभी अपेक्षा के अनुरूप काम करते हैं, तो इसे स्टार्टअप एप्लिकेशन में जोड़ें: डैश> स्टार्टअप एप्लिकेशन> जोड़ें

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

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

लिपी

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

f = os.environ["HOME"]+"/"+"window_names.txt"

change = []
lines = open(f).read().splitlines()
for l in lines:
    try:
        change.append([l.split()[0], (" ").join(l.split()[1:])])
    except IndexError:
        pass

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = []

while True:
    try:
        curr_2 = get(["wmctrl", "-lp"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]
        for item in new:
            line = item.split(); pid = line[2]
            procs = get(["ps", "-e"]).splitlines()
            match = [l for l in procs if pid in l][0]
            for app in [app for app in change if app[0] in match]:
                subprocess.Popen(["xdotool", "set_window", "--name", app[1], line[0]])
        curr_1 = curr_2
        time.sleep(0.3)
    except:
        pass

टिप्पणियाँ

  • यदि फ़ाइल ~/window_names.txtसंपादित की जाती है, तो स्क्रिप्ट को फिर से शुरू करना होगा।
  • इससे कोई फर्क नहीं पड़ता कि कोई एप्लिकेशन कैसे शुरू किया जाता है; यह तब भी काम करता है जब टर्मिनल / और या से एप्लिकेशन चलाए जाते हैं sudo
  • यह किसी भी एप्लिकेशन के राइट-क्लिक विकल्प के साथ हस्तक्षेप नहीं करता है ।
  • स्क्रिप्ट भी विंडो नाम को "बनाए रखता है"; यदि कोई अन्य प्रक्रिया बाद में विंडो का नाम बदलती है (टैब को खोलती है, तो डायरेक्टरी बदलें जैसे) स्क्रिप्ट विंडो को "नई विंडो" के रूप में देखती है और आपकी पसंद का विंडो नाम बनाए रखती है।

मुझे खेद है, यह मेरे काम नहीं आया।
मौड कोन

xdotool search --name "Rhythmbox" set_window --name "Music" मैंने एप्लिकेशन को ओपन, क्लोज्ड के साथ कमांड किया और यह जांचने के लिए कि क्या काम किया है, यह जांचने के लिए एक रिस्टार्ट (alt + f2 + r) किया, लेकिन यह अभी भी उसी विंडो टाइटल को दिखाता है।
मौद कोन

वाह! इस बार मैं वास्तव में प्रभावित हूँ! मैं इसे सुबह पहली कोशिश करूँगा। मुझे कहना होगा, यह बहुत ही अच्छा लग रहा है :) आपकी कड़ी मेहनत और इस पोस्ट करने के लिए धन्यवाद, जैकब!
मौद कोन

जैसा आपने कहा मैंने स्क्रिप्ट की कोशिश की, लेकिन यह काम नहीं करता है। क्या यह संभव है कि यह गनोम 3.16 के साथ काम नहीं करेगा या यह मेरे सेटअप में कुछ होना चाहिए? मैं इसके साथ हैरान हूँ और उम्मीद है कि यह मेरे सिस्टम पर काम करेगा। अगर मुझे इसका कारण पता चलता है कि यह अभी तक क्यों काम नहीं करता है, तो मैं आपको ASAP में वापस लाऊंगा।
मौद कोन

1
@MaudKon आपने सेटिंग फ़ाइल को संपादित कर लिया होगा, और अनजाने में एक या अधिक श्वेत रेखाएँ जोड़ दी होंगी, शायद अंत में। मैंने उसके लिए स्क्रिप्ट को "प्रतिरक्षित" किया। आप जितनी चाहें
उतनी व्हाइटलाइन का

9

शीर्षक एप्लिकेशन द्वारा निष्पादित किया जाता है और इसे संपादित करने का एक आसान तरीका नहीं है।


एक बार खुलने के बाद एप्लिकेशन का शीर्षक बदलना:

  • के xdotoolसाथ स्थापित करेंsudo apt-get install xdotool
  • pgrep myapp(यानी pgrep rythmbox) के साथ आवेदन की पिड प्राप्त करें
  • विंडो शीर्षक बदलें ( HERE_THE_PIDआवेदन की प्रक्रिया आईडी के साथ प्रतिस्थापित ):

    xdotool search --onlyvisible --pid HERE_THE_PID --name "\a\b\c" set_window --name "$new_name"
    

कस्टम शीर्षक के साथ किसी भी एप्लिकेशन को लॉन्च करने के लिए एक स्क्रिप्ट बनाना:

  • change-titleइन सामग्रियों के साथ एक बैश स्क्रिप्ट बनाएं :

    #!/bin/bash
    
    ## The new name of the window is the first argument passed to the script:
    new_name="${1}"
    
    ## application is all arguments but the first (the title)
    application=${@:2}
    
    ## Run the app in background and in quiet mode:
    $application &> /dev/null &
    
    ## Get the pid of the app:
    app_pid=$!
    
    ## Wait until the window appears:
    until xdotool search --onlyvisible --pid $app_pid &> /dev/null; do sleep 0.01; done
    
    ## Change the window name:
    xdotool \
             search \
                    --onlyvisible \
                    --pid $app_pid \
                    --name "\a\b\c" \
             set_window \
                    --name "$new_name"
    
    ## Comment this line to run the app in background:
    wait $app_pid
    
  • इसके साथ निष्पादन योग्य बनाएं chmod a+x change-title

  • इसके साथ चलाओ ./change-title "NewTitle" theapp --its-arguments

परिवर्तन को स्थायी बनाने के लिए:

  • भागो gksudo gedit /usr/local/bin/custom-title(fx। उपयोगकर्ता / स्थानीय / बिन / संगीत)
  • पाठ संपादक पर उपरोक्त स्क्रिप्ट पेस्ट करें और इसे सहेजें।
  • Daud sudo chmod a+x /usr/local/bin/custom-title
  • Daud gksudo gedit /usr/share/applications/rhythmbox.desktop
  • इस फ़ाइल पर, एक पंक्ति है (लाइन संख्या 35 मेरा है) जो कहती है:

    Exec=rhythmbox %U
    
  • इसे बनाई गई फ़ाइल के नाम से बदलें:

    Exec=custom title (fx. Exec=music)
    
  • फ़ाइल को नए कस्टम-name.desktop fx के रूप में सहेजें। music.desktop। सावधान रहें कि आप मूल फ़ाइल को अधिलेखित न करें!

"ओपन विद" फ़ंक्शन के लिए परिवर्तन को प्रभावी बनाने के लिए

  • Daud gksudo gedit /usr/share/applications/rhythmbox-device.desktop
  • rhythmboxपिछली .desktop फ़ाइल में उपयोग किए गए नाम में बदलें ।
  • फ़ाइल सहेजें।
  • सिस्टम मॉनिटर या के साथ रिदमबॉक्स की सक्रिय प्रक्रियाओं को मारें sudo kill rhythmbox
  • अपने फोन / म्यूजिक प्लेयर को प्लग इन करें और देखें कि "ओपन (म्यूजिक एप्लिकेशन)" के साथ काम करें या नहीं।

(सारांश) आपके पास मौजूद फाइलों का अवलोकन

एप्लिकेशन को पूरी तरह कार्यात्मक बनाने के लिए, आपके पास /usr/share/applicationsसमाप्त होने पर 3 .desktop फाइलें होनी चाहिए :

  1. music.desktop या आपके द्वारा दिया गया नाम

    साथ Exec=musicऔर Hidden=true(पिछले एक जोड़ने नहीं तो अब तक)

  2. rhythmbox.desktop

    के साथ Exec=rhythmbox %UऔरHidden=true

  3. रिदमबॉक्स-device.desktop

    छिपे हुए प्रविष्टि के साथ Exec=music --select-source %Uऔर उसके बिना

इसका मतलब है कि आप हमेशा अंतिम फ़ाइल खोलते हैं और शीर्षक हमेशा वैसा ही होता है जैसा कि उसे चाहिए। एकमात्र तरीका खुद को रीसेट करना है जब आप अपने सत्र को ALT + F2 + R के साथ ताज़ा करते हैं।

  1. और आपके पास /usr/local/binसंभोग में बैश स्क्रिप्ट होनी चाहिए ।

अंतिम नोट:

  • जब मैं उपयोग कर रहा हूं तो बग--name "\a\b\c" को ठीक करना है, एप्लिकेशन नाम से प्रतिस्थापित न करें!
  • यदि आप स्क्रिप्ट की अंतिम पंक्ति को अनसुना करते हैं, तो ऐप बंद होने तक स्क्रिप्ट समाप्त नहीं होगी।
  • @Mud Kon${@:2} द्वारा अनुरोधित कोड की व्याख्या :

    1. $@ एक सरणी है जो सभी स्थिति मापदंडों को संग्रहीत करता है।
    2. ${@:2}का अर्थ है: सभी स्थितिगत मापदंड लेकिन पहले
    3. मान लीजिए कि मैं इस तरह से एक कार्यक्रम कहता हूं:

      awesome-program foo bar baz fooz
      
      • ${@:1} होने वाला foo bar baz fooz
      • ${@:2} होने वाला bar baz fooz
      • ${@:3} होने वाला baz fooz
      • ${@:4} होने वाला fooz
      • ${@:5} खाली है क्योंकि वहाँ अधिक स्थितिगत पैरामीटर नहीं हैं।
    4. $@, ${@}और ${@:1}एक ही बात है: सभी स्थितिगत मापदंड।

    5. इस विषय के बारे में यहाँ और जानें: http://wiki.bash-hackers.org/scripting/posparams

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

@MaudKon: अवलोकन क्या है? अब स्क्रिप्ट की कोशिश करो। यदि आप डैश को "ओवरव्यू" कहते हैं (कई ऐप के साथ बड़ा पैनल), तो मैं आपको कहूंगा कि मेरी स्क्रिप्ट स्थायी परिवर्तन नहीं करती है।
हेलियो

मेरा मतलब है कि आवेदन अवलोकन, मैं पहले से ही पानी का छींटा छिपा दिया है, हाहा। हम्म, हाँ, आपकी स्क्रिप्ट काम करती है। क्या परिवर्तन को स्थायी बनाने के लिए वैसे भी है? एफएक्स के साथ एक निष्पादन योग्य फ़ाइल को संपादित करने की तरह। GHex? या .desktop फ़ाइल में निष्पादन योग्य बदल रहा है?
मौद कोन

अब कोशिश करो। नई स्क्रिप्ट का उपयोग करें और खंड को स्थायी बनाने के लिए विधि का पालन करें । अब मुझे समझ आया कि आप अपने उबंटू का छलावरण कर रहे हैं ;-)
हेलियो

1
@ हेलियो मैंने आपके पोस्ट को मेरे लिए काम करने वाले चरणों के साथ अपडेट किया। मैंने "कार्य के साथ खुला" कार्य करने के लिए प्रक्रिया को भी जोड़ा।
मौद कोन

2

बस अनुवाद फ़ाइल का उपयोग करें!

मैं इस समस्या में भाग गया thunar साथ चुनौती: जब Compiz स्केल के रूप में thunar विंडो शीर्षक दिखाया गया यह कष्टप्रद हो गया "AnyFolder - फ़ाइल प्रबंधक" और अनावश्यक जानकारी के साथ comsumed अंतरिक्ष।

मैंने उपर्युक्त तरीकों की कोशिश की xdotoolऔर wmctrlतब से वे स्थायी नहीं थे क्योंकि जब भी मैं किसी अन्य फ़ोल्डर में जाता हूं, थुनार अपना विंडो शीर्षक बदल देता है। और यह अतिशयोक्तिपूर्ण महसूस हुआ कि हर बार जब थुन्नर इसे बदल देता है, तो शीर्षक को बदलने के लिए पृष्ठभूमि में चारों ओर एक स्क्रिप्ट बैठी होती है।

एक आसान समाधान अनुवाद फ़ाइल का उपयोग करना था जो हर एप्लिकेशन के साथ आता है। आपको बस पैकेज msgfmtमें शामिल एक टूल के साथ अनुवाद स्रोत फ़ाइल को फिर से संकलित करने की आवश्यकता है gettext। मैंने यह सिर्फ मजाक के लिए gThumb -just के लिए किया था- और यह काम करता है, भी।

1. संबंधित आवेदन के लिए स्रोत कोड प्राप्त करें। Http://packages.ubuntu.com पर
टाइप या हेड करें , सोर्स प्राप्त करें और नामक फोल्डर की तलाश करें : इसमें प्लेन-टेक्स्ट लैंग्वेज फाइल्स मौजूद हैं। अपनी भाषा के लिए देखो। मान लीजिए कि आप ब्राज़ील से हैं, तो वह फ़ाइल होगी$ sudo apt-get source APPLICATIONpopt_BR.po

2. अपनी आवश्यकताओं के लिए फ़ाइल में बदलाव
करें सटीक के लिए देखो! खिड़की का शीर्षक जिसे आप हटाना चाहते हैं या बदलना चाहते हैं। थुनर के मामले में यह "फाइल मैनेजर" था और pt_BR.poमैंने पाया

:. set window title
: ../thunar/thunar-window.c:3154 ../Thunar.desktop.in.in.h:3
: ../thunar/thunar-settings.desktop.in.h:1
msgid "File Manager"
msgstr "Gerenciador de arquivos"

msgidवह संकेत कहां है जो एप्लिकेशन भेजता है और msgstrलैंगपैक इसका क्या अनुवाद करता है। आपको जो पसंद है, उसे
बदलें । मैंने सीखा है कि यदि आप अनुवाद को इस तरह खाली छोड़ देते हैं तो आवेदन वापस गिर जाएगा । यदि आप चाहते हैं कि यह "खाली" हो तो व्हॉट्सएप का उपयोग करें। या एक डॉट। या किसी भी कायरता ASCII प्रतीक।msgstrmsgstr "o_-"
msgstr ""msgid

3. कंपाइलर प्राप्त करें
जैसा कि उल्लेख किया गया है कि आपको पैकेज msgfmtसे जरूरत है gettext, इसलिए आपको टाइप करना होगा
$ sudo apt-get install gettext

4. कंपाइल
खोलें, एक टर्मिनल खोलें, अपने बदले हुए फोल्डर में जाएं pt_BR.poऔर msgfmt को त्रुटियों के लिए फाइल की जांच करने दें:
$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
यदि यह ठीक है, तो आगे बढ़ें और इसे संकलित करें:
$ msgfmt -c -o pt_BR.mo pt_BR.po

5. प्लेस फ़ाइल में
एक नज़र है कि कैसे मूल अनुवाद / usr / share / locale / your_LANGUAGE / LC_MESSAGES / या / usr / share / locale-langpack / your_LANGUAGE / LC_MESSAGES / नाम है और अपनी फ़ाइल को वहां रखें। यदि यह दोनों स्थानों में मौजूद नहीं है, तो इसे उनमें से एक में डालें और फ़ाइल नाम के साथ थोड़ा प्रयोग करें: लोअरकेस, कैमलकेस या कुछ और, जैसे gthumb.moया YOUR-APP.mo
पहले मूल का बैकअप बनाएं: फिर वहां अपना नया अनुवाद कॉपी करें
$ sudo cp /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo.BAK

$ sudo cp pt_BR.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo

यदि Your_APP चल रहा है, तो इसके सभी उदाहरण बंद करें।
झसे आज़माओ!

संकेत यदि आप मेरे जैसे EN स्थानीयकरण के साथ Ubuntu चला रहे हैं, तो बस किसी भी * .po का उपयोग करें, सभी अपरिवर्तित को मिटाएँ या टिप्पणी करें । / / // जोड़े इसे / usr / share / locale / en / LC_MESSAGES / में डाल दें ।

स्रोत:
http://wiki.xfce.org/translations/translation_guidance_in_xfce


सिर्फ रिकार्ड के लिए; मुझे संदेह है कि आपने वास्तव में स्क्रिप्ट की कोशिश की, क्योंकि यह नाम रखता है, जैसा कि उत्तर में उल्लेख किया गया है।
जैकब वल्जिम

आप ठीक कह रहे हैं, मैंने इस स्क्रिप्ट की कोशिश नहीं की, लेकिन एक सिंपल (सरल) एक और कहीं से, और xdotool और wtctrl के साथ ट्रिक्स। जैसा कि उल्लेख किया गया है, मेरे लिए ऐसा लगता है कि एक स्रोत फ़ाइल में एक पंक्ति को बदलने की तुलना में, एक तोप के साथ गौरैया की शूटिंग करना । फिर भी, कोई स्क्रिप्ट से बहुत कुछ सीख सकता है।
रोनसो ०

मैं उत्सुक हूं कि यदि एप्लिकेशन अपग्रेड किया जाता है तो क्या होगा। * .Desktop फ़ाइलें और स्थानीयकरण फ़ाइलें अधिलेखित हैं?
रोनसो ०

जैसा कि यहां बताया गया है askubuntu.com/a/703942/72216 , मैं पृष्ठभूमि स्क्रिप्ट के लिए फ़ोबिया साझा नहीं करता, अगर यह अच्छी तरह से लिखा गया है और महत्वपूर्ण कार्यक्षमता को जोड़ता है। .desktopफ़ाइलों के बारे में : फिर से, आपको मेरे उत्तर को किसी दूसरे के साथ भ्रमित करना होगा जिसे आपने पढ़ा होगा। उत्तर .desktopफ़ाइलों को संपादित नहीं करता है और जब कोई एप्लिकेशन पुनः इंस्टॉल किया जाता है तो कोई कार्रवाई की आवश्यकता नहीं होती है।
जैकब वल्जिम

यह एक सामान्य प्रश्न था, क्योंकि उत्तर # 2 .desktopफ़ाइलों को संशोधित करता है और मैं अनुवाद फ़ाइलों को wih करता हूं। क्या आप यह जानते हो? और मैं किसी भी स्क्रिप्ट समाधान को दूसरा मौका दे सकता हूं क्योंकि मैं अब पढ़ता हूं "mu__Incoming -" जहां मेरे पास "mu__Incoming - File Manager" था । उन अनुप्रयोगों के लिए जिनके पास बिना किसी "पथ / से / फ़ोल्डर" के एक स्थिर विंडो शीर्षक है, मेरे समाधान ठीक काम करते हैं।
ronso0

1

Wmctrl के साथ विंडो के शीर्षक बदलें (भागों)

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

उदाहरण के लिए, मुझे Some fancy websiteइसके बजाय पढ़ना पसंद है Some fancy website - Mozilla Firefox। Compiz स्केल प्लगइन अब बहुत स्पष्ट है क्योंकि मैंने भी हटा दिया है - File managerऔर अन्य तार।

मेरे द्वारा किए गए परिवर्तन:

  1. सफेद-रिक्त स्थान की अनुमति देने के लिए //विभाजक के रूप में उपयोग करेंwindow_names.txt
  2. विंडो शीर्षक को संशोधित करने के wmctrlबजाय उपयोग करें xdotool(चूंकि xdotool गैर-ASCII वर्णों को बहुत अच्छी तरह से संभालता नहीं है):wmctrl -i -r [WindowIdentifier] -N 'new Title'
  3. स्क्रिप्ट में कुछ अतिरिक्त लाइनें स्ट्रिंग प्रतिस्थापन आदि करने के लिए।

संशोधित window_names.txtइस तरह संरचित है:
[process name]//[exact text to replace]//[replacement text]

firefox// - Mozilla Firefox// (whitespace!)
thunar// - File Manager// ° xyz
gedit// - gedit// - 123

पिम्पल लिपि:

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

f = os.environ["HOME"]+"window_names.txt"

change = []
lines = open(f).read().splitlines()
for l in lines:
    try:
        change.append(l.split("//"))
    except IndexError:
        pass

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = []

while True:
    try:
        curr_2 = get(["wmctrl", "-lp"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]

        for item in new:
            line = item.split(None, 4)
            winID = line[0] ; pid = line[2] ; currentTitle = line[4]
            procs = get(["ps", "-e"]).splitlines()
            match = [l for l in procs if pid in l][0]
            for app in [app for app in change if app[0] in match]:
                newTitle = str.replace(currentTitle, app[1], app[2])
                subprocess.Popen(["wmctrl", "-i", "-r", winID, "-N", newTitle])
        curr_1 = curr_2
        time.sleep(0.3)
    except:
        pass

दोबारा: क्रेडिट विचार के लिए और स्क्रिप्ट स्थापित करने के लिए जैकब व्लिजम में जाते हैं!

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