Xdotool विंडो स्टैक से विंडो आईडी कैसे प्राप्त करें


12

मुझे विंडो की आईडी की आवश्यकता है जो सक्रिय या केंद्रित है। मैं xdotoolकमांड का उपयोग करने की कोशिश करता हूं । आदेश है:

xdotool getactivewindow

परिणाम विंडो स्टैक में सहेजा गया है। मैं इस विंडो स्टैक से चौड़ा आईडी प्राप्त करना चाहता हूं। आदेश

xdotool getactivewindow getwindowpid

मुझे संतुष्ट नहीं करता है। मैं प्रोसेस आईडी से विंडो आईडी नहीं लेना चाहता।

जवाबों:


11

मुझे लगता xdotool getactivewindowहै कि आप क्या चाहते हैं - क्या आपने इसकी कोशिश की?

यह विंडो आईडी (विंडो स्टैक से) को प्रिंट करता है यदि कमांड लाइन पर कोई और xdotool उपकमांड नहीं हैं।

में xdotool getactivewindow getwindowpidउदाहरण के लिए, getactivewindowखिड़की स्टैक पर आईडी डालता है, और getwindowpidपीआईडी क्वेरी करने के लिए इस आईडी का उपयोग करता है। ध्यान दें कि टर्मिनल में उस कमांड को चलाने से टर्मिनल विंडो की आईडी हमेशा वापस आ जाएगी, क्योंकि यह सक्रिय है। किसी अन्य विंडो से ID प्राप्त करने के लिए sleep 2s && xdotool getactivewindowदो सेकंड के समय में रुचि की विंडो का चयन करें।


xdotoolविंडो हैंडलिंग के लिए अन्य उपकरणों के साथ उपयोग करने पर एक जटिलता है :

जबकि xdotoolआउटपुट विंडोव आईडी के लिए दशमलव संख्याओं का उपयोग करता है, अधिकांश अन्य उपकरण आउटपुट के लिए हेक्साडेसिमल संख्याओं का उपयोग करते हैं (वे इनपुट के लिए आमतौर पर दोनों का समर्थन करते हैं)।

उदाहरण के लिए, यदि आपको एक विंडो मिलती है, तो आपको xdotool getactivewindowआउटपुट के परिणाम नहीं मिलेंगे xwininfo -root -tree, जो सभी विंडो को सूचीबद्ध करता है। इसे पहले एक हेक्साडेसिमल नंबर में बदलना होगा:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


दशमलव को हेक्साडेसिमल में बदलना:

printf 0x%x 69206716

षोडश आधारी को दशमलव में बदलना:

printf %i 0x42002bc

मैंने xdotool getactivewindowकमांड की कोशिश की और समस्या यह है कि यह टर्मिनल में परिणाम नहीं प्रिंट करता है। यह विंडो स्टैक के परिणाम को सहेजता है। यह कमांड कुछ संख्या प्रिंट करता है, लेकिन यह विंडो आईडी नहीं है (जैसे 35651588)
Mariusz

आपको क्यों लगता है कि 35651588 विंडो आईडी नहीं है?
वोल्कर सीगल

हां, मुझे लगता है कि 35651588 विंडो आईडी नहीं है। आप xwininfo कमांड द्वारा विंडो आईडी देख सकते हैं, जैसे xwininfo -root -tree- यह कमांड सभी विंडो को प्रिंट करता है और खिड़कियों में दूसरे प्रकार के नंबर होते हैं।
Mariusz

1
xwininfoविंडो आईडी को हेक्साडेसिमल संख्याओं के रूप में दिखाता है, और xdotool दशमलव संख्याओं को दिखाता है, लेकिन यह सिर्फ एक ही है।
वोल्कर सीगल

तुम सही हो। 35651588 = 0x2200004। xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz

1

यह कमांड मेरे लिए काम करता है

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool संस्करण 3.20160805.1


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