Agrega un ejecutable cualquiera al menú de aplicaciones y accesos directos en Linux

Tras más de 10 años usando macOS, la función de Spotlight me acostumbró a que todo estuviera a mi alcance con una facilidad increíble, incluso la ejecución de nuevos programas. Al volver a Linux y usar, en gran medida, aplicaciones basadas en contenedores tipo AppImage, Flatpak y similares, tuve que buscar una solución... Y así fue como descubrí los ficheros .desktop

¿Qué son los ficheros .desktop?

Los ficheros .desktop son utilizados por algunos programas de Linux como datos de referencia cuando un usuario accede a las opciones del menú en una aplicación. Los datos almacenados en estos archivos están en texto plano en formato clave-valor. En concreto, el nombre del elemento del menú, su icono o el código asociado para inicializar y ejecutar la aplicación correspondiente, son algunas de las entradas en estos archivos.

En mi caso concreto, estos ficheros son usados tanto por el menú de aplicaciones de KDE, como por el software KRunner. Y éste es el principal causante de que haya descubierto el uso de los ficheros .desktop.

Crear una nueva entrada para los ejecutables

Todo esto ha venido motivado, en gran medida, porque empecé a utilizar aplicaciones en formato AppImage y claro, cada vez que quería abrir una, tenía que navegar hasta al carpeta (bien por terminal, bien por el entorno gráfico) y abrirla desde ahí, en lugar de contar con un acceso directo como sí tenía con el navegador, por ejemplo. Apenas un Alt + Space me servían para abrir KRunner y empezar a teclear el nombre de la aplicación para que ésta saliera y con el ⏎ Enter abrirla. Rápido, fácil y sencillo.

Para conseguir lo mismo con estas aplicaciones, basta con crear el fichero .desktop dentro del directorio ~/.local/share/applications. Como ejemplo, tomaré la aplicación de Obsidian, que tiene un formato como el siguiente:

[Desktop Entry]
Version=1.0
Name=Obsidian
Comment=Take notes, create flow diagrams and much more
Type=Application
Icon=/home/parra/repos/dashboard-icons/png/obsidian.png
Exec=/home/parra/bin/Obsidian.appimage
Terminal=false
Categories=Utility;TextTools

Contenido del fichero .desktop para Obsidian

La descripción de los campos sería:

  • Version: Versión del fichero .desktop.
  • Name: Nombre que le daremos a la aplicación.
  • Comment: Una pequeña descripción de la aplicación. Podemos dejarlo en blanco si no queremos poner nada.
  • Type: El tipo de lanzador que usamos. En este caso, al ser una aplicación, será Application, pero también puede ser Link o Directory.
  • Icon: Es el icono que usará la aplicación. Deberá tener la ruta absoluta al mismo, excepto si están ubicados bajo /usr/share/pixmaps, ya que en ese caso podremos especificar directamente el nombre del fichero del icono sin la extensión en ese caso. En mi caso, me he clonado el repositorio de Dashboard Icons para tener ya disponibles los iconos de las aplicaciones, o similares.
  • Exec: La ruta completa al ejecutable. Si éste se encuentra en un directorio especificado dentro del $PATH, podemos omitirla y dejar sólo el nombre del ejecutable en sí.
  • Terminal: Sirve para especificar si queremos que se ejecute en una ventana del terminal o no (aplicaciones basadas en texto, poder ver todas las trazas que escupe, etc).
  • Categories: Nos ayuda a clasificar la aplicación. Cuando creamos este tipo de ficheros, si no tienen ninguna clasificación aparecerán todos en una categoría común, que en el caso de KDE se llama Objetos perdidos.

Y con esto, tras crear el fichero .desktop ya podemos ir al menú de aplicaciones o ejecutar KRunner que el sistema encontrará nuestro ejecutable y nos permitirá lanzarlo como una aplicación más.

Resultado de buscar la aplicacion tras crear el fichero .desktop mediante KRunner

Bonus: Categorías

Como comentaba antes, las categorías nos permiten clasificar nuestra aplicación, y hacen que ésta aparezca bajo el submenú correcto dentro del cajón de aplicaciones. Podemos definir más de una (basta con separarlas por ;) y están repartidas en las siguientes 11 categorías principales:

  • AudioVideo
  • Audio
  • Development
  • Education
  • Game
  • Graphics
  • Network
  • Office
  • Settings
  • Utility
  • Video

Además, disponemos de unas categorías adicionales más específicas, que nos permiten afinar más aún la agrupación de nuestras aplicaciones. Esta lista es bastante más extensa y contiene las siguientes:

  • 2DGraphics
  • 3DGraphics
  • Accessibility
  • ActionGame
  • AdventureGame
  • Amusement
  • ArcadeGame
  • Archiving
  • Art
  • ArtificialIntelligence
  • Astronomy
  • AudioVideoEditing
  • Biology
  • BlocksGame
  • BoardGame
  • Building
  • Calculator
  • Calendar
  • CardGame
  • Chart
  • Chat
  • Chemistry
  • Clock
  • Compression
  • ComputerScience
  • ConsoleOnly
  • Construction
  • ContactManagement
  • Core
  • Database
  • DataVisualization
  • Debugger
  • DesktopSettings
  • Dialup
  • Dictionary
  • DiscBurning
  • Documentation
  • Economy
  • Electricity
  • Electronics
  • Email
  • Emulator
  • Engineering
  • FileManager
  • Filesystem
  • FileTools
  • FileTransfer
  • Finance
  • FlowChart
  • Geography
  • Geology
  • Geoscience
  • GNOME
  • GTK
  • GUIDesigner
  • HamRadio
  • HardwareSettings
  • History
  • IDE
  • ImageProcessing
  • InstantMessaging
  • IRCClient
  • Java
  • KDE
  • KidsGame
  • Languages
  • Literature
  • LogicGame
  • Math
  • MedicalSoftware
  • Midi
  • Mixer
  • Monitor
  • Motif
  • Music
  • News
  • NumericalAnalysis
  • OCR
  • P2P
  • PackageManager
  • ParallelComputing
  • PDA
  • Photography
  • Physics
  • Player
  • Presentation
  • Printing
  • Profiling
  • ProjectManagement
  • Publishing
  • Qt
  • RasterGraphics
  • Recorder
  • RemoteAccess
  • RevisionControl
  • Robotics
  • RolePlaying
  • Scanning
  • Science
  • Security
  • Sequencer
  • Simulation
  • Sports
  • SportsGame
  • Spreadsheet
  • StrategyGame
  • Telephony
  • TelephonyTools
  • TerminalEmulator
  • TextEditor
  • TextTools
  • Translation
  • Tuner
  • TV
  • VectorGraphics
  • VideoConference
  • Viewer
  • WebBrowser
  • WebDevelopment
  • WordProcessor

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección: