Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Especificación de menús de freedesktop.org»

(Nueva página: =Introducción= Este "estándar" define como construir una jerarquía de aplicaciones para ser mostrada como menú. Siguiendo este estándar es muy sencillo para los desarrolladores d...)
 
Línea 1: Línea 1:
=Introducción=
+
==Introducción==
 
Este "estándar" define como construir una jerarquía de aplicaciones para ser mostrada como menú. Siguiendo este estándar es muy sencillo para los desarrolladores de software agregar sus aplicaciones al menú del sistema, así como hace que el administrador del sistema pueda editar la estructura del menú (y agregar o quitar aplicaciones) de forma que esto se refleje en el menú de todos los usuarios del sistema.
 
Este "estándar" define como construir una jerarquía de aplicaciones para ser mostrada como menú. Siguiendo este estándar es muy sencillo para los desarrolladores de software agregar sus aplicaciones al menú del sistema, así como hace que el administrador del sistema pueda editar la estructura del menú (y agregar o quitar aplicaciones) de forma que esto se refleje en el menú de todos los usuarios del sistema.
  
Línea 6: Línea 6:
 
El "estándar" puede ser encontrado en [http://freedesktop.org|freedesktop.org]
 
El "estándar" puede ser encontrado en [http://freedesktop.org|freedesktop.org]
  
=Organización en el filesystem=
+
==Organización en el filesystem==
 
freedesktop.org define una serie de directorios entre los cuales distribuyen archivos ".menu" con formato XML en los cuales se define la jerarquía del menú, archivos ".directory" en texto plano y divididos en "grupos", en los cuales se específica el nombre y descripción (en varios idiomas), y el icono de cada nodo no terminal de la jerarquía (léase directorio). Por último se pueden encontrar archivos ".desktop" de formato y funcionalidad similar a los ".directory" con la diferencia de que los ".desktop" describen a los nodos terminales de la jerarquía (léase aplicaciones).  
 
freedesktop.org define una serie de directorios entre los cuales distribuyen archivos ".menu" con formato XML en los cuales se define la jerarquía del menú, archivos ".directory" en texto plano y divididos en "grupos", en los cuales se específica el nombre y descripción (en varios idiomas), y el icono de cada nodo no terminal de la jerarquía (léase directorio). Por último se pueden encontrar archivos ".desktop" de formato y funcionalidad similar a los ".directory" con la diferencia de que los ".desktop" describen a los nodos terminales de la jerarquía (léase aplicaciones).  
 
Para separarse de la implementación, el estándar no establece el path absoluto para encontrar los archivos sino que establece una serie de variables de entorno que deberían contener el path definido por la implementación, estas variables son:  
 
Para separarse de la implementación, el estándar no establece el path absoluto para encontrar los archivos sino que establece una serie de variables de entorno que deberían contener el path definido por la implementación, estas variables son:  
Línea 13: Línea 13:
 
*$XDG_DATA_DIRS -> Su valor debe ser el directorio que contenga otro directorio llamado applications con los archivos ".desktop" y un directorio llamado desktop-directories con los archivos ".directory"(en Lihuen $XDG_DATA_DIRS == /usr/share)  
 
*$XDG_DATA_DIRS -> Su valor debe ser el directorio que contenga otro directorio llamado applications con los archivos ".desktop" y un directorio llamado desktop-directories con los archivos ".directory"(en Lihuen $XDG_DATA_DIRS == /usr/share)  
  
=Sintáxis de los archivos .desktop y .directory=
+
==Sintáxis de los archivos .desktop y .directory==
 
Estos archivos están divididos en "grupos" cuyas cabeceras se escriben entre '[' y ']', un grupo es obligatorio y tienen la cabecera [Desktop Entry], dentro de él se definen los atributos de cada nodo de la jerarquía (aplicaciones y directorios), estos atributos se escriben de la forma Clave=Valor un ejemplo de un nodo terminal es:  
 
Estos archivos están divididos en "grupos" cuyas cabeceras se escriben entre '[' y ']', un grupo es obligatorio y tienen la cabecera [Desktop Entry], dentro de él se definen los atributos de cada nodo de la jerarquía (aplicaciones y directorios), estos atributos se escriben de la forma Clave=Valor un ejemplo de un nodo terminal es:  
 
  1 [Desktop Entry]  
 
  1 [Desktop Entry]  

Revisión de 20:35 25 sep 2007

Introducción

Este "estándar" define como construir una jerarquía de aplicaciones para ser mostrada como menú. Siguiendo este estándar es muy sencillo para los desarrolladores de software agregar sus aplicaciones al menú del sistema, así como hace que el administrador del sistema pueda editar la estructura del menú (y agregar o quitar aplicaciones) de forma que esto se refleje en el menú de todos los usuarios del sistema.

En este documento damos una explicación práctica de como podemos utilizar este estándar para armar una estructura de menú en Gnome.

El "estándar" puede ser encontrado en [1]

Organización en el filesystem

freedesktop.org define una serie de directorios entre los cuales distribuyen archivos ".menu" con formato XML en los cuales se define la jerarquía del menú, archivos ".directory" en texto plano y divididos en "grupos", en los cuales se específica el nombre y descripción (en varios idiomas), y el icono de cada nodo no terminal de la jerarquía (léase directorio). Por último se pueden encontrar archivos ".desktop" de formato y funcionalidad similar a los ".directory" con la diferencia de que los ".desktop" describen a los nodos terminales de la jerarquía (léase aplicaciones). Para separarse de la implementación, el estándar no establece el path absoluto para encontrar los archivos sino que establece una serie de variables de entorno que deberían contener el path definido por la implementación, estas variables son:

  • $XDG_CONFIG_DIRS -> Su valor debe ser el directorio que contenga otro directorio llamado menus con los archivos ".menu" (en Lihuen $XDG_CONFIG_DIRS == /etc/xdg)
  • $XDG_DATA_DIRS -> Su valor debe ser el directorio que contenga otro directorio llamado applications con los archivos ".desktop" y un directorio llamado desktop-directories con los archivos ".directory"(en Lihuen $XDG_DATA_DIRS == /usr/share)

Sintáxis de los archivos .desktop y .directory

Estos archivos están divididos en "grupos" cuyas cabeceras se escriben entre '[' y ']', un grupo es obligatorio y tienen la cabecera [Desktop Entry], dentro de él se definen los atributos de cada nodo de la jerarquía (aplicaciones y directorios), estos atributos se escriben de la forma Clave=Valor un ejemplo de un nodo terminal es:

1 [Desktop Entry] 
2 Name=PDF viewer 
3 Name[es]=Visor PDF 
4 Comment=The xpdf viewer 
5 Comment[es]=El visor xpdf 
6 Exec=/usr/bin/xpdf 
7 TryExec=/usr/bin/xpdf 
8 Icon=xpdf.png 

(los números a la izquierda no van, son sólo para hacer referencia a cada linea) Explicación: 1 La cabecera del "grupo". 2 El nombre por defecto de la aplicación (es el nombre que se mostrará si no configuramos el idioma de nuestro sistema). 3 El nombre en español de la aplicación(es el nombre que se mostrará si el idioma de nuestro sistema es el español). 4 El comentario por defecto de la aplicación (se mostrará, normalmente, al posar el cursor sobre el nodo si no configuramos el idioma de nuestro sistema). 5 El comentario en español de la aplicación (se mostrará, normalmente, al posar el cursor sobre el nodo si el idioma de nuestro sistema es el español). 6 El programa a ejecutar (se puede evitar el path si el directorio que lo contiene se encuentra en la variable de entorno $PATH). 7 Se verifica la existencia de este archivo, si no existe esta entrada del menú no se mostrará. 8 El icono a mostrar, se lo busca en una serie de directorios por defecto que incluyen /usr/share/pixmaps y el directorio del tema de escritorio actual.

un ejemplo de un nodo no terminal es:

1 [Desktop Entry] 
2 Name=Office 
3 Name[es]=Oficina 
4 Type=Directory 
5 Icon=office.png

(los números a la izquierda lo van, son sólo para hacer referencia a cada linea) Explicación: 1 La cabecera del "grupo". 2 El nombre por defecto de la aplicación (es el nombre que se mostrará si no configuramos el idioma de nuestro sistema). 3 El nombre en español de la aplicación (es el nombre que se mostrará si el idioma de nuestro sistema es el español). 4 Tipo de archivo 5 El icono a mostrar, se lo busca en una serie de directorios por defecto que incluyen /usr/share/pixmaps y el directorio del tema de escritorio actual. Sintáxis de los archivos .menu: Los archivos ".menu" están en formato XML organizados en forma jerárquica. La mejor forma de mostrar como se construye un archivo ".menu" es con un ejemplo:

1 <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" 
2 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"> 
3 
4 <Menu> 
5 <Name>KDE</Name> 
6 <Directory>kde-main.directory</Directory> 
7 
8  
9 <DefaultAppDirs/> 
10 <DefaultDirectoryDirs/> 
11 
12  
13 <Menu> 
14 <Name>Debian</Name> 
15 <Directory>debian.directory</Directory> 
16 <MergeFile>debian-menu.menu</MergeFile> 
17 </Menu> 
18 
19 <Menu> 
20 <Name>Applications</Name> 
21 <Directory>kde-unknown.directory</Directory> 
22 
23 <Include> 
24 <Not> 
25  
26 <And> 
27 <Category>Core</Category> 
28 <Not><Category>KDE</Category></Not> 
29 </And> 
30  
31 <Category>X-SuSE-YaST</Category> 
32 </Not> 
33 </Include> 
34 </Menu> 
35</Menu> 

Explicación: Lineas Descripción 1 - 2 Cabecera XML 4 Elemento menú, se pueden anidar pero debe un solo elemento raíz 9 Este elemento debe aparecer dentro de <Menu> y no debe tener ningún contenido. Incluir este elemento hace que se busquen los archivos ".desktop" en los directorios por defecto (en la práctica es obligatorio). 10 Este elemento debe aparecer dentro de <Menu> y no debe tener ningún contenido. Incluir este elemento hace que se busquen los archivos ".directory" en los directorios por defecto (en la práctica es obligatorio). 13 - 17 Dentro del elemento <MENU> se definen las características del que será un submenu del menú principal. 14 Nombre del submenu 15 Archivo .directory con el nombre, icono y descripción que se mostrará en el menú 16 Esta entrada hace que el archivo debian-menu.menu se incluya dentro del archivo actual. 23-33 Muestra en el menú los archivos .desktop que cumplan que sus categorías no lo son X-SuSE-YaST ni tampoco los que pertenezcan a la categoría Core y no pertenezcan a KDE

Generar un menú básico Para generar un menú básico en Lihuen, es necesario seguir los siguientes pasos:

1) Crear un archivo /etc/xdg/menus/gnome-applications.menu siguiendo las especificaciones de freedesktop.org.

Por ejemplo:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" 
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"> 

<Menu> 
 <Name>Applications</Name> 
 <Directory>Applications.directory</Directory> 
 
 <LegacyDir>/usr/share/gnome/apps</LegacyDir> 
 <DefaultAppDirs/> 
 <DefaultDirectoryDirs/> 

 <Menu> 
  <Name>Lihuen</Name> 
  <Directory>Lihuen.directory</Directory> 
  <Include> 
   <And> 
    <Category>Lihuen</Category> 
    <Not> 
     <Category>System</Category> 
    </Not> 
   </And> 
  </Include> 
 </Menu> 
</Menu>


2) Crear un archivo /usr/share/desktop-directories/Lihuen.directory con sintáxis correcta.

[Desktop Entry] 
Name=Lihuen 
Name[es]=Lihuen 
Comment=Main menu 
Comment[es]=Menú principal 
Icon=gnome-computer 
Type=Directory 
Encoding=UTF-8 

3) Editar los archivos .desktop que querramos que aparezcan en nuestro menú para que tengan la categoría Lihuen, pero no tengan la categoría System:

[Desktop Entry] 
Version=1.0 
Encoding=UTF-8 
Name=Sin nombre 
Type=Application 
Exec=wrappergksu /usr/sbin/actualizate 
TryExec=/usr/sbin/actualizate 
Icon=/usr/share/pixmaps/lihuen/logo-lihuen.xpm 
X-GNOME-DocPath= 
Terminal=false 
Name[es_ES]=Actualizar Lihuen 
GenericName[es_ES]=Actualizar Lihuen 
Comment[es_ES]=Ejecútalo de vez en cuando para tener tu Lihuen siempre actualizado 
Categories=Lihuen 
GenericName[es_ES@euro]=Actualizar Lihuen