При установке по умолчанию MATE устанавливает две панели (верхнюю и нижнюю), я хотел бы удалить верхнюю панель, используя mateconftool-2
или другой инструмент, использующий командную строку (терминал).
Хотя я не могу найти, как это сделать (из Терминала), поэтому я попытался удалить каталог в ~/.mateconf/apps/panel/toplevels/
и перезапустить панель, но он ничего не делает, и поэтому панель все еще там.
Как удалить одну из панелей , а не , используя GUI ?
После некоторого следа и ошибки, бесчисленного каталога, различного луга файла, и также роющий немного в исходный код Панели Помощника (panel.c), подтвержденное следующее:
Шаг для удаления панели вручную
(1) Все объекты целевой панели должны быть удалены
~/mateconf/app/panel/objects/
/apps/panel/general/object_id_list
в ~/mateconf/app/general/%mateconf.xml
(2) Все апплеты целевой панели должны быть удалены
~/mateconf/app/panel/applets/
/apps/panel/general/applet_id_list
в ~/mateconf/app/general/%mateconf.xml
(3) Удалите панель
~/mateconf/app/panel/toplevels/
/apps/panel/general/toplevel_id_list
в ~/mateconf/app/general/%mateconf.xml
Короче говоря, следующее является результатом
DEL_PANEL является панелью, которая будет удалена. В настоящее время устанавливается на верхнюю панель.
#!/bin/bash
PANEL_PATH="${HOME}/.mateconf/apps/panel"
DEL_PANEL='top_panel_screen0'
echo 'DEBUG: Panel Path' ${PANEL_PATH}
echo 'DEBUG: Panel to be deleted' ${DEL_PANEL}
# -- Get old toplevel id list
TOPLEVEL_ID_LIST_OLD=`mateconftool-2 -g /apps/panel/general/toplevel_id_list | cut -d\[ -f2 | cut -d\] -f1 | sed 's/,/ /g'`
echo 'DEBUG: Old toplevel_id_list' ${TOPLEVEL_ID_LIST_OLD}
# -- Generate new toplevel id list
TOPLEVEL_ID_LIST_NEW=''
for i in ${TOPLEVEL_ID_LIST_OLD}
do
if [[ "$DEL_PANEL" != *"${i}"* ]]
then
echo -e "DEBUG: \tKeep ${i}"
TOPLEVEL_ID_LIST_NEW="${TOPLEVEL_ID_LIST_NEW} ${i}"
else
echo -e "DEBUG: \tDel ${i}"
# -- Delete panel folder
rm -rf ${PANEL_PATH}/toplevels/${i}
fi
done
TOPLEVEL_ID_LIST_NEW="[`echo ${TOPLEVEL_ID_LIST_NEW} | sed 's/ /,/g'`]"
# -- Apply new toplevel id list
mateconftool-2 -s /apps/panel/general/toplevel_id_list -t list --list-type=string "${TOPLEVEL_ID_LIST_NEW}"
echo 'DEBUG: New toplevel_id_list' `mateconftool-2 -g /apps/panel/general/toplevel_id_list`
# - APPLETS
# -- Identify applet to be deleted
cd ${PANEL_PATH}/applets
DEL_APPLET=`grep -r ${DEL_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 ${DEL_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`
Тестовая среда
Установка ключа dconf org.mate.session.required-component.panel
на пустую строку также работает. Вы, вероятно, можете сделать это, используя команду dconf, например:
dconf write /org/mate/session/required-components/panel "''"
Редактировать: О, я не видел часть один из два . Сожалею. Я надеюсь, что это может помочь другим людям.