माउस के तहत आवेदन का पता लगाएं


11

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

क्या एक खुली खिड़की से संबंधित का पता लगाने का एक तरीका है?

जवाबों:


11

Xdotool का उपयोग करना

पहले सुनिश्चित करें कि xdotoolआपके सिस्टम पर उपलब्ध है:

sudo apt-get install xdotool

निम्न आदेश वर्तमान में फ़ोकस में विंडो का प्रोसेस नाम प्रिंट करेगा:

cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"

खिड़की पर ध्यान केंद्रित करने के लिए अपने आप को अधिक समय देने के लिए / उस पर क्लिक करने से आप एक छोटी नींद की अवधि को रोक सकते हैं:

sleep 5 && cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"

प्रक्रिया का नाम थोड़े समय के बाद प्रदर्शित किया जाना चाहिए।


Wininfo का उपयोग करना

Wininfo एक ग्राफिकल उपयोगिता है जो खिड़कियों और उनके गुणों पर विभिन्न जानकारी प्रदर्शित करती है, जिसमें विंडो से जुड़ी PID (प्रोसेस आईडी) शामिल है:

wininfo में पीआईडी ​​की छवि

wininfo आधिकारिक रिपॉजिटरी में उपलब्ध होना चाहिए:

sudo apt-get install wininfo

खिड़की के पीआईडी ​​को निर्धारित करने के बाद आप इसके साथ जुड़े प्रक्रिया नाम को देख सकते हैं। ऐसा करने के लिए विभिन्न तरीके हैं, जैसे /proc:

$ cat /proc/17002/comm
gnome-terminal

यह PID से संबद्ध प्रक्रिया का नाम होगा 17002

एक और अधिक सुंदर तरीका है जो प्रक्रिया पेड़ के संदर्भ का निरीक्षण करने की अनुमति देता है, जैसा कि @ रमनो द्वारा सुझाया गया है :

$ pstree -a -s -l -p -u 17002
init,1
  └─lightdm,1900
      └─lightdm,3202 --session-child 12 19
          └─lxsession,3307,glutanimate -s LXDE -e LXDE
              └─openbox,3362 --config-file /home/glutanimate/.config/openbox/lxde-rc.xml
                  └─gnome-terminal,17002
                      ├─bash,1841
                      ├─bash,2332
                      ├─bash,2424
                      │   └─pstree,2484 -a -s -l -p -u 17002
                      ├─gnome-pty-helpe,1840
                      ├─{gnome-terminal},1835
                      ├─{gnome-terminal},1836
                      ├─{gnome-terminal},1842
                      └─{gnome-terminal},2269

बेशक आप ऊपर दिए pstreeगए xdotoolविकल्प के साथ भी संयोजन कर सकते हैं (यह इंगित करने के लिए @ rubo77 के लिए धन्यवाद!)।

sleep 2; pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")

सूत्रों का कहना है:

/unix//q/38867/29245

http://www.linuxquestions.org/questions/debian-26/how-to-find-the-process-associated-with-a-top-level-x-window-907125/

/superuser//q/632979/170160


1
अच्छा जवाब के लिए +1। यदि पीआईडी ​​मुख्य एप्लिकेशन के एक बच्चे की है, तो आप इसका उपयोग करने का सुझाव दे सकते हैं pstree -a -s -l -p -u $PIDजो काफी अच्छा है ...
रमनो

@Rmano: ओह, यह साफ है! मैंने इसे जवाब में जोड़ दिया।
Glutanimate

echo $()अपने आदेश में आवश्यक नहीं है।
अगली सूचना तक रोक दिया गया।

@DennisWilliamson सूचक के लिए धन्यवाद। संपादित।
Glutanimate

1
xdotool getwindowpid "$(xdotool getwindowfocus)"xdotool getwindowfocus getwindowpid
विड्रैक

2

आप इस कमांड से कीबोर्ड-शॉर्टकट बना सकते हैं:

zenity --info --text $(xprop $win_id WM_CLASS | cut -d" " -f4-)

1
यह एक बहुत अच्छा समाधान है, +1। हालाँकि, एक छोटा मुद्दा: यदि आवेदन एक उचित WMCLASS (जो कि गुप्त संवादों के साथ अक्सर होता है) को निर्दिष्ट नहीं करता है, तो xprop किसी भी मदद का नहीं होगा।
Glutanimate

क्या आपके पास एक एप्लिकेशन (पॉपअप) के लिए एक उदाहरण है जो काम नहीं करता था, धन्यवाद।
TuKsn

1
मेरे पास हाथ में कुछ खास नहीं है, लेकिन मुझे याद है कि कई जावा अनुप्रयोगों और अन्य अस्पष्ट कार्यक्रमों के साथ समस्याएँ हैं जिनके पास WMCLASS सेट (या कुछ सामान्य जैसे सेट java-window) नहीं था। मैं कुछ समय पहले इस तरह के मुद्दों में भाग गया था जब मैं अपने विंडो मैनेजर कॉन्फ़िगरेशन में एप्लिकेशन-विशिष्ट नियमों को लागू करने की कोशिश कर रहा था।
Glutanimate

1
आप कर रहे हैं वहीं qml / क्यूटी के साथ बनाया क्षुधा के साथ एक समान समस्या है -> bugreports.qt-project.org/browse/QTBUG-29396
TuKsn

आप इसके लिए कीबोर्ड-शॉर्टकट कैसे बनाते हैं? मैंने कोशिश की, जैसा कि नीचे दिखाया गया है, लेकिन ज़ीनिटी दिखाई नहीं देती है
rubo77

2

आप xpropक्लिक की गई विंडो की प्रोसेस आईडी प्राप्त करने के लिए उपयोग कर सकते हैं :

xprop $win_id _NET_WM_PID

इसके बाद इसका विश्लेषण करें pstree:

pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)

यह आप एक पाठ-जानकारी विंडो के साथ पुनर्निर्देशित कर सकते हैं

pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)|zenity --text-info --title "pstree of clicked Window"

मैंने इस अंतिम कमांड के लिए एक कीबोर्ड-शॉर्टकट बनाने की कोशिश की (यदि आपको इसे नियमित रूप से आवश्यक है), लेकिन किसी कारण से यह काम नहीं करता है।


0

Xdtool और yad इंस्टॉल होने के साथ आपके पास एक अच्छा GUI ऐप हो सकता है।

#!/bin/bash
while true; do cat "/proc/$(xdotool getwindowpid "$(xdotool 
getwindowfocus)")/comm"; sleep 1; echo -e '\f'; done | yad --no- 
buttons --no-focus --geometry 250x10 --fixed --text-info -- 
title="Active window" --listen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.