This commit is contained in:
fluxgen 2002-05-24 11:30:01 +00:00
parent 137e86058b
commit c61e8a6ea9

322
data/fluxbox-generate_menu Executable file
View file

@ -0,0 +1,322 @@
#!/bin/sh
# generate_menu for Fluxbox
# Copyright (c) 2001-2002 Henrik Kinnunen (fluxgen@linuxmail.org)
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
# Functions
display_usage () {
echo
echo "fluxbox-generate_menu"
echo 'Usage: fluxbox-generate_menu [-kg] [-o /path]'
echo ' [-p /path] [-m menu-title]'
echo "Options:"
echo " -k Insert a kde menu"
echo " -g Add a gnome menu"
echo " -p Package-datadir; default is /usr/local/share"
echo " -o Outputfile; default is ~/.fluxbox/menu"
echo ' -m Menu-title; default is "Fluxbox"'
echo " -h Display this help"
echo " -a Display the authors of this script"
echo
}
display_help () {
echo
echo "This program generates a menu-file for fluxbox."
echo "Use fluxbox-generate_menu -h for brief usage instructions"
echo
}
display_authors () {
echo
echo "This program was brought to you by:"
echo
echo "Henrik Kinnunnen: Project leader."
echo "Han Boetes: Packaging, debugging and scripts."
echo "Jeramy B. Smith: Packaging assistance, gnome and kde menu system."
echo "Xyrnix: Mysterious guest developer who made find_it module."
echo `whoami`": Innocent bystander."
echo
}
find_it() {
_it="`which \"$1\" 2>/dev/null | grep \"^/.*$1\"`"
if [ ! -z "$_it" ]; then
if [ -x "$_it" ]; then
shift
$*
else
echo "$1 exists but it is not executable! Check permissions."
fi
fi
}
append() {
echo " $*" >> $FILENAME
}
append_menu() {
echo "$*" >> $FILENAME
}
append_submenu() {
echo >> $FILENAME
append_menu "[submenu] ($1)"
}
append_menu_end() {
append_menu "[end]"
echo >> $FILENAME
}
menu_entry() {
append "[exec] ("`grep -v GenericName $* | grep Name= | cut -d = -f 2`") \
{"`grep -v TryExec $* | grep Exec= | cut -d = -f 2`"}"
}
menu_entry_dircheck() {
if [ -d "$*" ]; then
menu_entry_dir "$*"
fi
}
menu_entry_dir() {
for b in `ls "$*"/*.desktop 2>/dev/null `; do
menu_entry "$b"
done
}
# Get options.
while getopts ":khagp:o:m:" COMMAND_LINE_ARGUMENT ; do
case "${COMMAND_LINE_ARGUMENT}" in
k)
KDEMENU=yes
;;
g)
GNOMEMENU=yes
;;
o)
FILENAME=${OPTARG}
;;
p)
PKGDATADIR=${OPTARG}
;;
m)
MENUTITLE=${OPTARG}
;;
h)
display_usage
exit 0
;;
a)
display_authors
exit 0
;;
*)
display_help
exit 1
;;
esac
done
# Set Defaults
# menufile name and make a backup
[ ! $FILENAME ] && FILENAME=~/.fluxbox/menu
[ -e $FILENAME ] && cp -f $FILENAME ${FILENAME}.bak
#packagedatadir
[ ! $PKGDATADIR ] && PKGDATADIR=/usr/share
# menutitle
[ ! $MENUTITLE ] && MENUTITLE="Fluxbox"
# Start of menu
echo "[begin] ($MENUTITLE)" > $FILENAME
find_it xterm append "[exec] (xterm) {xterm -fg white -bg black}"
find_it nedit append "[exec] (nedit) {nedit}"
append_submenu Browsers
find_it netscape append "[exec] (netscape) {netscape}"
find_it opera append "[exec] (opera) {env QT_XFT=true opera}"
find_it galeon append "[exec] (galeon) {galeon}"
find_it mozilla append "[exec] (mozilla) {mozilla}"
find_it konqueror append "[exec] (konqueror) {konqueror}"
find_it links append "[exec] (links) {xterm -title links -fg white -bg black -e links fluxbox.sf.net}"
find_it w3m append "[exec] (w3m) {xterm -title w3m -fg white -bg black -e w3m}"
append_menu_end
append_submenu Editors
find_it nedit append "[exec] (nedit) {nedit}"
find_it vim append "[exec] (vim) {vim -g}"
find_it xemacs append "[exec] (xemacs) {xemacs}"
find_it gedit append "[exec] (gedit) {gedit}"
find_it xedit append "[exec] (xedit) {xedit}"
find_it kword append "[exec] (kword) {kword}"
find_it kwrite append "[exec] (kwrite) {kwrite}"
append_menu_end
append_submenu Net
find_it realplay append "[exec] (realplayer) {realplay}"
find_it licq append "[exec] (licq) {env QT_XFT=true licq}"
find_it gaim append "[exec] (gaim) {gaim}"
find_it sylpheed append "[exec] (sylpheed) {sylpheed}"
find_it evolution append "[exec] (evolution) {evolution}"
find_it mutt append "[exec] (mutt) {xterm -title mutt -fg white -bg black -e mutt}"
find_it gftp append "[exec] (gftp) {gftp}"
find_it xchat append "[exec] (xchat) {xchat}"
find_it irssi append "[exec] (irssi) {xterm -title irssi -e irssi}"
find_it BitchX append "[exec] (BitchX) {xterm -title BitchX -fg white -bg black -e BitchX -N}"
find_it bitchx append "[exec] (BitchX) {xterm -title BitchX -fg white -bg black -e bitchx -N}"
find_it ircii append "[exec] (ircii) {xterm -title ircii -fg white -bg black -e ircii -s}"
append_menu_end
append_submenu Graphics
find_it gimp append "[exec] (gimp) {gimp}"
find_it xv append "[exec] (xv) {xv}"
find_it gqview append "[exec] (gqview) {gqview}"
find_it xpaint append "[exec] (xpaint) {xpaint}"
find_it kpaint append "[exec] (kpaint) {kpaint}"
find_it kiconedit append "[exec] (kiconedit) {kiconedit}"
find_it xscreensaver-demo append "[exec] (xscreensaver-demo) {xscreensaver-demo}"
append_menu_end
append_submenu Music
find_it xmms append "[exec] (xmms) {xmms}"
find_it gqmpeg append "[exec] (gqmpeg) {gqmpeg}"
find_it xmixer append "[exec] (xmixer) {xmixer}"
find_it gmix append "[exec] (gmix) {gmix}"
find_it kmix append "[exec] (kmix) {kmix}"
find_it grecord append "[exec] (grecord) {grecord}"
find_it kmidi append "[exec] (kmidi) {kmidi}"
find_it xplaycd append "[exec] (xplaycd) {xplaycd}"
find_it soundtracker append "[exec] (soundtracker) {soundtracker}"
find_it cplay append "[exec] (cplay) {xterm -title cplay -fg white -bg black -e /usr/local/bin/cplay}"
find_it grip append "[exec] (grip) {grip}"
append_menu_end
append_submenu Terminals
append "[exec] (xterm) {xterm -fg white -bg black}"
find_it gnome-terminal append "[exec] (gnome-terminal) {gnome-terminal}"
find_it Eterm append "[exec] (Eterm) {Eterm}"
find_it konsole append "[exec] (konsole) {konsole}"
find_it aterm append "[exec] (aterm) {aterm}"
find_it rxvt append "[exec] (rxvt) {rxvt}"
append_menu_end
append_submenu Misc
find_it acroread append "[exec] (acroread) {acroread}"
find_it gcalc append "[exec] (gcalc) {gcalc}"
find_it kcalc append "[exec] (kcalc) {kcalc}"
find_it kpackage append "[exec] (kpackage) {kpackage}"
find_it xgdb append "[exec] (xgdb) {xgdb}"
find_it ddd append "[exec] (ddd) {ddd}"
find_it xterm append "[exec] (tail access_log) {xterm -fg white -bg black -title access_log -e tail -f /var/log/access_log}"
append_menu_end
append_submenu X-utils
find_it xpenguins append "[exec] (xpenguins) {xpenguins}"
find_it xcalc append "[exec] (xcalc) {xcalc}"
find_it xfontsel append "[exec] (xfontsel) {xfontsel}"
find_it xman append "[exec] (xman) {xman}"
find_it xload append "[exec] (xload) {xload}"
find_it xfig append "[exec] (xfig) {xfig}"
find_it xbiff append "[exec] (xbiff) {xbiff}"
find_it editres append "[exec] (editres) {editres}"
find_it viewres append "[exec] (viewres) {viewres}"
find_it xsnow append "[exec] (xsnow) {xsnow}"
find_it xclock append "[exec] (xclock) {xclock}"
append_menu_end
# gnome menu
if [ -d $PKGDATADIR/gnome/apps ] && [ $GNOMEMENU ]; then
append_submenu Gnome-menus
for a in `ls $PKGDATADIR/gnome/apps`; do
if [ -d $PKGDATADIR/gnome/apps/"$a" ] ; then
append_submenu "$a"
menu_entry_dir "$PKGDATADIR/gnome/apps/"$a""
menu_entry_dircheck "/etc/X11/applnk/"$a""
append_menu_end
fi
done
append_menu_end
fi
# kde submenu
if [ -d $PKGDATADIR/applnk/ ] && [ $KDEMENU ]; then
append_submenu KDE-menus
for a in `ls $PKGDATADIR/applnk/`; do
if [ -d $PKGDATADIR/applnk/"$a" ]; then
append_submenu "$a"
for x in `ls $PKGDATADIR/applnk/"$a"`; do
if [ -d $PKGDATADIR/applnk/"$a"/"$x" ]; then
append_submenu "$x"
menu_entry_dir $PKGDATADIR/applnk/"$a"/"$x"
append_menu_end
fi
done
menu_entry_dir $PKGDATADIR/applnk/"$a"
append_menu_end
fi
done
menu_entry_dir $PKGDATADIR/applnk/
append_menu_end
fi
append_submenu Settings
append "[workspaces] (Workspace List)"
append_menu "[submenu] (Styles) {Choose a style...}"
append "[stylesdir] ($PKGDATADIR/fluxbox/styles)"
append "[stylesdir] (~/.fluxbox/styles)"
append_menu_end
append "[config] (Configuration)"
append "[reconfig] (Reload config)"
find_it fluxconf append "[exec] (Fluxconf) {fluxconf}"
append_menu_end
append "[restart] (Restart)"
append "[exit] (Exit)"
append_menu_end