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