Как узнать имя и путь к запущенному графическому приложению в Linux?

Как узнать имя и путь к запущенному графическому приложению в Linux?

Мне интересно узнать больше о моей системе. Запустил, например, приложение GUI "Печать". Красивое блестящее имя в заголовке.

В /usr/bin нет файла «printing».

Есть ли какой-нибудь трюк, чтобы отображать настоящее имя приложения в файловой системе вместо «printing», например «printgui»?

решение1

Обычно приложения с графическим интерфейсом запускаются через «лаунчеры», т.е..рабочий столфайлы. Вы видите «Печать» в своих меню вместо настоящего имени, потому что это «общее имя» приложения (подробности в ссылке, которую я разместил). В зависимости от того, какой DE вы используете, вы можете щелкнуть правой кнопкой мыши по пункту меню и выбрать Editили , Propertiesчто позволит вам увидеть путь к исполняемому файлу, а иногда и настоящее имя этого приложения. Это невозможно в DE, например Gnome 3, поэтому вот решение, которое должно работать независимо от вашего DE.

.desktopфайлы расположены в /usr/share/applicationsтак просто grep-ing дляGenericName=Печатьнеобходимо указать хотя бы один лаунчер, содержащий эту строку.

Например, у меня в системе нет "Печать", но есть "Текстовый редактор". Я хочу узнать настоящее имя приложения/исполняемого файла, поэтому я запускаю:

grep "GenericName=Text Editor" /usr/share/applications/*

что выводит:

/usr/share/applications/gedit.desktop:GenericName=Text Editor

Итак, "запуск" для "Text Editor" — это /usr/share/applications/gedit.desktop. Теперь, чтобы узнать настоящее имя и исполняемый файл для "Text Editor", мне нужно выполнить grep значения двух ключей: Nameи Exec:

grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop 

что выводит:

Name=gedit
Exec=gedit %U

Для получения полного пути к исполняемому файлу достаточно выполнить:

which gedit

и это возвращает:

/usr/bin/gedit

решение2

Я перенес ответ выше в сценарийexecCmdGnome3.shпоказано ниже. Я использую эту утилиту, чтобы узнать, как вызывать приложения из терминала, имя оболочки gnome которых мне известно.

#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer" 
# Output: Found Launcher: "evince.desktop"
#         Name=Document Viewer
#         Exec=evince %U

launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"

Связанный контент