मैं काफी निश्चित हूं कि ऐसा करना असंभव है। इसका कारण यह है कि GNOME जैसे खिड़की वाले वातावरण इस से निपटने के लिए सॉफ़्टवेयर की अपेक्षा करते हैं, और सॉफ़्टवेयर निर्माता विंडोिंग वातावरण से इसे संभालने की अपेक्षा करते हैं।
डेविल्स्की एक अच्छा विचार है, लेकिन यह पैटर्न मिलान (यानी यदि नाम == 'google-chrome') करता है। तो क्या होगा अगर मैं दो ब्राउज़र खोलूं? वे दोनों एक ही कार्यक्षेत्र में चले गए? मेरे पास 6x3 = 18 कार्यक्षेत्र हैं, जिनमें से प्रत्येक क्रोम के एक विशेष उदाहरण के साथ है। अगर मैं इन कार्यक्रमों (यानी 'google-chrome1', 'google-chrome2' ...) का नाम बदल सकूं तो मुझे इसमें मदद मिलेगी, लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है। इसलिए हमें wmctrl का उपयोग करना होगा।
wmctrl विंडो टाइटल का उपयोग करने के अलावा थोड़ा बेहतर b / c है, आप विंडो आईडी का भी उपयोग कर सकते हैं या वर्तमान में हाइलाइट की गई विंडो का उपयोग कर सकते हैं। विंडो आईडी b / c पाने के लिए एक दर्द है, वे तुरंत उत्पन्न नहीं होते हैं। निचे देखो
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
लेकिन तब तक कमांड लाइन पर नियंत्रण वापस नहीं किया जाता है जब तक कि AFER gedit बाहर नहीं निकलता है। इसके लिए हमें बस इतना करना होगा कि एक &
संकेत दिया जाए
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
लेकिन अब नियंत्रण, 99.999% समय है, कमांड लाइन पर वापस आ गया है इससे पहले कि विंडो प्रबंधकों ने विंडो लॉन्च की और विंडो आईडी खोजने का कोई तरीका नहीं है। यह देखने के लिए कि क्या कोई नई विंडो बनाई गई है, और यह देखने के लिए कि क्या वह खिड़की है जिसे हम खोज रहे हैं, यह देखने के लिए परीक्षण करने के लिए एक बहुत ही जटिल लूपिंग तकनीक स्थापित करनी होगी।
ध्वज के माध्यम से सक्रिय विंडो के लिए जाँच करने :ACTIVE:
में एक ही समस्या है, यह प्रोग्राम के चलने का इंतजार नहीं करता है।
wmctrl
मुझे एक बहुत ही अजीब कार्यक्रम के रूप में मारता है। ऐसा लगता है कि यह बिना माउस के लोगों के लिए डिज़ाइन किया गया था, या कार्यक्षेत्रों में अपने कार्यक्रमों को शारीरिक रूप से खींचने में असमर्थ था।