Explicando por que se rompia el menu de aplicaciones tras un update

Bueno , se que este tipo de cosas no importan mucho , pero como es algo interesante y aplicacble a otros linux/escritorios , pues lo voy a explicar un poco por encima.

Muchos habreis visto que tras alguna actualizacion de sistema , el menu de aplicaciones se rompia y todo quedaba en “objetos perdidos”

¿por que sucede esto?

Sucede por que para customizar el menu de aplicaciones y añadir secciones/catgorias y hacer ajustes de tipo ..esta app que no aparezca en esta seccion pero si en la otra que nos gusta mas..etc etc , se venia modificando el fichero menu “principal” ..que se aloja en

Escritorio KDE

Code:
/etc/kde/xdg/menus/applications.menu

Se cogia el menu principal y se trabaja ese fichero haciendo las modificaciones oportumas … pero si por algun motivo , lleva una actualizacion del paquete “kdelibs” , dicho fichero era sobreescrito …y el menu volvia a ser el basico inicial de kde , haciendonos perder todas las secciones que se añaden para customizar el sistema.

Entendiendo que el menu es un fichero del paquete kdelibs , y que si se actualizase volveria a ser “plano” ..ahora parece sencillo entender por que se rompia, ¿verdad?

OK … ¿y como vas a evitar que eso pase de nuevo?

Bien , lo explicare de forma breve y sencilla … existe una forma “correcta” y “elegante” , de añadir secciones y modificaciones al menu , sin  *MALTRATARel menu base , esto seria añadiendo ficheros *.menu en la ruta

Code:
/etc/xdg/menus/applications-merged/

En esa ruta puedes añadir menus , que se añadiran automaticamente al menu inicial sin necesidad de tocar el fichero original.

Por ejemplo …  como hacemos para que en el menu , la seccion “wifislax” , este arriba del todo ..la primera , por encima del resto ..pues asi

Code:
<!DOCTYPE Menu PUBLIC “-//freedesktop//DTD Menu 1.0//EN”
“http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd”>
<Menu>
<Layout>
<Merge type=”menus”/>
<Menuname>Wifislax</Menuname>
<Menuname>Actualizadores</Menuname>
<Menuname>Development</Menuname>
<Menuname>Education</Menuname>
<Menuname>wine-wine</Menuname>
<Menuname>Games</Menuname>
<Menuname>Graphics</Menuname>
<Menuname>Internet</Menuname>
<Menuname>Multimedia</Menuname>
<Menuname>Office</Menuname>
<Menuname>Science</Menuname>
<Menuname>System</Menuname>
<Menuname>Utilities</Menuname>
<Menuname>Applications</Menuname>
<Merge type=”files”/>
<Filename>kde4-kfind.desktop</Filename>
</Layout>
<Menu>
<Name>Settingsmenu</Name>
<Deleted/>
</Menu>
</Menu>

Fijaros en los “menuname”  ..como estan ordenados … , si no hacemos eso , por defecto se ordenarian en orden alfabetico  Wink
Ahora desde wifislax64-1.1-rc4 , esa parte sera un unico fichero .menu llamado

Code:
Orden.menu

Alojado en la ruta anteriormente comentada

Code:
/etc/xdg/menus/applications-merged/

Sin necesidad de tocar el menu original principal  Grin

Otro ejemplo , con otra modificacion  “leve”  , okular , es una app del escritorio kde, la cual aparece en “oficina” ,pero ,,, solo aparece esa con nuestra eleccion de apps por defecto para wifislax, y me parecia un poco trite ya que ademas okular , para abrir ficheros pdf o de otro tipo , ni es siquiera llamada desde el menu ya que al intentar abrir un pdf , automaticamente se abre en okular , esto me hacia pensar que la entrada al menu era innecesaria en principio y hacia “triste” una seccion entera con una solo app , asi que por ndefecto se ocualta en el menu.

Code:
<!DOCTYPE Menu PUBLIC “-//freedesktop//DTD Menu 1.0//EN”
“http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd”>
<Menu>
<Menu>
<Name>Office</Name>
<Directory>kde-office.directory</Directory>
<Include>
<And>
<Category>Office</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Exclude>
<Filename>kde4-okular.desktop</Filename>
</Exclude>
</Menu>
</Menu>

Fijaros al final el exclude y el filename ..

esa pequeña modificacion esta en un solo fichero unico de tipo .menu

y asi con todo …  se entiende ahora entonces que haciendolo asi, es imposible romper de nuevo el menu ya que aunque el menu principal fuese sobreescrito en una actualizacion , muestras modificaciones estaran a salvo en el directorio “merged”

He mostrado dos modificaciones paqueñas , añadir toda una nueva seccion con sus subcategorias es algo mas tedioso , pero una vez hecho , sera permanente.

COMOCIMIENTO EXTRA

Como funciona el tema este de customizar menus ..que se necesita.

Pues basicamente esto funciona asi …

1 – Aplicacion con fichero *.desktop tiene el valor
Categories=

Donde se pone la categoria o categorias si queremos que aparezca en mas de una.

Por ejemplo , wpamagickey , tiene categoria “cifrados”

Para que dicha entrada de menu aparezca , se necesitara que “exista” , la categoria cifrados que es un fichero de tipo  *.directory , el cual crea el directorio (categoria) para albercar las aplicaciones que llamen a esa categoria/seccion.

Los ficheros directori estan en

Code:
/usr/share/desktop-directories/

y por ultimo necesitariamos que nuetsro menu reconociese dicha categoria , para que al ser llamada por algun desktop ,esta categoria fuese ordenada en nuestro menu.

Resumido.

desktop llama a –> directori y directori –> sera ordenado por menu

wpamagickey.desktop  –> cifrados.directory –> menu que reconozca ese directory  ..si no apareceria como objeto perdido.

Por eso al destruir el menu “custom” que contiene “cifrados” que es seccion custom … todos los desktops que busquen entrar en cifrados se marcharian a “perdidos” ..al no tener el fichero  .menu , constancia de dicha categoria de aplicaciones.

Fuente Usuarionuevo