¿Cómo saber el nombre y la ruta de una aplicación GUI en ejecución en Linux?

¿Cómo saber el nombre y la ruta de una aplicación GUI en ejecución en Linux?

Estoy interesado en aprender más sobre mi sistema. Inició, por ejemplo, una aplicación GUI "Impresión". Un bonito nombre brillante en el título.

No hay ningún archivo "imprimiendo" en /usr/bin.

¿Existe algún truco para mostrar el nombre real de la aplicación en el sistema de archivos en lugar de "imprimir", por ejemplo "printgui"?

Respuesta1

Por lo general, las aplicaciones GUI se inician a través de "lanzadores", es decir.escritorioarchivos. Estás viendo "Imprimir" en tus menús en lugar del nombre real porque ese es el "nombre genérico" de la aplicación (detalles en el enlace que publiqué). Dependiendo del DE que esté utilizando, es posible que pueda hacer clic derecho en la entrada del menú y seleccionar Edito Propertiesque le permitiría ver la ruta ejecutable y, a veces, el nombre real de esa aplicación. Eso no es posible en un DE como Gnome 3, así que aquí hay una solución que debería funcionar independientemente de su DE.

.desktopLos archivos se encuentran en /usr/share/applicationstan simplemente grep-ing paraNombreGenérico=Impresióndebe enumerar al menos un iniciador que contenga esa cadena.

Por ejemplo, no tengo "Impresión" en mi sistema pero tengo "Editor de texto". Quiero saber el nombre real de la aplicación/ejecutable así que ejecuto:

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

que produce:

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

Entonces, el "lanzador" del "Editor de texto" es /usr/share/applications/gedit.desktop. Ahora, para saber el nombre real y el ejecutable del "Editor de texto", tengo que obtener el valor de dos claves: Namey Exec:

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

que produce:

Name=gedit
Exec=gedit %U

Para conocer la ruta completa del ejecutable, sólo es cuestión de ejecutar:

which gedit

y eso devuelve:

/usr/bin/gedit

Respuesta2

Transpuse la respuesta anterior al guión.ejecutivoCmdGnome3.shmostrado a continuación. Utilizo esta utilidad para descubrir cómo llamar aplicaciones desde la terminal cuyo nombre de shell de gnome conozco.

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

información relacionada