Existen diferentes métodos para crear lanzadores en Ubuntu. Desde algo tan sencillo como arrastrar y soltar desde el Tablero o Dash hasta nuestro escritorio, o bien, utilizar una aplicación como Arronax.
Con cualquiera de las soluciones descritas anteriormente, habremos creado un lanzador totalmente funcional pero con las opciones básicas, aunque Arronax nos permite mas opciones, pero que debemos conocer para implementarlas.
Ahora bien, si quieres crear lanzadores en Ubuntude aplicaciones que no disponen de ellos, no podrás utilizar el primero de los métodos, y para el segundo necesitarás conocer las posibilidades que tienes a tu alcance para ver obtener el máximo potencial de los lanzadores.
Crear lanzadores en Ubuntu, derivados y otros
Como y donde guardar los lanzadores
Los lanzadores de aplicaciones, tanto para Ubuntu se guardan con la extensión .desktop. Los que aparecen el el Tablero o Dash, o los que aparecen en otros lanzadores como Synapse o Plank, son los que se encuentran en cualquiera de estos directorios,
- Para todos los usuarios,
/usr/share/applications/
- Para el usuario,
~/.local/share/applications/
Una vez creado nuestro lanzador, en general, transcurrido un tiempo prudencial debería aparecer en el Tablero o Dash, pero si no ocurre, puede ser, o bien, porque el lanzador tiene algún error, o por que no se ha actualizado la base de datos. En este último caso, ejecuta la siguiente orden en un emulador de terminal,
sudo update-desktop-database
o bien pulsa Alt+F2 y ejecutas,
unity
Crear tu primer lanzador
Para crear lanzadores en Ubuntu lo mas sencillo es utilizar un editor como gedit ó geany, si quieres utilizar un editor gráfico, o si prefieres desde la terminal, que es la opción que recomiendo, nano.
Lo mínimo que debe contener un lanzador para aplicaciones es,
[Desktop Entry] Type=Application Name=nombre Exec=path_to_executable Icon=path_to_icon
- Type. Permite especificar el tipo de lanzador, si es para una aplicación (Application), un enlace (Link) o un directorio (Directory).
- Name. Especifica el nombre de la aplicación.
- Exec. El programa que se ejecutará (incluyendo el camino hasta el ejecutable), incluyendo los argumentos necesarios. Para saber sobre los argumentos, te recomiendo que leas el artículo «Códigos especiales en lanzadores de aplicaciones en Gnome«.
- Icon. El icono que se mostrará en el gestor de archivos, menús, etc. Si se corresponde con la dirección absoluta, tipo /usr/share/icons/icono.png, se utilizará el archivo indicado. En otro caso se utilizará el icono disponible. Aunque esta entrada es opcional, tampoco tiene mucho sentido crear un lanzador que no tenga un icono suficientemente explicativo.
Los formatos soportados para el icono son PNG, SVG, SVGZ, XPM, GIF, ICO y ICNS.
Mas claves para crear lanzadores en Ubuntu
El lanzador anterior, es el mínimo necesario, pero disponemos de muchas mas claves que podemos definir al crear lanzadores en Ubuntu, algunas mas o menos necesarias,
- GenericName. El nombre genérico de la aplicación. Así por ejemplo, el nombre genérico para una aplicación
como Firefox sería Navegador de internet. - NoDisplay. Esta clave permite indicar que la aplicación existe pero que no se mostrará en menús. Esto puede ser interesante para definir aplicaciones que trabajarán con un tipo MIME determinado.
- Comment. Se trata de un comentario para ayudar al usuario a entender la aplicación. Debe ser descriptivo y distinto de Name y GenericName. La ventaja de utilizar Name, GenericName y Comment es que en lanzadores como Unity y Synapse los utilizará para su búsqueda, es decir, puedes buscar Firefox por su nombre o por navegador.
- Hidden. Es equivalente a que el archivo fue borrado.
- OnlyShowIn y NotShowIn. Se corresponde con una lista de los escritorios en los que se mostrará o no se mostrará el lanzador. Por defecto un lanzador se mostrará a menos que esté la clave OnlyShowIn. Si la variable $XDGCURRENTEDESKTOP está definida, está contendrá un listado de escritorios, de forma que si coincide uno de ellos con la variable NotShowIn, el lanzador no se mostrará en este escritorio. Esto puede ser muy útil en el caso de que desarrolles una aplicación con varios lanzadores, un lanzador para cada tipo de escritorio, por las características particulares de cada uno de ellos.
- DBusActivable. Esta variable indica si nuestra aplicación soporta activación vía DBUS.
- TryExec. Aquí se indica una aplicación que nos permite determinar si la aplicación está actualizada. No debe utilizarse en menús.
- Path. Si este lanzador es del tipo Application, esta variable estable el directorio de trabajo donde ejecutar el programa.
- Terminal. Si la aplicación se ejecuta en un emulador de terminal o no.
- Actions. Identificadores para acciones de la aplicación. Esta variable se puede utilizar para decirle a la aplicación que realice una acción específica diferente del comportamiento establecido por defecto. Así por ejemplo, si nuestra aplicación es un reproductor, podemos definir algunas acciones como play, next y previous; y a continuación describir cada una de ellas. De esta forma nuestro lanzador tendría un aspecto como el siguiente,
[Desktop Entry] Type=Application Name=nombre Exec=pathtoexecutable Icon=pathtoicon Actions=Play;Next;Previous [Desktop Action Play] Name=Play-Pause Exec=pathtoexecutable -t OnlyShowIn=Unity; [Desktop Action Next] Name=Next Exec=pathtoexecutable -f OnlyShowIn=Unity; [Desktop Action Previous] Name=Previous Exec=pathtoexecutable -r OnlyShowIn=Unity;
Como ves en este ejemplo además utilizamos la variable OnlyShowIn para indicar que solo se muestre en Unity
- MimeType. Con es variable definiremos los tipos soportados por nuestra aplicación. Esta variable es sumamente interesante para establecer que tipos de archivos abre nuestra aplicación, con lo que al hacer doble clic, optaremos a que nuestra aplicación pueda abrir el archivo.
- Categories. Otra variable fundamental; puesto que nos permite definir en que categoría o categorías aparecerá nuestra aplicación.
- Implements. Define una lista de las interfaces implementadas por la aplicación. Estas interfaces deben seguir las reglas de definición utilizadas por las interfaces D-Bus.
- Keywords. Muestra una lista de palabras que se utilizaran para describir este lanzador y que son de enorme utilidad para que los lanzadores tipo Unity o Synapse encuentren fácilmente la aplicación que necesitamos. Estos valores no están pensados para que se muestren, sino únicamente para localizar la aplicación que buscamos. Además al igual que sucede con Comment, debemos evitar que se repita con las variables Comment, Name y GenericName.
- StartUpNotify. Si está variable se define como true la aplicación mandará un mensaje remove cuando la inicies con la variable DESKTOPSTARTUPID. Por ejemplo con Unity establecer StartUpNotify=true utilizará el lanzador existente en lugar de crear un icono nuevo.
- StartupWMClass. Los escritorios modernos, como Gnome 3, Unity, etc, utilizan la variable WMClass para asociar las ventanas con su aplicación. Por ejemplo muchas aplicaciones implementadas en Java tienen el problema de que las ventanas creadas por la aplicación no están asociadas con el lanzador utilizado para iniciar la aplicación, de forma que en el lanzador verás múltiples copias del mismo icono, lo que es siempre muy molesto. Con esta variable definimos con que clase agrupa la aplicación las ventanas.
Así para conocer la clase de una aplicación, ejecutaremos en un terminal,
xprop WM_CLASS
y hacemos clic en la ventana, y en el terminal veremos el nombre que buscamos. Por ejemplo, si hacemos esto en un emulador de terminal, la salida que veremos será,
WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"
Lo que nos indica que todas las ventanas que tengan esa WM_CLASS se agruparán juntas.
- URL. En el caso de que el tipo de lanzador sea Link esta variable nos indicará la dirección de acceso.
Crear lanzadores en Ubuntu y comprobar que son correctos
Una vez has creado tu lanzador en Ubuntu y derivado, es importante comprobar que éste está correctamente implementado. Para ello, puedes utilizar desktop-file-validate que nos permite comprobar si es correcto y si no utiliza variables que están obsoletas.
Así, en un emulador de terminal, solo tienes que ejecutar la siguiente orden
desktop-file-validate tu_archivo.desktop
Crear lanzadores en Ubuntu para inicio automático
Si el lanzador lo creas en alguno de los directorios que indicaré a continuación, esto permitirá que las aplicaciones se inicien de forma automática.
- En el caso de que quieras que se inicie para todos los usuarios, deberás crearlo en el directorio,
/etc/xdg/autostart/
En el caso de Gnome, también puedes crearlo en el directorio,
/usr/share/gnome/autostart/
Si quieres que se inicie de forma automática únicamente para el usuario en cuestión, el directorio es,
~/.config/autostart/
En este caso si está establecida las variables Hidden, OnlyShowIn o NotShowIn, dependiendo si coinciden con tu escritorio o no, harán que se inicie la aplicación o no.
Por otro lado si tienes contemplada la variable TryExec pero esta no coincide con un programa instalado, la aplicación no se iniciará de forma automática.
Además dependiendo del escritorio, puedes utilizar algunas variables adicionales. Así, para Gnome y Unity, se pueden añadir las siguientes variables,
- X-GNOME-Autostart-enabled=true. Nos permite utilizar el lanzador para arranque.
- X-GNOME-Autostart-Delay=10. Esto nos permite un retraso desde que termina el inicio hasta que se inicia la aplicación.
- X-GNOME-Autostart-Phase. Nos permite definir en que momento se inicia la aplicación. Por defecto el valor es Applications
- X-GNOME-Autostart-Notify=true.
- X-GNOME-AutoRestart=true. Permite el reinicio de la aplicación.
Mientras que en el caso de MATE, las entradas serían las siguientes, respectivamente,
- X-MATE-Autostart-enabled=true
- X-MATE-Autostart-Delay=10
- X-MATE-Autostart-Phase
- X-MATE-Autostart-Notify=true
- X-MATE-AutoRestart=true
Como crear lanzadores en Ubuntu y traducirlos
Por último, si el lanzador que vas a crear lo van a utilizar otros usuarios de otros países, es interesante traducir aquello que es susceptible de ser utilizado por los usuarios.
Así podemos traducir las claves Name, GenericName, Comment y Keywords.
Por ejemplo,
[Desktop Entry] Name=gThumb Name[es_ES]=gThumb GenericName=Image Viewer GenericName[es_ES]=Visor de imágenes Comment=View and organize your images comment[es_ES]=Para ver y organizar tus fotografías Keywords=Image;Viewer; Keywords[es_ES]=Imagen;Fotografía;Visor;
Más información,
Muy interesante. De mucha ayuda. Muchas gracias por la información de este artículo.
Gracias a ti Fernando. Un saludo.
Muchas gracias, fue de ayuda 🙂
Gracias a ti por comentar.