#!/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 if [ -z ${FILENAME} ]; then FILENAME=${HOME}/.fluxbox/menu fi if [ ! -z ${FILENAME} ]; then if [ -w ${FILENAME} ]; then cp -f ${FILENAME} ${FILENAME}.bak fi fi #packagedatadir if [ -z "${PKGDATADIR}" ]; then PKGDATADIR=/usr/share fi # menutitle if [ -z "${MENUTITLE}" ]; then MENUTITLE="Fluxbox" fi # 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}" find_it lynx append "[exec] (lynx) {xterm -title lynx -fg white -bg black -e lynx}" find_it dillo append "[exec] (dillo) {dillo}" 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 emacs append "[exec] (emacs) {emacs}" 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 -a "${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/ -a "${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 FB-Settings append "[workspaces] (Workspace List)" append_menu "[submenu] (Styles) {Choose a style...}" append "[stylesdir] (${PKGDATADIR}/fluxbox/styles)" append "[stylesdir] (${HOME}/.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