Como descobrir o nome e o caminho de um aplicativo GUI em execução no Linux?

Como descobrir o nome e o caminho de um aplicativo GUI em execução no Linux?

Estou interessado em saber mais sobre meu sistema. Iniciou, por exemplo, uma aplicação GUI "Impressão". Um nome bonito e brilhante no título.

Não há arquivo "imprimindo" em /usr/bin.

Existe algum truque para mostrar o nome real do aplicativo no sistema de arquivos em vez de “imprimir”, por exemplo “printgui”?

Responder1

Normalmente as aplicações GUI são iniciadas através de "lançadores", ou seja.Área de Trabalhoarquivos. Você está vendo "Impressão" em seus menus em vez do nome real porque esse é o "nome genérico" do aplicativo (detalhes no link que postei). Dependendo de qual DE você está usando, você poderá clicar com o botão direito na entrada do menu e selecionar Editou Propertiesque permitiria ver o caminho do executável e, às vezes, o nome real desse aplicativo. Isso não é possível em um DE como o Gnome 3, então aqui está uma solução que deve funcionar independentemente do seu DE.

.desktopos arquivos estão localizados /usr/share/applicationssimplesmente grepem -ing paraGenericName=Impressãodeve listar pelo menos um lançador contendo essa string.

Por exemplo, não tenho "Impressão" no meu sistema, mas tenho "Editor de Texto". Quero saber o nome real do aplicativo/executável, então executo:

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

quais saídas:

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

Portanto, o "iniciador" do "Editor de Texto" é o /usr/share/applications/gedit.desktop. Agora, para saber o nome real e o executável do "Editor de Texto", preciso digitar o valor de duas chaves: Namee Exec:

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

quais saídas:

Name=gedit
Exec=gedit %U

Para o caminho completo do executável, basta executar:

which gedit

e isso retorna:

/usr/bin/gedit

Responder2

Eu transpus a resposta acima para o scriptexecCmdGnome3.shmostrado abaixo. Eu uso este utilitário para descobrir como chamar aplicativos fora do terminal cujo nome do shell gnome eu conheço.

#!/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"

informação relacionada