Jump to content

# Desktop entries (Español)

From ArchWiki

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-open1 (deepin-api) | Sí | Parcial |
Enlightenment | enlightenment_open (enlightenment) |  |  |
KDE Plasma | kde-open2 (kde-cli-tools) | Sí | Sí | Sí
LXDE | pcmanfm (pcmanfm) |  |  |
LXQt | – |  |  |
Xfce | exo-open3 (exo) |  |  |
Independiente | gtk-launch4 (gtk3) | No | Parcial | No
dex (dex) | Sí | Sí | No
xdg-open (xdg-utils) | No | Inestable | No

1. Los archivos .desktop de tipo Application necesitan tener declarado el bit ejecutable para poder se lanzador por dde-open
2. 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)
3. Tambien se intentará usar gio (de glib2)
4. 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 usaricotool (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 tvbrowserAUR, 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:

1. `$HOME/.icons` (Por compatibilidad con versiones anteriores)
2. `$XDG_DATA_DIRS/icons`
3. `/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 arronaxAUR 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

jddesktopentryeditAUR es un programa gráfico que usa Qt y permite editar entradas de escritorio.

### MenuLibre

menulibreAUR 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

lsdesktopfAUR 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 fbrokendesktopAUR 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

Categories:

- Freedesktop.org (Español)
- Configuration files (Español)
- Package development (Español)

Desktop entries (Español)
Add topic