एक विशिष्ट विंडो को फोकस करने के लिए बैश कमांड


50

क्या कोई तरीका है, जो कमांड लाइन में है, रनिंग प्रक्रिया की एक विशिष्ट विंडो पर ध्यान देने के लिए। मुझे लगता है कि मुझे इस प्रक्रिया का नाम, संख्या, और कुछ भी चाहिए जो मुझे चाहिए।

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

जवाबों:


77

Wmctrl कमांड काम करने के लिए लगता है। यह मेरे लिए पहले से ही स्थापित था, लेकिन किसी को इसकी आवश्यकता होने पर यह रिपॉजिटरी में उपलब्ध है।

wmctrl -l 

वर्तमान में सूची खुली हुई खिड़कियां (सूक्ति पैनल सहित) हैं।

wmctrl -a STRING

अपने शीर्षक में STRING युक्त विंडो पर ध्यान देता है। मुझे यकीन नहीं है कि अगर एक से अधिक खिड़की उस स्थिति को पूरा करती हैं तो क्या होगा।
मेरे मामले में कमान थी:

wmctrl -a Firefox

6
यह देखकर अच्छा लगा कि कोई पढ़ रहा है और मैं सिर्फ अपने लिए नहीं बोल रहा हूं। =)
मालाबार

1
इसके अलावा xdotool का प्रयास करें
एंड्रेस रिओप्रियो

यह gdb (डीबगर) पर फ़ोकस सेट करने के लिए बहुत बढ़िया है जब यह kvm की तरह फ़ोकस चुराने वाली विंडो के साथ डीबगर लक्ष्य को लॉन्च करता है। Gdb कमांड का उपयोग करें shell wmctrl -a something, जहां आपके डिबगर टर्मिनल शीर्षक में कुछ है।
doug65536

बहुत बहुत धन्यवाद, यह शुद्ध सोना है, मुझे डर था कि मैं अपने सभी लंबित काम को किसी क्रोम विंडो में खो दूं जो कि पृष्ठभूमि में किसी तरह गायब हो गया, यह काम कर गया!
ऑस्कर

8

आपके wmctrlसाथ संयोजन का उपयोग करके xdotoolफ़ोकस पर ध्यान केंद्रित कर सकते हैं और फिर कीबोर्ड या माउस क्रिया कर सकते हैं।

इस उदाहरण में:

wmctrl -R firefox && \
  xdotool key --clearmodifiers ctrl+t ctrl+l && \
  xdotool type --delay=250 google && \
  xdotool key --clearmodifiers Tab Return

निम्नलिखित चरणों का निष्पादन किया जाता है:

  1. पहली मिलान फ़ायरफ़ॉक्स विंडो पर ध्यान दें
  2. एक नया ब्राउज़र टैब खोलें
  3. पता पट्टी में ध्यान केंद्रित करता है
  4. "Google" टाइप करें
  5. पहले ब्राउज़र ऑटो-पूरा परिणाम के लिए टैब
  6. रिटर्न (या दर्ज करें) कुंजी दबाएं

4

नीचे दी गई स्क्रिप्ट जो मैं अपने ubuntu पीसी में उपयोग करता हूं? उपयोग मामला इस तरह है।

   $ ./focus_win.sh 1            # focus on a application window that executed at first
   $ ./focus_win.sh 2            # second executed application window

मैं इसे कीबोर्ड कस्टम शॉर्टकट में असाइन करने के बाद उपयोग कर रहा हूं। ctrl + 1, ctrl + 2, ...

cat focus_win.sh

#! /bin/sh

if [ "" = "$1" ] ; then
    echo "usage $0 <win index>"
    exit 1;
fi

WIN_ID=`wmctrl -l | cut -d ' ' -f1 | head -n $1 | tail -n 1`

if [ "" = "$WIN_ID" ] ; then
    echo "fail to get win id of index $1"
    exit 1;
fi
wmctrl -i -a $WIN_ID
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.