Как я могу узнать то, что приложение выполняет (подлинное имя, не опубликованное имя)?

Я только что был посредством крупного долгого процесса этим утром попытки определить запущенное приложение. Это было в целях сообщения об ошибке этим утром, но я закончил тем, что отправил вопрос об этом к AskUbuntu вместо этого.

Мне везло нахождение ответа на этот раз.

Я пытался запуститься gnome-system-monitor (опубликованное имя: "Системный монитор"), но я не мог удаться, который был приложением, которое я искал.

Я пытался войти в меню приложения> О, но, не показывает подлинное имя приложения там. Вот снимок экрана gnome-software > О, который только показывает опубликованное название "программного обеспечения Ubuntu". Ubuntu Software > About

Я сделал веб-поиск "программного обеспечения человечности", чтобы видеть, показали ли какие-либо результаты поиска название приложения. Я нашел страницу Wikipedia, которая говорит, что "Разработка была закончена в 2015 и в Ubuntu 16.04 LTS, это было заменено программным обеспечением GNOME вместо этого". Я перешел по ссылке к программному обеспечению GNOME, но название приложения не показывают там также.

Поэтому я не смог сообщить об ошибке, таким образом, я приехал в AskUbuntu. Я сделал поиск "программного обеспечения человечности" и видел имя "программное обеспечение гнома" где-нибудь.

Я открыл терминал, использовал команду gnome-software, и запущенное соответствующее приложение.

Я закончил тем, что задал вопрос в AskUbuntu вместо того, чтобы сообщить об ошибке. Однако у меня была эта та же проблема много раз за прошлые 10 лет или так, и я нежно хотел бы решить ее раз и навсегда.

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

PS Этот вопрос был отмечен как дубликат "Этот вопрос уже, имеет ответ здесь: Как я определяю название процесса приложения? 1 ответ", который эффективно отвечает "Нет" на мой вопрос, "Является там быстрым и простым способом определить подлинное имя в настоящее время запущенного приложения?", но на самом деле ответ, который я получил от @waltinator, кажется, предоставляет метод (через xprop команда).

0
задан 9 October 2016 в 03:52

3 ответа

Используйте xwininfo (см. man xwininfo), от x11-utils пакет. Для демонстрации я выполнил xwininfo -all в окне терминала, и после подсказки, нажал на это окно. Первая часть того, что это сказало:

$ xwininfo -all

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x4600007 "unity - How can I find out what app is running (actual name, not published name)? - Ask Ubuntu"

  Root window id: 0x7d (the root window) "QupZilla"
  Parent window id: 0x2403a37 (has no name)
     1 child:
     0x4600008 (has no name): ()  1x1+-1+-1  +65+51

  Absolute upper-left X:  66
  Absolute upper-left Y:  52
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 1696
  Height: 1148
  Depth: 24
...

существуют также xlsclients и xprop (см. man page), который может быть полезным.

1
ответ дан 28 September 2019 в 10:55

Попробуйте

grep -i "access prompt" /usr/share/applications/*.desktop
/usr/share/applications/gcr-prompter.desktop:Name=Access Prompt

В этом примере, "общее" название приложения Access Prompt и имя, которое обнаруживается в выводе чего-то как ps -o pid,ppid,stime,time,command -u $USER, gcr-prompter.

Этот подход имеет два ограничения:
- это только смотрит в /usr/share/applications (потому что это - то, где большинство .desktop файлов найдено). Но некоторые .desktop файлы могут только быть в ~/.local/share/applications.
- в зависимости от того, как Вы определяете "приложение", некоторые приложения не могут иметь .desktop файла. В таких случаях "общее" название приложения и подлинное имя будут тем же.

1
ответ дан 28 September 2019 в 10:55

Насколько я знаю, что нет никакого способа по умолчанию сделать это.

На командной строке можно использовать xprop для получения информации об окне (курсор изменится, и Вы, как ожидают, нажмете на окно).

вывод обычно имеет строку, запускающуюся с _NET_WM_PID, который содержит PID программы, и можно использовать, например,

ps -o comm -p THE_PID

для нахождения команды программы.

можно поместить это все вместе в сценарий оболочки и использование zenity для графического дисплея:

#!/bin/sh
zenity --info --text "$(ps --no-headers -o comm -p $(xprop | awk '/^_NET_WM_PID/ {print $3}'))"

Сохраняют это где-нибудь как файл, делают это исполняемым файлом и присваивают горячую клавишу ему.

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

1
ответ дан 28 September 2019 в 10:55

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

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