All pastes #912874 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-02-21 18:14 UTC
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