प्रारंभिक नाम आमतौर पर आवेदन के भीतर (कोड के भीतर) द्वारा निर्धारित किया जाता है। हालाँकि आप इसे बदल सकते हैं, जैसे कि उपयोग करके 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
और प्रति एप्लिकेशन सेटिंग्स लोड करता है। फिर यह नव निर्मित खिड़कियों पर नजर रखता है । यदि एक विंडो दिखाई देती है जो कि किसी एक एप्लिकेशन से संबंधित है, तो फ़ाइल में निश्चित रूप से, यह विंडो नाम को तदनुसार सेट करता है।
स्थापित कैसे करें
स्क्रिप्ट दोनों का उपयोग करती है wmctrl
और xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
एक खाली फ़ाइल में स्क्रिप्ट को कॉपी करें इसे इस रूप में सहेजें setwindowname.py
फ़ाइल बनाएँ ~/window_names.txt
(बिल्कुल नाम window_names.txt
), प्रारूप में अपने आवेदन जोड़ें:
<application> <window_name>
जैसे
gedit Text editor
विंडो नाम में स्थान शामिल हो सकते हैं।
टर्मिनल से स्क्रिप्ट को कमांड द्वारा टेस्ट-रन करें:
python3 /path/to/setwindowname.py
यदि सभी अपेक्षा के अनुरूप काम करते हैं, तो इसे स्टार्टअप एप्लिकेशन में जोड़ें: डैश> स्टार्टअप एप्लिकेशन> जोड़ें
ध्यान दें कि कुछ मामलों में, स्क्रिप्ट तब टूट सकती है जब यह तब शुरू होता है जब डेस्कटॉप अभी तक पूरी तरह से लोड नहीं हुआ है। यदि यह मामला हो, तो स्टार्टअप एप्लिकेशन को जोड़ने की कमांड होगी:
/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
।
- यह किसी भी एप्लिकेशन के राइट-क्लिक विकल्प के साथ हस्तक्षेप नहीं करता है ।
- स्क्रिप्ट भी विंडो नाम को "बनाए रखता है"; यदि कोई अन्य प्रक्रिया बाद में विंडो का नाम बदलती है (टैब को खोलती है, तो डायरेक्टरी बदलें जैसे) स्क्रिप्ट विंडो को "नई विंडो" के रूप में देखती है और आपकी पसंद का विंडो नाम बनाए रखती है।