3 formas de editar el menú de LXDE
Si bien no es una tarea que yo haga muy seguido, cada tanto se me da por toquetear el menú de LXDE. Más que nada me pasa porque después de actualizar algún programa (libreoffice me vuelve loco) aparecen íconos que no quiero que molesten en el menú, o porque algún programa nuevo se agrega al menú en algún lugar que no quiero. Hay varias formas de editar el menú.
Hay varias formas de editar el menú, abajo describo tres que me han venido bien (aunque una de ellas es un recordaorio, ya que ya fue posteada por el autor acá en T!).
A lo macho
Como explican en la WIKI DE LXDE , para editar los elementos del menú de LXDE se usan los archivos .desktop que están en una de estas dos carpetas (generalmente la primera, y por lo tanto, para editarlos necesitan permisos de root):
/usr/share/applications
~/.local/share/applications
Para crear un elemento nuevo o editarlo hay que usar un editor de texto. Supongamos que queremos crear un lanzador en el menú para el script de @Geert (ver más abajo para qué sirve), pero los pasos sirven para cualquier lanzador que ya esté en el menú. Lo primero es crear (o modificar si ya existe) el archivo .desktop, y para eso hay que poner en la terminal:
cd /usr/share/applications
sudo leafpad lxmenu-editor.desktop
y con eso les va a abrir un archivo en blanco (salvo que ya exista el archivo, y lo estén queriendo modificar, obvio, ya no hago más esta aclaración), en el que les tiene que terminar quedando algo más o menos así:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Editar menú
Comment=Editor de menú LXDE
Categories=Utility
Exec=gksu sh "/ruta_al_archivo/nombre_del_archivo"
Icon=menu-editor
Terminal=false
NoDisplay=false
Estas opciones se usan para:
[Desktop Entry] - indica que es un archivo .desktop
Encoding=UTF-8 - se usa la codificación UTF-8
Type=Application - indica que con este archivo es para iniciar una aplicación
Name=Editar menú - el nombre que se va a ver en el menú
Comment=Editor del menú de LXDE - un comentario/descripción de la aplicación
Categories=Utility - especifica la categoría en la que se va a incluir este elemento en el menú. Las categorías principales son sólo éstas: AudioVideo, Development, Education, Game, Graphics, Network, Office, Settings, System, Utility. También se pueden agregar ESTAS subcategorías específicas, y para eso hay que separarlas con ;
Exec=gksu sh "/ruta_al_archivo/nombre_del_archivo" - comando que se va a usar para iniciar el programa
Icon=menu-editor - ruta y nombre del ícono que quieran usar
Terminal=false - en este caso indica que el programa no se va a ejecutar en una terminal
NoDisplay=false - este código indica si el ícono se va a mostrar o no en el menú. Si está en false va a aparecer en el menú, y si está en true, no va a aparecer.
lxmenu-editor
Este script creado por @Geert y explicado en permite seleccionar cuáles de los archivos .desktop que hay en /usr/share/applications se van a ver en el menú. Es súper rápido y útil si se quieren dejar de ver varios íconos a la vez (a mí me pasa cuando se actualiza libreoffice, porque se cren nuevamente los .desktop y se ven un montón de aplicaciones que ni uso ni voy a usar). En este caso es muchísimo más práctico que ir abriendo uno por uno todos los archivos .desktop que no se quieren ver.
Acá va el script:
#!/bin/bash
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#################################################################################
#
# Contact: [email protected]
#
RUTA=(/usr/share/applications/*.desktop)
CONTADOR=0
IFS=":"
for i in "${RUTA[@]}"
do
ACTUAL=${RUTA[$CONTADOR]}
VERIFICAR=$(cat $ACTUAL | awk '/NoDisplay/ {print "1"}' )
if [ "$VERIFICAR" != "1" ]; then
printf "n" >> $ACTUAL ; printf "NoDisplay=false" >> $ACTUAL
fi
let CONTADOR=$CONTADOR+1
done
CONTADOR=0
for b in "${RUTA[@]}"
do
ACTUAL=${RUTA[$CONTADOR]}
ARCHIVO=$(echo $ACTUAL | sed "s#/usr/share/applications/#""#")
INVALOR=$(cat $ACTUAL | awk -F"=" '/NoDisplay/ {print $2} ' )
NOMBRE1=$(cat $ACTUAL | awk -F"=" '/^Name=/ {print $2; exit}' | sed -e "s#[ |:]#+#g")
NOMBRE="'$NOMBRE1' + "
if [ "$INVALOR" = "true" ]; then
echo "+ false +" >> lxcheckbox.txt
fi
if [ "$INVALOR" = "false" ]; then
echo "+ true +" >> lxcheckbox.txt
fi
sed -e '$s#$# '$NOMBRE# -i lxcheckbox.txt
sed -e '$s#$# '$ARCHIVO# -i lxcheckbox.txt
let CONTADOR=$CONTADOR+1
done
REMOVER=$(cat lxcheckbox.txt | tr -d ' n' | sed -e "s#+# #g")
echo $REMOVER > lxcheckbox.txt
CHECKBOX=$(cat lxcheckbox.txt)
echo $CHECKBOX > checkbox0.txt
OPCION=$(eval zenity --title="Edita el menú de LXPANEL" --width=300 --height=550 --list --checklist --multiple --column="Mostrar" --column="Nombre" --column="Item" $CHECKBOX --separator=":" )
OPCION1=($OPCION)
CONTADOR=0
CONTADOR1=0
ENCONTRADO=0
if [ "$OPCION1" != "" ]; then
for c in "${RUTA[@]}"
do
ACTUAL=${RUTA[$CONTADOR]}
ARCHIVO=$(echo $ACTUAL | sed "s#"/usr/share/applications/"#""#")
VALOR=$(cat $ACTUAL | awk -F"=" '/NoDisplay/ {print $2} ' )
NOMBRE=$(cat $ACTUAL | awk -F"=" '/^Name=/ {print $2; exit}' | sed -e "s#[ |:]# #g")
for d in "${OPCION1[@]}"
do
OPCION2=${OPCION1[$CONTADOR1]}
if [ "$OPCION2" = "$NOMBRE" ]; then
ENCONTRADO=1
fi
let CONTADOR1=$CONTADOR1+1
done
if [ "$ENCONTRADO" = "1" -a "$VALOR" = "true" ]; then
sed -e 's/NoDisplay=true/NoDisplay=false/g' -i "$ACTUAL"
fi
if [ "$ENCONTRADO" = "0" -a "$VALOR" = "false" ]; then
sed -e 's/NoDisplay=false.*/NoDisplay=true/g' -i "$ACTUAL"
fi
ENCONTRADO=0
CONTADOR1=0
let CONTADOR=$CONTADOR+1
done
fi
rm lxcheckbox.txt
LXMenuEditor (lxmed)
LXMenuEditor es un programa escrito en Java, con muchas más opciones y que permite una edición gráfica bastante más completa del menú, pero que no es tan cómodo si sólo se quieren agregar o quitar varios íconos.
Agregar y quitar elementos al menú
Al abrirlo (Preferencias -> Main Menu Editor) se ve algo como esto:
(en negrita, en el panel de la derecha, están los íconos que se ven en el menú)
No creo que haga falta aclarar esto, pero por las dudas... para quitar un elemento hay que marcarlo en el panel de la derecha y apretar el botón Delete, y para crear uno nuevo, New Item
Mover y editar elementos
Lo primero es marcar el elemento que se quiera editar y apretar Properties, y les saldrá una ventana como esta:
Si lo que quieren es moverlo de categoría, sólo hay que elegir la nueva del menú desplegable (Category). Ahí también le pueden cambiar (en este orden) el nombre, el binario o el comando con el que se lo ejecuta, la descripción, el ícono, y si va a estar visible en el menú o no. Esta ventanaes la misma que se les va a abrir si eligen la opción de crear un elemento nuevo.
Editar el código directamente
Si en la ventana anterior eligen la opción Edit code manually, les va a abrir una ventana nueva en la que van a poder editar el código como se explica en la primera sección de este post.
Pueden bajar lxmed de ACÁ , y si no saben cómo instalarlo/desinstalarlo, sigan ESTAS INSTRUCCIONES (están en inglés). Para los que tienen Arch es más fácil:
yaourt -S lxmed
Si lo que quieren es algo más complejo, como crear nuevos menús o submenús dentro del menú principal, en van a encontrar una guía. No es tan complicado como pareceal principio.
Espero que a alguno le interese. Mientras tanto yo sigo sin poder descubrir cómo hacer para agregar elementos al menú de Wine.