Como posso remover todos os applets de um painel MATE?

4

Gostaria de saber como posso remover todos os applets de um determinado painel no MATE (no meu caso, o painel inferior) a partir da linha de comando.

O painel deve ser deixado em um estado limpo, ou seja, sem applets apenas no painel. Praticamente o oposto de o que fiz aqui . Acredito que a resposta que cheguei aqui deve ter algumas pistas do que fazer, mas, novamente, não sou bom em escrever scripts .

Como eu faria isso?

    
por Uri Herrera 26.12.2012 / 01:38

1 resposta

2

Na verdade, é o mesmo script . Mas SEM a parte de exclusão do painel. Eu também mudo DEL_PANEL para TARGET_PANEL para evitar confusão.

TARGET_PANEL é o nome do painel do painel a ser alterado.

#!/bin/bash

PANEL_PATH="${HOME}/.mateconf/apps/panel"
TARGET_PANEL='bottom_panel_screen0'

    echo 'DEBUG: Panel Path' ${PANEL_PATH}
    echo 'DEBUG: Panel to be altered' ${TARGET_PANEL}

# - APPLETS
# -- Identify applet to be deleted

cd ${PANEL_PATH}/applets
DEL_APPLET='grep -r ${TARGET_PANEL} *|cut -d\/ -f1'

    echo 'DEBUG: DEL_APPLET' ; for i in ${DEL_APPLET} ; do echo -e "DEBUG: \t${i}" ; done

# -- Get old applet id list

APPLET_ID_LIST_OLD='mateconftool-2 -g /apps/panel/general/applet_id_list | cut -d\[ -f2 | cut -d\] -f1 | sed 's/,/ /g''

    echo 'DEBUG: Old applet_id_list' ${APPLET_ID_LIST_OLD}

# -- Generate new applet id list

APPLET_ID_LIST_NEW=''
for i in ${APPLET_ID_LIST_OLD}
do
    if [[ "$DEL_APPLET" != *"${i}"* ]]
    then
        echo -e "DEBUG: \tKeep ${i}"
        APPLET_ID_LIST_NEW="${APPLET_ID_LIST_NEW} ${i}"
    else
        echo -e "DEBUG: \tDel  ${i}"
        # -- Delete applet folder
        rm -rf ${PANEL_PATH}/applets/${i}
    fi
done
APPLET_ID_LIST_NEW="['echo ${APPLET_ID_LIST_NEW} | sed 's/ /,/g'']"

# -- Apply new applet id list
mateconftool-2 -s /apps/panel/general/applet_id_list -t list --list-type=string "${APPLET_ID_LIST_NEW}"

    echo 'DEBUG: New applet_id_list' 'mateconftool-2 -g /apps/panel/general/applet_id_list'


# - OBJECTS
# -- Identify object to be deleted

cd ${PANEL_PATH}/objects
DEL_OBJECT='grep -r ${TARGET_PANEL} *|cut -d\/ -f1'

    echo 'DEBUG: DEL_OBJECT' ; for i in ${DEL_OBJECT} ; do echo -e "DEBUG: \t${i}" ; done

# -- Get old object id list

OBJECT_ID_LIST_OLD='mateconftool-2 -g /apps/panel/general/object_id_list | cut -d\[ -f2 | cut -d\] -f1 | sed 's/,/ /g''

    echo 'DEBUG: Old object_id_list' ${OBJECT_ID_LIST_OLD}

# -- Generate new object id list

OBJECT_ID_LIST_NEW=''
for i in ${OBJECT_ID_LIST_OLD}
do
    if [[ "$DEL_OBJECT" != *"${i}"* ]]
    then
        echo -e "DEBUG:\tKeep ${i}"
        OBJECT_ID_LIST_NEW="${OBJECT_ID_LIST_NEW} ${i}"
    else
        echo -e "DEBUG:\tDel  ${i}"
        # -- Delete object folder
        rm -rf ${PANEL_PATH}/objects/${i}
    fi
done
OBJECT_ID_LIST_NEW="['echo ${OBJECT_ID_LIST_NEW} | sed 's/ /,/g'']"

# -- Apply new object id list
mateconftool-2 -s /apps/panel/general/object_id_list -t list --list-type=string "${OBJECT_ID_LIST_NEW}"

    echo 'DEBUG: New applet_id_list' 'mateconftool-2 -g /apps/panel/general/object_id_list'
    
por John Siu 26.12.2012 / 03:58