마우스 아래에서 응용 프로그램을 찾으십시오


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-related-with-a-top-level-x-window-907125/

/superuser//q/632979/170160


1
좋은 답변 +1. PID가 주요 응용 프로그램의 자식 인 경우, 그 사용 pstree -a -s -l -p -u $PID이 매우 훌륭하다는 것을 제안 할 수 있습니다 .
Rmano

@Rmano : 아, 깔끔합니다! 나는 그것을 대답에 추가했다.
Glutanimate

echo $()당신의 명령에 필요하지 않습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

@DennisWilliamson 포인터 감사합니다. 편집했습니다.
Glutanimate

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

2

이 명령으로 키보드 단축키를 만들 수 있습니다.

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

1
아주 좋은 해결책입니다, +1. 그러나 하나의 작은 문제 : 응용 프로그램이 적절한 WMCLASS를 할당하지 않으면 (종종 암호 대화 상자의 경우) xprop는 도움이되지 않습니다.
Glutanimate

작동하지 않는 응용 프로그램 (팝업)에 대한 예가 있습니까? 감사합니다.
TuKsn

1
구체적인 내용은 없지만 WMCLASS가 설정되지 않은 (또는 일반적인 것으로 설정되지 않은) 여러 Java 응용 프로그램 및 기타 모호한 프로그램에 문제가 있음을 기억 java-window합니다. 창 관리자 구성에서 응용 프로그램 관련 규칙을 구현하려고 할 때 얼마 전에 이러한 종류의 문제가 발생했습니다.
Glutanimate

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.