マウスの下でアプリケーションを見つける


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(プロセスID)など、ウィンドウとそのプロパティに関するさまざまな情報を表示するグラフィカルユーティリティです。

wininfoのPIDの画像

wininfo 公式リポジトリで入手できるはずです:

sudo apt-get install wininfo

ウィンドウのPIDを決定したら、それに関連付けられているプロセス名を検索できます。これを行うには、たとえば次のようなさまざまな方法があります/proc

$ cat /proc/17002/comm
gnome-terminal

これは、PIDに関連付けられたプロセス名になります17002

@Rmanoが示唆するように、プロセスツリーコンテキストを検査できるよりエレガントな方法:

$ 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

もちろんpstreexdotool上記のオプションと組み合わせることもできます(これを指摘してくれた@ 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。PIDは、メインアプリケーションの子であるならば、あなたはの使用をお勧めすることができますpstree -a -s -l -p -u $PID...非常にいいですこれを
Rmano

@Rmano:ああ、それはきちんとしている!答えに追加しました。
グルタニメート14

echo $()あなたのコマンドでは必要ありません。
追って通知があるまで一時停止します。

@DennisWilliamsonポインターをありがとう。編集済み。
グルタニメート14

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

2

次のコマンドでキーボードショートカットを作成できます。

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

1
それは非常に良い解決策です、+ 1。ただし、1つの小さな問題:アプリケーションが適切なWMCLASSを割り当てない場合(暗号化ダイアログの場合が多い)、xpropは役に立たないでしょう。
グルタニメート14

機能しないアプリケーション(ポップアップ)の例はありましたか、ありがとうございます。
TuKsn 14

1
手元に具体的なものは何もありませんが、いくつかのJavaアプリケーションや、WMCLASSが設定されていない(またはのような汎用に設定されていない)他の不明瞭なプログラムに問題があることを覚えていますjava-window。ウィンドウマネージャーの構成にアプリケーション固有のルールを実装しようとしていたとき、私はしばらく前にこの種の問題に遭遇しました。
グルタニメート14

1
> -あなたは右のQML / QTで作成したアプリケーションと同様の問題がありますbugreports.qt-project.org/browse/QTBUG-29396は
TuKsn

このためのキーボードショートカットはどのように作成しますか?以下に示すように試しましたが、Zenityが表示されません
-rubo77

2

xpropクリックしたウィンドウのプロセスIDを取得するために使用できます。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.