rendered paste body#!/bin/bash
CWD=$(pwd)
categories='Settings Utility Development Game Graphics AudioVideo Network Office System'
rm -rf $categories
write_menu_data () { # expects desktop basename ($entry)
desktop_dir=/usr/share/applications
appname="$(grep "^Name=" $desktop_dir/$1.desktop | cut -f 2 -d "=")"
echo "$appname" >> $1
}
cull_wm_specific () {
blacklist=$(grep "OnlyShowIn" /usr/share/applications/*.desktop | cut -f 1 -d ":")
for item in $blacklist; do
item=$(basename $item .desktop)
if [ $item != "vl-hot-config" ]; then
find $CWD/* -name $item -exec rm {} \;
fi
done
}
sort_categories () {
cd /usr/share/applications
for desktop in $(ls *.desktop); do
entry=$(echo $desktop | cut -f 1 -d ".")
if [ $(grep "Categories=" $desktop | grep "$1") ]; then
if [ $1 == 'System' ]; then
for dir in $(echo "$categories" |sed 's/ System//'); do
cd $CWD/$dir
peek=$(echo $(ls) | grep $(echo "$desktop" | cut -f 1 -d "."))
if [ ! -z $peek ]; then
break
fi
done
if [ -z $peek ]; then
cd $CWD/System
touch $entry
write_menu_data $entry
fi
cd /usr/share/applications
else
cd $CWD/$1
touch $entry
write_menu_data $entry
fi
fi
done
cd $CWD
cull_wm_specific
}
for category in $categories; do
mkdir -p $category
sort_categories $category
done