Crear un lanzador en linux

En ocasiones los desarrolladores de software suministran sus aplicaciones ya compiladas pero sin ningún script de instalación ni empaquetado.

Ante esta situación será posible ejecutar la aplicación desde terminal buscando la ubicación del archivo binario ejecutable (que usualmente es nombrado igual que la aplicación) y desde ahí ejecutarla con ese nombre o bien haciendo doble click sobre ella. Para cualquiera de los dos casos pudiera ser más practico crear un lanzador para poder acceder a dicha aplicación.

Para realizar esta tarea basta con crear un archivo  con terminación .desktop en alguna de las siguientes ubicaciones:

~/.local/share/applications
/usr/share/applications

La primera ubicación te viene bien si lo que estas buscando es que el lanzador aparezca en el menú de aplicaciones del usuario local y la segunda, si por el contrario quieres que aparezca en el menú de aplicaciones de todos los usuarios.

Observa a continuación un ejemplo simple y básico de un archivo .desktop

 [Desktop Entry]
Type=Application
Name=Nombre Aplicacion
Exec=/usr/share/aplicacion/aplicacion
Icon=MyIcono
Comment=Comentario de app

La línea crucial del archivo es la llave Exec la cual contiene una línea de comando que consiste en un programa ejecutable opcionalmente seguido de uno o más argumentos. En otras palabras el path con la ruta donde se encuentra el ejecutable. Es algo obvio, pero por si no esta claro la clave Icon contiene la ruta absoluta o relativa al icono que se va a mostrar en el manejador de archivos, menús etc. La clave Name el nombre de la aplicación y la clave Comment una breve descripción o comentario que se muestra a manera de tooltip, se recomienda que su valor no sea redundante con el nombre. Son las entradas mínimas para que el archivo .desktop funcione, si deseas conocer más a detalle las especificaciones para archivos .desktop puedes visitar este link

Observa el  lanzador  code.desktop de la aplicación Visual Studio Code.


[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --unity-launch %F
Icon=code
Type=Application
StartupNotify=true
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=vscode;
X-Desktop-File-Install-Version=0.23
[Desktop Action new-empty-window] Name=New Empty Window Exec=/usr/share/code/code --new-window %F Icon=code

En conclusión hemos visto cuales son las entradas mínimas que un lanzador debe contener, vimos que un lanzador  no es más que un archivo en formato .desktop  el cual se encarga de especificar como una aplicación será lanzada, como aparece en un menú o gestor de archivos etc. 

Es importante y nuca sobra saber que hay de tras, como funciona algo, como es que eso que parece magia deja de serlo y aparece el truco. Saber algo más siempre esta bien.