InicioLinuxEditar el menú de LXPANEL
Script para editar el menú de LXPANEL de manera gráfica




Si, ya sé que todos saben editar el menú de lxpanel, pero... ¿no les parece muy poco práctico editarlo a mano?

Esto me llevó a practicar un poco en bash, y el resultado fue un simple script que van a ver más abajo.
Tal vez algunos de ustedes hayan hecho, o encontrado, algún script para editarlo rapidamente, pero como no encontré ninguno y hay muchos novatos que no saben nada de bash, quise compartirlo con ustedes.

En resúmen, lo que hace el script es editar los archivos con extensión ".desktop" que están en el directorio "/usr/share/applications", y cambia el valor de la variable "NoDisplay" de cada uno, si esta variable no se encuentra, la agrega en la última línea del archivo. Todo esto lo controlamos mediante una caja de diálogos hecha en zenity (tienen que tenerlo instalado).
Obviamente, para editar los archivos hay que ejecutar el script como administrador.

sudo sh lxmenu-editor

EDIT: Dejo el link de pastebin porque algunos tuvieron problemas al copiarlo desde acá.


Los invito a mirar el código. Correcciones o críticas constructivas son bienvenidas


#!/bin/bash

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} ' )
    if [ "$INVALOR" = "true" ]; then
        echo "+ false +"  >> lxcheckbox.txt
    fi
    if [ "$INVALOR" = "false" ]; then
        echo "+ true +"  >> lxcheckbox.txt
    fi
    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)

OPCION=$(eval zenity --title="Edita el menú de LXPANEL" --width=300 --height=550 --list --checklist --multiple --column="Mostrar" --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} ' | sed -e "s# #""#g" )
    
        for d in "${OPCION1[@]}"
        do
            OPCION2=${OPCION1[$CONTADOR1]}
            if [ "$OPCION2" = "$ARCHIVO" ]; 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



Propia
Datos archivados del Taringa! original
0puntos
486visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

G
Geert🇦🇷
Usuario
Puntos0
Posts11
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.