Узнайте приложение под мышью

Это часто происходит со мной, что приложение открывается вопрос и интересно, которому точному приложению принадлежит это окно, потому что, если я смотрю в Средстве запуска, нет никакого приложения, которое в настоящее время фокусируется (никакой белый треугольник на правой стороне значка, когда я фокусирую окно сообщения),

Существует ли способ узнать принадлежность открытого окна?

11
задан 8 August 2014 в 12:38

4 ответа

Используя 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 (идентификатор процесса) связанный с окном:

image of PID in wininfo

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

Конечно, можно также объединиться pstree с xdotool опция выше (благодаря @rubo77 для указания на это!):

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

Источники:

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

11
ответ дан 16 November 2019 в 14:58

Можно создать сочетание клавиш с этой командой:

zenity --info --text $(xprop $win_id WM_CLASS | cut -d" " -f4-)
2
ответ дан 16 November 2019 в 14:58

Можно использовать 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"

, я попробовал к , создают сочетание клавиш для этой последней команды (если Вам нужна она regularely), но по некоторым причинам Это не работает.

2
ответ дан 16 November 2019 в 14:58

Установив xdtool и yad, вы можете получить красивое приложение с графическим интерфейсом.

#!/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
0
ответ дан 7 February 2020 в 20:58

Другие вопросы по тегам:

Похожие вопросы: