#!/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