--- util/fluxbox-generate_menu.in.orig	2015-02-08 10:44:45 UTC
+++ util/fluxbox-generate_menu.in
@@ -68,7 +68,7 @@ Options:
     -d  Other path(s) to recursively search for *.desktop files
     -ds Wider search for *.desktop files (takes more time)
     -i  Other path(s) to search for icons
-        e.g., "/usr/kde/3.3/share/icons/crystalsvg/16x16/*"
+        e.g., "%%LOCALBASE%%/share/icons/crystalsvg/16x16/*"
     -is Wider search for icons (worth the extra time)
     -in Skip icon search
 
@@ -85,7 +85,7 @@ Options:
   Only for packagers:
 
     -p  Prefix; default is @PREFIX@
-    -n  Gnome-prefix; /opt, /usr, /usr/X11R6 and /usr/local autodetected
+    -n  Gnome-prefix; %%LOCALBASE%% autodetected
     -q  KDE-prefix; idem dito
 
 
@@ -145,13 +145,42 @@ testoption() {
     esac
 }
 
-find_it() {
-    [ -n "$1" ] && hash $1 2> /dev/null && shift && "$@"
-}
+# some which's have a reliable return code, some don't
+# Lets figure out which which we have.
+if which this_program_does_not_exist-no_really-aA1zZ9 2> /dev/null 1> /dev/null; then
+    # can't rely on return value
+    find_it() {
+        file=`which $1 2> /dev/null`
+        if [ -x "$file" ]; then
+            if [ $# -gt 1 ]; then
+                shift
+                "$@"
+            fi
+            return 0
+        else
+            return 1
+        fi
+    }
 
-find_it_options() {
-    [ -n "$1" ] && hash $1 2> /dev/null
-}
+    find_it_options() {
+        file=`which $1 2> /dev/null`
+        if [ -x "$file" ]; then
+            return 0
+        else
+            return 1
+        fi
+    }
+
+else
+    # can rely on return value
+    find_it() {
+        which $1 > /dev/null 2>&1 && shift && "$@"
+    }
+
+    find_it_options() {
+        which $1 > /dev/null 2>&1
+    }
+fi
 
 #echo "replaceWithinString: $1, $2, $3" >&2
 #echo ${1//$2/$3} # causes error in BSD even though not used
@@ -203,7 +232,7 @@ convertIcon(){
     if [ -f "${entry_icon}" ]; then
         : echo "File exists. To overwrite, type: convert \"$1\" \"$entry_icon\"" >&2
     else
-        if hash convert 2> /dev/null; then
+        if which convert &> /dev/null; then
             convert "$1" "$entry_icon"
             # echo convert "$1" , "$entry_icon" >> $ICONMAPPING
         else
@@ -275,7 +304,7 @@ doSearch(){
     # echo -n "for $temp_icon"
     eval doSearchLoop $USER_ICONPATHS \
       "$FB_ICONDIR" \
-      "/usr/share/${execname%% *}" \
+      "%%LOCALBASE%%/share/${execname%% *}" \
       ${OTHER_ICONPATHS} \
 
 
@@ -558,7 +587,7 @@ rm -f ${MENUFILENAME}.tmp
 
 
 WHOAMI=`whoami`
-[ "$WHOAMI" = root ] && PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
+[ "$WHOAMI" = root ] && PATH=/bin:/usr/bin:%%LOCALBASE%%/bin
 
 # Check for Imlib2-support
 if @pkgprefix@fluxbox@pkgsuffix@@EXEEXT@ -info 2> /dev/null | grep -q "^IMLIB"; then
@@ -1271,16 +1300,16 @@ if [ ! "${INSTALL}" = Yes ]; then
 # These are prefixes; So if fluxbox is installed in @PREFIX@/bin/fluxbox
 # your prefix is: @PREFIX@
 
-# fluxbox-generate already looks in /usr/X11R6, /usr, /usr/local and /opt so
+# fluxbox-generate already looks in %%LOCALBASE%% so
 # there should be no need to specify them.
 #
 # PREFIX=@PREFIX@
-# GNOME_PREFIX=/opt/gnome
-# KDE_PREFIX=/opt/kde
+# GNOME_PREFIX=%%LOCALBASE%%
+# KDE_PREFIX=%%LOCALBASE%%
 
 
 # Separate the list of background dirs with colons ':'
-# BACKGROUND_DIRS="${USERFLUXDIR}/backgrounds/:@PREFIX@/share/fluxbox/backgrounds/:/usr/share/wallpapers"
+# BACKGROUND_DIRS="${USERFLUXDIR}/backgrounds/:@PREFIX@/share/fluxbox/backgrounds/:%%LOCALBASE%%/share/wallpapers"
 
 
 # --- Boolean variables.
@@ -1327,29 +1356,21 @@ while [ $# -gt 0 ]; do
         -g) GNOMEMENU=yes; shift;;
         -in) NO_ICON=yes; shift;;
         -is) OTHER_ICONPATHS="
-                /usr/share/icons
-                /usr/share/icons/mini
-                /usr/share/pixmaps
-                /usr/local/share/icons
-                /usr/local/share/icons/mini
-                /usr/local/share/pixmaps
-                /usr/share/xclass/icons
-                /usr/share/xclass/pixmaps
-                /usr/local/share/xclass/icons
-                /usr/local/share/xclass/pixmaps
-                /usr/X11R6/share/icons/default/16x16
-                /usr/X11R6/share/icons/kde/16x16
-                /usr/X11R6/share/icons/hicolor/16x16
-                /usr/local/X11R6/share/icons/default/16x16
-                /usr/local/X11R6/share/icons/kde/16x16
-                /usr/local/X11R6/share/icons/hicolor/16x16
+                %%LOCALBASE%%/share/icons
+                %%LOCALBASE%%/share/icons/mini
+                %%LOCALBASE%%/share/pixmaps
+                %%LOCALBASE%%/share/xclass/icons
+                %%LOCALBASE%%/share/xclass/pixmaps
+                %%LOCALBASE%%/share/icons/default/16x16
+                %%LOCALBASE%%/share/icons/kde/16x16
+                %%LOCALBASE%%/share/icons/hicolor/16x16
             "
             shift;;
         -ds) OTHER_DESKTOP_PATHS="
-                /usr/share/mimelnk 
-                /usr/share/applications
-                /usr/share/xsessions 
-                /usr/share/services 
+                %%LOCALBASE%%/share/mimelnk
+                %%LOCALBASE%%/share/applications
+                %%LOCALBASE%%/share/xsessions
+                %%LOCALBASE%%/share/services
             "
             # /usr/share/apps \
             shift;;
@@ -1420,13 +1441,12 @@ fi
 # prefix
 PREFIX="${PREFIX:=@PREFIX@}"
 if [  -z "${PREFIX}" -o ! -d "${PREFIX}" ]; then
-    hash @pkgprefix@fluxbox@pkgsuffix@@EXEEXT@
-    PREFIX=`hash | grep @pkgprefix@fluxbox@pkgsuffix@ | sed 's,.*\t/,/,' | sed 's,/bin/@pkgprefix@fluxbox@pkgsuffix@@EXEEXT@$,,'`
+    PREFIX=`which fluxbox | sed 's,/bin/fluxbox$,,'`
 fi
 
 
 # gnome prefix
-for GNOME_PREFIX in "${GNOME_PREFIX}" /usr/local /usr/X11R6 /usr /opt "${PREFIX}"; do
+for GNOME_PREFIX in "${GNOME_PREFIX}" %%LOCALBASE%% "${PREFIX}"; do
     if [ -n "${GNOME_PREFIX}" -a -d "$GNOME_PREFIX/share/gnome" ]; then
         break;
     fi
@@ -1434,7 +1454,7 @@ done
 # Will remain $PREFIX if all else fails
 
 # kde prefix
-for KDE_PREFIX in "${KDE_PREFIX}" /usr/local /usr/X11R6 /usr /opt "${PREFIX}"; do
+for KDE_PREFIX in "${KDE_PREFIX}" %%LOCALBASE%% "${PREFIX}"; do
     if [ -n "${KDE_PREFIX}" -a -d "$KDE_PREFIX/share/applnk" ]; then
         break;
     fi
@@ -1522,7 +1542,7 @@ if find_it_options $MY_BROWSER; then
 else
     [ -n "$MY_BROWSER" ] && echo "Warning: you chose an invalid browser." >&2
     #The precise order is up for debate.
-    for browser in firefox mozilla-firefox chrome chromium google-chrome mozilla-firebird MozillaFirebird opera skipstone mozilla seamonkey galeon konqueror dillo netscape w3m amaya links lynx; do
+    for browser in firefox mozilla-firefox chrome chromium google-chrome mozilla-firebird MozillaFirebird linux-opera opera skipstone mozilla seamonkey galeon konqueror dillo netscape w3m amaya links lynx; do
         if find_it_options $browser; then
             DEFAULT_BROWSER=$browser
             break
@@ -1589,6 +1609,7 @@ case "$DEFAULT_BROWSERNAME" in
     chrome|chromium) append "[exec] (${DEFAULT_BROWSERNAME}) {${DEFAULT_BROWSER}}" ;;
     google-chrome) append "[exec] (${DEFAULT_BROWSERNAME}) {${DEFAULT_BROWSER}}" ;;
     konqueror) append "[exec] (konqueror) {kfmclient openProfile webbrowsing}" ;;
+    linux-opera) append "[exec] (linux-opera) {env QT_XFT=true linux-opera}" ;;
     opera) append "[exec] (opera) {env QT_XFT=true opera}" ;;
     MozillaFirebird) append "[exec] (firebird) {MozillaFirebird}" ;;
     MozillaFirefox) append "[exec] (firefox) {MozillaFirefox}" ;;
@@ -1608,6 +1629,7 @@ append_submenu "${NETMENU}"
     append_submenu "${BROWSERMENU}"
         normal_find chrome chromium firefox google-chrome mozilla-firefox MozillaFirefox galeon mozilla seamonkey dillo netscape vncviewer
         find_it links       append "[exec]   (links-graphic) {links -driver x ${HOMEPAGE}}"
+        find_it linux-opera append "[exec]   (linux-opera) {env QT_XFT=true linux-opera}"
         find_it opera       append "[exec]   (opera) {env QT_XFT=true opera}"
         find_it konqueror   append "[exec]   (konqueror) {kfmclient openProfile webbrowsing}"
         find_it links       append "[exec]   (links) {${DEFAULT_TERM} -e links ${HOMEPAGE}}"
