Я только что был посредством крупного долгого процесса этим утром попытки определить запущенное приложение. Это было в целях сообщения об ошибке этим утром, но я закончил тем, что отправил вопрос об этом к AskUbuntu вместо этого.
Мне везло нахождение ответа на этот раз.
Я пытался запуститься gnome-system-monitor
(опубликованное имя: "Системный монитор"), но я не мог удаться, который был приложением, которое я искал.
Я пытался войти в меню приложения> О, но, не показывает подлинное имя приложения там. Вот снимок экрана gnome-software
> О, который только показывает опубликованное название "программного обеспечения Ubuntu".
Я сделал веб-поиск "программного обеспечения человечности", чтобы видеть, показали ли какие-либо результаты поиска название приложения. Я нашел страницу Wikipedia, которая говорит, что "Разработка была закончена в 2015 и в Ubuntu 16.04 LTS, это было заменено программным обеспечением GNOME вместо этого". Я перешел по ссылке к программному обеспечению GNOME, но название приложения не показывают там также.
Поэтому я не смог сообщить об ошибке, таким образом, я приехал в AskUbuntu. Я сделал поиск "программного обеспечения человечности" и видел имя "программное обеспечение гнома" где-нибудь.
Я открыл терминал, использовал команду gnome-software
, и запущенное соответствующее приложение.
Я закончил тем, что задал вопрос в AskUbuntu вместо того, чтобы сообщить об ошибке. Однако у меня была эта та же проблема много раз за прошлые 10 лет или так, и я нежно хотел бы решить ее раз и навсегда.
Существует ли быстрый и простой способ определить подлинное имя в настоящее время запущенного приложения?
PS Этот вопрос был отмечен как дубликат "Этот вопрос уже, имеет ответ здесь: Как я определяю название процесса приложения? 1 ответ", который эффективно отвечает "Нет" на мой вопрос, "Является там быстрым и простым способом определить подлинное имя в настоящее время запущенного приложения?", но на самом деле ответ, который я получил от @waltinator, кажется, предоставляет метод (через xprop
команда).
Используйте 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
), который может быть полезным.
Попробуйте
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 файла. В таких случаях "общее" название приложения и подлинное имя будут тем же.
Насколько я знаю, что нет никакого способа по умолчанию сделать это.
На командной строке можно использовать 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}'))"
Сохраняют это где-нибудь как файл, делают это исполняемым файлом и присваивают горячую клавишу ему.
я предполагаю, что существуют некоторые случаи, где это не работает или отображает неправильный результат, но обычно это должно быть, по крайней мере, полезно.