Desktop entries (Español)

La
Especificación de entradas de escritorio de XDG
define un estandar a las aplicaciones para integrarse en los menús de aplicaciones de los
Entornos de escritorio
que implementan la especificación de
menús de escritorio de XDG
.
Visión general
Cada entrada de escritorio debe tener las claves
Type
y
Name
Además de opcionalmente definir su apariencia en el menú de aplicaciones.
Hay 3 tipos de entradas de escritorio:
Application
(Aplicación), Define como lanzar una aplicación y que tipos MIME soporta (Usados por las
Aplicaciones MIME de XDG
). Con el
Auto arranque de XDG
Las aplicaciones pueden
iniciar automáticamente
si se ubican en directorios específicos. Estas entradas usan la extensión
.desktop
. Ver
#Entradas de aplicación
.
Link
(Enlace) Define un atajo a un
URL
. Estas entradas usan la extensión
.desktop
.
Directory
(Directorio) Define la apariencia de un submenú en el menú de aplicaciones. Estas entradas usan la extensión
.directory
.
Las siguientes secciones explicarán cómo las entradas de escritorio se suelen crear y validar.
Uso
Hay programas que soportan el manejo de archivos .desktop, por ejemplo
dex
:
$ dex /usr/share/applications/firefox.desktop
Entorno de escritorio
Lanzador
(
Paquete
)
Autoarranque
Aplicación
Enlace
Cinnamon
gio
(
glib2
)
No
Sí
No
GNOME
GNOME Flashback
MATE
Deepin
dde-open
1
(
deepin-api
)
Sí
Parcial
Enlightenment
enlightenment_open
(
enlightenment
)
KDE Plasma
kde-open
2
(
kde-cli-tools
)
Sí
Sí
Sí
LXDE
pcmanfm
(
pcmanfm
)
LXQt
–
Xfce
exo-open
3
(
exo
)
Independiente
gtk-launch
4
(
gtk3
)
No
Parcial
No
dex
(
dex
)
Sí
Sí
No
xdg-open
(
xdg-utils
)
No
Inestable
No
Los archivos
.desktop
de tipo
Application
necesitan tener declarado el bit ejecutable para poder se lanzador por
dde-open
Si
KDE_SESSION_VERSION
no está definido, entonces
kfmclient
de
konqueror
Se usará como reemplazo. (KDE Plasma deberíá definir esta variable de entorno en cualquier condición normal)
Tambien se intentará usar
gio
(de
glib2
)
Solo si las aplicaciones están en
/usr/share/applications
Entradas de aplicación
Las entradas de escritorio para aplicaciones, o archivos
.desktop
, suelen ser una combinación de recursos de metainformación y un acceso directo a una aplicación. Estos archivos usualmente se encuentran en
/usr/share/applications/
o
/usr/local/share/applications/
para aplicaciones instaladas para todo el sistema, o
~/.local/share/applications/
para aplicaciones instaladas para un solo usuario. Las entradas del usuario toman prioridad por encima de las del sistema.
Ejemplo de un archivo
A continuación se mostrará un ejemplo de la estructura de una entrada de escritorio común con comentarios adicionales. Este ejemplo solo está destinado a dar una impresión rapida y no muestra como utilizar todas las claves disponibles. Una lista completa se puedew encontrar en la
especificación de Freedesktop
.
[Desktop Entry]

# El tipo de archivo
Type=Application

# La versión de la especificación de entradas de escritorio que este archivo utiliza
Version=1.0

# El nombre de la aplicación
Name=jMemorize

# Un comentario que puede/va a ser usado como descripción emergente
Comment=Flash card based learning tool

# La ruta al directorio en el que la aplicación se ejecutará
Path=/opt/jmemorise

# El ejecutable de la aplicación con sus posibles argumentos
Exec=jmemorize

# El nombre o ruta del icono que se va a mostrar
Icon=jmemorize

# Determina si la aplicación debe ser lanzada en un terminal
Terminal=false

# Determina las categorias en la que la aplicación debería mostrarse
Categories=Education;Languages;Java;
Nota
Solo
Type
y
Name
son requeridos.
Sugerencia
Si se requiere localización para
Name
o
Comment
, se puede usar clave[idioma], por ejemplo
Comment[es]=Herramienta de aprendizaje basada en tarjetas flash
.
Definir claves
Todas las claves reconocidas se pueden encontrar en el sitio web de
freedesktop
.
Por ejemplo, la clave
Type
determina tres tipos de entradas de escritorio: Application (type 1), Link (type 2) y Directory (type 3).
La clave
Version
no define la versión de la aplicación, si no que define la versión de la especificación de entradas de escritorio que sigue la entrada.
Name
,
GenericName
y
Comment
suelen contener valores redundantes en forma de combinaciones de si mismos, por ejemplo:
Name=Pidgin Internet Messenger
GenericName=Internet Messenger
o
Name=NoteCase notes manager
Comment=Notes Manager
Esto debería evitarse, ya que solo puede ser confuso para los usuarios. la clave
Name
solo debería contener el nombre, o tal vez alguna abreviación/acronimo si es posible.
GenericName
debería indicar el como se llamaría a una aplicación en base a lo que hace esta misma (por ejemplo, Firefox es un "Navegador web").
Comment
pretende contener cualquier información adicional útil.
Validación
Debido a que algunas claves pueden volverse obsoletas con el tiempo, tal vez se deseé validar una entrada de escritorio usando
desktop-file-validate(1)
, que es parte del paquete
desktop-file-utils
. Para validar, ejecute:
$ desktop-file-validate <
ruta a su entrada de escritorio
>
Este comando mostrará advertencias y errores de utilidad relacionados con el formato de la entrada.
Instalación
Se puede usar
desktop-file-install(1)
para instalar una entrada de escritorio en una ruta especifica. Por ejemplo:
$ desktop-file-install --dir=$HOME/.local/share/applications ~/app.desktop
Esto también es util para personalizar entradas de escritorio ya existentes (por ejemplo de
/usr/share/applications
) usando las opciones de edición.
Actualizar la base de datos de entradas de escritorio
Normalmente, los cambios de las entradas de escritorios son detectados automaticamente por los entornos de escritorio.
Si no es ese el caso y por ejemplo, se desea forzar la base de datos de
~/.local/share/applications
, ejecute el siguiente comando.
If this is not the case, and you want to forcefully update the desktop entries defined in
~/.local/share/applications
, run the following command:
$ update-desktop-database ~/.local/share/applications
Sugerencia
añada el argumento
-v
(verbose) para mostrar posibles errores en las entradas de escritorio.
iconos
Mire también la
Especificación de temas de iconos
.
Formatos de imágenes comunes
A continuación se muestra una breve ddescripción general de los formatos de imagenes comúnmente utilizados para los iconos.
Soporte de formatos de imágenes especificados por el estándar de freedesktop.org.
Extensión
Nombre completo y/o descripción
Tipo de gráficos
Formato del contenedor
Soporte
.
png
Gráficos de Red Portátiles
Ráster
No
Yes
.
svg(z)
Gráficos vectoriales escalables
Vector
No
Yes (optional)
.
xpm
PixMap de X
Ráster
No
Yes (deprecated)
.
gif
Formato de Intercambio de Gráficos
Ráster
No
No
.
ico
Formato de iconos de Microsoft Windows
Ráster
Yes
No
.
icns
Formato de iconos de Apple
Ráster
Yes
No
Convertir iconos
Si te encuentras con un icono que está en un formato que no es soportado por el estandar de freedesktop.org (como
gif
o
ico
), puedes usar la herramienta
convert
(que es parte del paquete
imagemagick
) para convertirla a un formato soportado/recomendado, por ejemplo:
$ convert <icon name>.gif <icon name>.png
si conviertes una imágenes de un formato de contenedor como
ico
, conseguirás todas las imágenes encapsuladas dentro del archivo
ico
con el formato de nombre
<nombre del icono>-<numero>.png
. Si quieres conocer el tamaño de la imagen, o el numero de imágenes que tiene un contenedor como
ico
, Puedes usar la herramienta
identify
(también parte del paquete
imagemagick
):
$ identify /usr/share/vlc/vlc48x48.ico
/usr/share/vlc/vlc48x48.ico[0] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[1] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[2] ICO 128x128 128x128+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[3] ICO 48x48 48x48+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[4] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[5] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
Como se puede ver, el archivo
ico
de ejemplo, aunque su nombre puede sugerir una sola imagen de tamaño 48x48, esta contiene 6 imágenes en distintos tamaños, donde incluso una es incluso mas grande que 48x48 (siendo de 128x128).
Alternativamente, es posible usar
icotool
(del paquete
icoutils
) para extraer imágenes png desde un contenedor ico:
$ icotool -x <icon name>.ico
Para extraer imagenes desde un contenedor .icns, es posible usar
icns2png
(del paquete
libicns
):
$ icns2png -x <icon name>.icns
Obtener iconos
Aunque los paquetes que ya proveen un archivo .desktop también proveen un icono o un conjunto de iconos, hay algunas excepciones donde algún desarrollador no ha creado un archivo
.desktop
, sin embargo, puede tener algunos iconos. Un buen punto de partida es buscar iconos en el paquete fuente.
Por ejemplo, es posible buscar archivos por extensión con el comando
find
, y después usar el comando
grep
para filtrar con alguna palabra, como el nombre del paquete, "icon", "logo", etc. esto en caso de que haya demasiadas imagenes en el paquete fuente.
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"
Si los desarrolladores de una aplicación no incluyen iconos en sus paquetes fuente, el siguiente paso sería buscar en sus sitios web.
Algunos proyectos, por ejemplo
tvbrowser
AUR
, tienen una
pagina de arte/logotipos
, donde se suelen encontrar iconos adicionales, Si el proyecto es multiplataforma, existe la posibilidad de que incluso si el paquete para Linux/Unix no contenga un icono, el paquete para Windows si contenga uno, Si el proyecto usa un
Sistema de control de versiones
como CVS/SVN/etc. y se tiene experiencia con ese sistema, se puede considerar buscar algún icono por ese medio.
Si todas las acciones anteriores fallan, es probable que el proyecto simplemente no tenga algún logo/icono aún.
Ruta de los iconos
El
estándar de freedesktop.org
especifica en que orden y directorios los programas deberían buscar los iconos:
$HOME/.icons
(Por compatibilidad con versiones anteriores)
$XDG_DATA_DIRS/icons
/usr/share/pixmaps
Herramientas
Arronax
Arronax
es un programa gráfico para crear y modificar entradas de escritorio para aplicaciones y ubicaciones.
Instale
el paquete
arronax
AUR
para usarlo.
Alacarte
alacarte
es un editor gráfico de menú para
GNOME
usando la especificación de menú de freedesktop.org. También permite anular las entradas de escritorio.
jdDesktopEntryEdit
jddesktopentryedit
AUR
es un programa gráfico que usa
Qt
y permite editar entradas de escritorio.
MenuLibre
menulibre
AUR
Es un programa gráfico que usa
GTK
y ofrece características modernas en una interfaz limpia y fácil de usar.
gendesk
gendesk
comenzó como una herramienta específica de Arch Linux para generar archivos .desktop obteniendo la información necesaria directamente de los archivos PKGBUILD. Ahora es una herramienta general que acepta argumentos de línea de comandos.
Los iconos se pueden descargar automaticamente desde
openiconlibrary
, en caso de que estén disponibles. (La fuente de los iconos es configurable).
Como usarlo
Añada
gendesk
a
makedepends
Inicie la función
prepare()
con:
gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"
Alternativamente, si un icono ya está disponible ($pkgname.png, por ejemplo). El argumento
-n
sirve para no descargar ningún icono o usar un icono por defecto. Por ejemplo:
gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"
$srcdir/$pkgname.desktop
será creado y puede ser instalado en la función
package()
con:
install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
El icono puede ser instalado con:
install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
Use
--name='Program Name'
para elegir un nombre para la entrada del menú.
Use
--exec='/opt/some_app/elf --some-arg --other-arg'
para configurar el campo
exec
.
Revise la pagina del
proyecto gendesk
para mas información.
lsdesktopf
lsdesktopf
AUR
puede listar los archivos ".desktop" disponibles o buscar su contenido.
$ lsdesktopf
$ lsdesktopf --list
$ lsdesktopf --list gtk zh_TW,zh_CN,en_GB
También puede realizar buscas relacionadas con los tipos MIME. Revise
XDG MIME Applications#lsdesktopf
fbrokendesktop
El script
fbrokendesktop
AUR
detecta claves
Exec
rotas, con valores que apuntan a rutas que no existen, si se ejecuta sin argumentos este utiliza directorios preestablecidos en la matriz
DskPath
. Solo muestra archivos
.desktop
rotos con la ruta completa y el nombre del archivo que falta.
Ejemplos:
$ fbrokendesktop
$ fbrokendesktop /usr
$ fbrokendesktop /usr/share/xsessions/icewm.desktop
Consejos y trucos
Modificar archivos de escritorio
Para archivos
.desktop
de todo el sistema (por ejemplo, los instalados desde un paquete), primero copie el archivo
.desktop
relevante (por ejemplo, de
/usr/share/applications/
) a
$XDG_DATA_HOME/applications/
(por ejemplo,
~/.local/share/applications/
). Esto evita que sus cambios se sobrescriban cuando el paquete se actualiza durante el
actualizaciones del sistema
.
Los archivos locales
.desktop
específicos del usuario deberían tener prioridad automáticamente sobre los archivos de todo el sistema. Ahora puede modificar el archivo
.desktop
específico del usuario local según sea necesario.
Nota
Si ha configurado una aplicación para que se inicie automáticamente, es posible que ya haya una copia de la entrada del escritorio del sistema en
$XDG_CONFIG_HOME/autostart
, acorde al
autoarranque de XDG
. Si desea modificar el comportamiento solo durante el inicio automático, proceda a editar este archivo. En caso contrario, si desea modificar el comportamiento en todas las circunstancias, deberá:
Mover el archivo de
$XDG_CONFIG_HOME/autostart/
a
$XDG_DATA_HOME/applications
.
Usando
ls -l
, asegúrese de que esta entrada del escritorio sea un archivo normal que pueda editar y no un enlace a la ubicación del sistema. Si es un enlace, reemplácelo con una copia del original como se describe arriba.
Haga un enlace simbólico al directorio de la aplicación del usuario (los directorios XDG predeterminados se sustituyen por conveniencia):
ln -s ~/.local/share/applications/
desktop_entry
~/.config/autostart/
Ahora, el archivo en su lanzador de aplicaciones permanecerá igual que el archivo que está en el autoarranque.
Modificar variables de entorno
para declarar una
variable de entorno
, en el archivo
.desktop
, edite la clave {ic|1=Exec=}} para usar el comando
env(1)
antes de ejecutar el comando objetivo. Por ejemplo, con la linea original comentada:
~/.local/share/applications/abiword.desktop
...
# Exec=abiword %U
Exec=env LANG=he_IL.UTF-8 abiword %U
...
Tambien remueva
DBusActivatable=true
(o declarelo como
false
), si está presente la clave
Exec
será ignorada.
[1]
Modificar los argumentos de la linea de comandos
Para cambiar o agregar argumentos a la linea de comandos, edite la clave
Exec=
para agregar los argumentos deseados. Por ejemplo, con la linea original comentada:
~/.local/share/applications/steam.desktop
...
# Exec=/usr/bin/steam-runtime %U
Exec=/usr/bin/steam-runtime -no-browser %U
...
Tambien remueva
DBusActivatable=true
(o declarelo como
false
), si está presente la clave
Exec
será ignorada.
[2]
Esconder entradas de escritorio
La visibilidad de la entrada de escritorio puede ser controlada de múltiples maneras. Revise la
Especificación de entradas de escritorio
para mas información.
Añada una de las siguientes lineas a su archivo
.desktop
:
Todos
los entornos de escritorio, escoja una (o ambas) de las siguientes formas:
Añada la linea
NoDisplay=true
para las aplicaciones que no quiera que sean vistas en los menús de aplicaciones.
Add the line
Hidden=true
para aplicaciones que considere borradas y no quiera mostrar en los menús de aplicaciones.
Entorno de escritorio
Especificado
, escoja una de las siguientes opciones, donde
desktop_names
es una lista de entornos de escritorios delimitados por punto y coma (Por ejemplo.
GNOME
,
GNOME;Xfce;KDE;
):
Añada la linea
NotShowIn=
desktop_names
para
esconder
la entrada solo en los entornos de escritorio especificados.
Añada la linea
OnlyShowIn=
desktop_names
para
mostrar
la entrada solo en los entornos de escritorio especificados.
Véase también
Wikipedia:es:Acceso directo#UNIX
Información para desarrolladores