मैं कमांड लाइन पर एक विंडो का स्थान (डेस्कटॉप पर) कैसे पा सकता हूं?


19

मैं कीबोर्ड शॉर्टकट के माध्यम से अपनी खिड़कियों को प्रबंधित करने में मदद करने के लिए थोड़ी स्क्रिप्ट लिखने की कोशिश कर रहा हूं।

जो मैं चाहता हूं, उसे करने के लिए, मुझे "सक्रिय" (केंद्रित) विंडो के वर्तमान स्थान और आकार को खोजने में सक्षम होने की आवश्यकता है। स्थान से मेरा मतलब है कि डेस्कटॉप पर विंडो का X, Y निर्देशांक है, और आकार से मेरा मतलब है खिड़की की ऊंचाई और चौड़ाई।

क्या कोई कमांड लाइन उपयोगिता है जो इस जानकारी को ला सकती है?

जवाबों:


22

आप इस आदेश का उपयोग करके वर्तमान सक्रिय विंडो के लिए सभी जानकारी प्राप्त कर सकते हैं:

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

या

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

आप की जरूरत के समन्वय के लिए आउटपुट को पार्स करें। विंडोज़ के साथ बातचीत करते समय यहां कुछ उपयोगी कमांड दिए गए हैं:

  • xwininfo आपको सापेक्ष और पूर्ण ज्यामिति देगा।
  • xprop आपको बहुत सी जानकारी बताएगा, जिसमें विंडो सक्रिय है, लेकिन यह ज्यामिति नहीं है
  • xdpyinfo आपको सक्रिय विंडो की आईडी भी प्रदान करेगा, लेकिन कोई अतिरिक्त जानकारी नहीं।
  • wmctrl आपको खिड़कियों के बारे में जानकारी की एक सूची मिलेगी, और आपको संशोधन के लिए सक्रिय विंडो का चयन करने की अनुमति देगा, लेकिन जानकारी नहीं।

उदाहरण के लिए सक्रिय विंडो का शीर्षक "नया नाम" बदलने के लिए:

wmctrl -r :ACTIVE: -N "New Name"

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

wmctrl -r :ACTIVE: -e 0,20,20,200,400

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


1
मैं यह नोट करना चाहूंगा कि दूसरी कमांड चलाते समय मुझे अलग परिणाम मिलते हैं। पहले एक काम करता है जैसा कि मुझे उम्मीद है।
टीएम।

1
मैं आर्क का उपयोग करता हूं, लेकिन भविष्य में यह किसी की मदद कर सकता है। पहले वाले ने मेरे लिए काम नहीं किया, दूसरे ने WM के कारण शायद सही आयाम नहीं दिए। लेकिन दोनों के संयोजन ने काम किया। xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
सेव

धन्यवाद! लेकिन मैं पहले दो टिप्पणियों से सहमत हूं। दूसरा आदेश, xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)मुझे मेरे टर्मिनल की एक बाल खिड़की (जिसका कोई नाम नहीं है) दिखाता है। जब मैं बस xdpyinfo | grep focusप्राप्त करता हूं focus: window 0x435b877, revert to Parent, और 0x435b877 पहले कमांड द्वारा लौटाए गए विंडो की आईडी है (जो मेरे लिए काम करता है)। यह भरोसेमंद 14.04.1 LTS पर है
nealmcb

8

"Xdotool" के साथ आप आसानी से कीबोर्ड या माउस इवेंट का उपयोग करके विंडोज़ के साथ बातचीत कर सकते हैं।

CtrlCसक्रिय विंडो में अनुक्रम भेजने का उदाहरण :

xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.

यदि आपको वास्तव में खिड़की की स्थिति की आवश्यकता है:

eval $(xdotool getmouselocation --shell); echo $X $Y

अधिक क्रियाओं / विकल्पों के लिए मैन पेज की जाँच करें ।


दिलचस्प है, लेकिन मैं अभी मिलता हूं Error: Invalid key sequence 'ctrl-c'
l0b0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.