Farenin altındaki uygulamayı bulun


11

Sık sık başıma geliyor, bir uygulama bir soru açıyor ve bu pencerenin hangi uygulamaya ait olduğunu merak ediyorum, çünkü Launcher'a bakarsam şu anda odaklanan bir uygulama yok (simgenin sağ tarafında beyaz üçgen yok) mesaj penceresine odaklandığımda)

Açık bir pencerenin aidiyetini bulmanın bir yolu var mı?

Yanıtlar:


11

Xdotool kullanma

Öncelikle xdotoolsisteminizde mevcut olduğundan emin olun :

sudo apt-get install xdotool

Aşağıdaki komut, o anda odakta olan pencerenin işlem adını yazdırır:

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

Pencereye odaklanmak / üzerine tıklamak için kendinize daha fazla zaman vermek için küçük bir uyku süresini başlatabilirsiniz:

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

İşlem adı kısa bir süre sonra gösterilmelidir.


Wininfo kullanma

Wininfo, pencerelerle ilişkili PID (işlem kimliği) dahil olmak üzere pencereler ve özellikleri hakkında çeşitli bilgileri görüntüleyen bir grafik yardımcı programdır:

PID adlı kullanıcının görüntüsü wininfo

wininfo resmi depolarda mevcut olmalıdır:

sudo apt-get install wininfo

Pencerenin PID'sini belirledikten sonra pencereyle ilişkili işlem adını arayabilirsiniz. Bunu yapmanın çeşitli yolları vardır, örneğin /proc:

$ cat /proc/17002/comm
gnome-terminal

Bu, PID ile ilişkili işlem adı olacaktır 17002.

@Rmano tarafından önerildiği gibi, işlem ağacı bağlamının incelenmesine izin veren daha zarif bir yol :

$ 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

Tabii siz de birleştirebilirsiniz pstreeile xdotoolyukarıda seçeneğiyle (bu işaret için @ rubo77 sayesinde!):

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

Kaynaklar:

https://unix.stackexchange.com/q/38867/29245

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

https://superuser.com/q/632979/170160


1
Güzel cevap için +1. PID ana uygulamanın bir çocuğu ise, kullanımı pstree -a -s -l -p -u $PIDoldukça güzel önerebilirsiniz ...
Rmano

@Rmano: Oh, bu temiz! Cevaba ekledim.
Glutanimate

echo $()Komutlarınıza gerekli değildir.
sonraki duyuruya kadar duraklatıldı.

@DennisWilliamson İşaretçi için teşekkürler. Düzenlenen.
Glutanimate

1
xdotool getwindowpid "$(xdotool getwindowfocus)"xdotool getwindowfocus getwindowpid
Veedrac

2

Bu komutla bir klavye kısayolu oluşturabilirsiniz:

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

1
Bu çok güzel bir çözüm, +1. Bununla birlikte, daha küçük bir sorun: uygulama uygun bir WMCLASS atamazsa (bu çoğu zaman şifreli diyaloglarda görülür), xprop herhangi bir yardımcı olmayacaktır.
Glutanimate

Çalışmayan bir uygulama (pop-up) örneği var mıydı, teşekkür ederim.
TuKsn

1
Elimde belirli bir şey yok ama birkaç Java uygulaması ve WMCLASS ayarlanmamış (ya da genel bir şeye ayarlanmış) olmayan diğer belirsiz programlarla ilgili sorunları hatırlıyorum java-window. Bir süre önce pencere yöneticisi yapılandırmamda uygulamaya özgü kurallar uygulamaya çalışırken bu tür sorunlarla karşılaştım.
Glutanimate

1
> - Doğru QML / qt ile oluşturulan uygulamalar ile benzer bir sorun var olan bugreports.qt-project.org/browse/QTBUG-29396
TuKsn

Bunun için bir klavye kısayolu nasıl oluşturursunuz? Aşağıda gösterildiği gibi denedim, ancak zenity görünmüyor
rubo77

2

xpropTıklanan Pencerenin İşlem Kimliğini almak için kullanabilirsiniz :

xprop $win_id _NET_WM_PID

daha sonra şu analizle analiz edin pstree:

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

Bunu kullanarak bir metin bilgisi penceresine yönlendirebilirsiniz

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

Bu son komut için bir klavye kısayolu oluşturmaya çalıştım (düzenli olarak ihtiyacınız varsa), ancak bazı nedenlerden dolayı bu işe yaramaz.


0

Yüklü xdtool ve yad ile güzel bir GUI Uygulaması olabilir.

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.