Jump to content
From ArchWiki
Esta traducción de Xdg-menu fue revisada el 2022-10-03. Si existen cambios puede actualizarla o avisar al equipo de traducción.

xdg-menu es una herramienta que genera Menus de XDG Desktop para los siguientes gestores de ventanas:

- awesome
- Blackbox
- Fluxbox
- FVWM2
- IceWM
- Openbox
- twm
- Window Maker

KDE, GNOME, Xfce y Enlightenment ya son compatibles con XDG.

## Instalación

Instale el paquete archlinux-xdg-menu.

## Jerarquía del menú

- Aplicaciones
  - Accesibilidad
  - Accesorios
  - Desarrollo
  - Educación
  - Juegos
  - Gráficos
  - Internet
  - Multimedia
  - Oficina
  - Otros
  - Ciencia
  - Sistema

## Configuración

xdg_menu ocupa tres fuentes para generar menús: el menú raíz, o en otras palabras, una plantilla de menú XML usualmente pasada por la consola; la fecha en cache de cuando se ejecutó por ultima vez; y una serie de archivos de configuración.

- Puede encontrar plantillas de menú XML en `/etc/xdg/menus`.
- Si cambia el código en `xdg_menu`} para alterar el diseño, asegúrese de eliminar todo en `~/.xdg_menu_cache`, o va a pasar horas tratando de descifrar porque no se aplican sus cambios en el script de Perl.
- Puede encontrar los archivos de configuración individuales de las aplicaciones en `/usr/share/applications`.

Hay más carpetas con archivos de configuración en `/usr/share`. En la mayoría de los casos no necesitará tocar esos. Aunque sí quiere cambiar ligeramente el diseño de su menú, puede modificar la plantilla. Los cambios más drásticos requieren que cambie el script de Perl `xdg_menu`. Si encuentra que las aplicaciones no aparecen o que tienen nombres raros, tendrá que ver su archivo `.desktop` en `/usr/share/applications`. Vea la especificación de entradas de escritorio.

### Añadiendo entradas de escritorio desde otros directorios

Por defecto, el Xdg-menu sera populado con las aplicaciones que instales sus entradas de escritorio en `/usr/share/applications`. Para añadir aplicaciones que instalan sus entradas de escritorio en una carpeta de usuario como `~/.local/share/applications` edite el archivo `/etc/xdg/menus/arch-applications.menu` y añada una etiqueta `<AppDir>` para el directorio deseado, como en lo siguiente:

    /etc/xdg/menus/arch-applications.menu

    <Menu>

      <Name>Applications</Name>
      <Directory>Arch-Applications.directory</Directory>
      <DefaultAppDirs/>
      <AppDir>/home/nombre-de-usuario/.local/share/applications</AppDir>
      <DefaultDirectoryDirs/>
      <DefaultMergeDirs/>
      ...

## Uso (en inglés)

### xdg_menu

    xdg_menu [--format <format>] [--desktop <desktop>]
             [--charset <charset>] [--language <language>]
    	 [--root-menu <root-menu>] [--die-on-error]
    	 [--fullmenu] [--help]

    	format - output format
    	         possible formats: twm, WindowMaker, fvwm2, icewm, ion3
    	                           blackbox, fluxbox, openbox,
    				   xfce4, openbox3, openbox3-pipe, awesome
    				   readable
    		 default: WindowMaker

     	fullmenu  - output a full menu and not only a submenu

    	desktop - desktop name for NotShowIn and OnlyShowIn
    		 default: the same as format

    	charset - output charset
    		 default: <locale>

    	language - output language
    		 default: <locale>

    	root-menu - location of root menu file
    		 default: /opt/gnome/etc/xdg/menus/applications.menu

    	die-on-error - abort execution on any error,
    		 default: try to continue

    	verbose - print debugging information

    	help - print this text

### update-menus

update-menus actualiza los menús de los gestores de ventanas con los datos de XDG y puede hacerlo automáticamente configurándolo.

Es un wrapper de xdg_menu que depende de `/etc/update-menus.conf`

Para usarlo, debe instalar el paquete archlinux-xdg-menu (xdg_menu)

En `/etc/update-menus.conf` debe seleccionar desde una lista de gestores de ventanas para los cuales quiere generar el menú. Puede poner comentarios con #.

Los menús son generados en `/var/cache/xdg-menu/`. Vea información especifica para varios gestores de ventanas en la sección #Ejemplos.

## Ejemplos

### Awesome

#### Con xdg_menu

    $ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu > ~/.config/awesome/archmenu.lua

Y, edite su `rc.lua` como se muestra más abajo.

- Añada una declaración `statment` para su nuevo archivo `menu.lua`.
- Añada una entrada para su objeto `awful.menu` para su nuevo menú que invoca a `xdg-menu`.

    ...
    xdg_menu = require("archmenu")
    ...

    ...
    mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                        { "Applications", xdgmenu },
                                        { "open terminal", terminal }
                                      }
                            })
    ...

### IceWM

#### Con xdg_menu

    $ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/arch-applications.menu >> ~/.icewm/programs

#### Con update-menus

- Descomente icewm en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Enlace `/var/cache/xdg-menu/icewm/programs` a `~/.icewm/programs`.

### FluxBox

#### Con xdg_menu

    $ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu > ~/.fluxbox/mi-menu

Cambie su archivo de menú para que incluya el menú generado.

Por ejemplo, añada la linea:

    [include] (mi-menu)

#### Con update-menus

- Descomente fluxbox en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Cambie su archivo de menú para que incluya el menú generado.

Por ejemplo, añada la linea:

    [include] (/var/cache/xdg-menu/fluxbox/boxrc)

### OpenBox

#### Con xdg_menu

Genere el menú con:

    $ xdg_menu --format openbox3 --root-menu /etc/xdg/menus/arch-applications.menu > xdg-menu.xml

Y añadalo manualmente a su `menu.xml`. Por ejemplo, agregue `xdg-menu.xml` en `menu.xml` y añada:

    <menu id="Applications" />

En root-menu.

#### Como pipe menu (menú de tubería)

Usar xdg_open como menú de tubería tiene el beneficio añadido de tener un menú que se actualiza automáticamente cuando se instalan aplicaciones nuevas.

Añada lo siguiente en alguna parte de su menu.xml entre las etiqueta de su menú raíz (root menu):

    <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />

Un ejemplo básico:

    <?xml version="1.0" encoding="UTF-8"?>

    <openbox_menu xmlns="http://openbox.org/3.4/menu">

    <menu id="root-menu" label="Openbox 3">
      <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />
      <separator />
      <item label="Log Out">
        <action name="Exit">
          <prompt>yes</prompt>
        </action>
      </item>
    </menu>

    </openbox_menu>

#### Con update-menus

- Descomente openbox en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Cambie su archivo `menu.xml` para que incluya el menú generado.

Por ejemplo, añada lo siguiente a `root-menu`:

    <menu id="xdg-menu" label="XDG Menu" execute="cat /var/cache/xdg-menu/openbox/menu.xml"/>

### Twm

#### Con xdg_menu

Ejecute:

    $ xdg_menu --format twm --root-menu /etc/xdg/menus/arch-applications.menu >menu-twm

Y añadalo manualmente a `twmrc`. En el caso de un derivado de twm con preprocesado m4 como vtwm o ctwm, puede ser incluido añadiendo:

    sinclude(`/UBICACION/DE/SU/menu-twm')

A `*twmrc`.

#### Con update-menus

- Descomente twm en `/etc/update-menus.conf`.
- Añada a `/etc/X11/twm/system.twmrc` un archivo de menú de aplicaciones (añadalo en `defops menu`):

     "apps"          f.menu "Applications"

- Ejecute `update-menus` como root.
- Ejecute `twm -f /var/cache/xdg-menu/twm/twmrc`.

Sugerencia: También puede querer añadir sus otras personalizaciones a `/etc/X11/twm/system.twmrc`.

### WindowMaker

#### Con xdg_menu

Ejecute:

    $ xdg_menu --format WindowMaker --root-menu /etc/xdg/menus/arch-applications.menu >mi-menu-wm

Y añada:

    #include "mi-menu-wm"

En su archivo de menú de WindowMaker.

También puede usar «Application Menu Definitions» en WPrefs, y añadir el comando de xdg como parámetro en el objeto «Generated Submenu».

#### Con update-menus

- Descomente WindowMaker en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Añada:

    #include "/var/cache/xdg-menu/WindowMaker/wmrc"

A su archivo de menú.

### Fvwm2

#### Con xdg_menu

Genere el menú:

    $ xdg_menu --format fvwm2 --root-menu /etc/xdg/menus/arch-applications.menu >fvwm2-menu

Y añada el menú en el menú raíz:

    read fvwm2-menu

    AddToMenu MenuFvwmRoot  "Root Menu"             Title
    +                       "&0. XDG Menu"          Popup xdg_menu

#### Con update-menus

- Descomente fvwm2 en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Cambie su archivo `.fvwm2rc` para que incluya el menú generado. Por ejemplo:

    AddToMenu MenuFvwmRoot  "Root Menu"             Title
    +                       "&0. XDG Menu"          Popup xdg_menu

    read /var/cache/xdg-menu/fvwm2/fvwm2rc

### BlackBox

#### Con xdg_menu

    $ xdg_menu --format blackbox --root-menu /etc/xdg/menus/arch-applications.menu >mi-menu

Cambie su archivo de menú para que incluya el menú generado.

Por ejemplo, añada la linea:

    [include] (mi-menu)

#### Con update-menus

- Descomente blackbox en `/etc/update-menus.conf`.
- Ejecute `update-menus` como root.
- Cambie su archivo de menú para que incluya el menú generado.

Por ejemplo, añada la linea:

    [include] (/var/cache/xdg-menu/blackbox/boxrc)

## Véase también

- Sawfish#Menus
- https://github.com/gapan/xdgmenumaker

Category:

- Freedesktop.org (Español)