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:
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 serLink
oDirectory
.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.
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
- 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: