first
fluxgen fluxgen
1 files changed,
322 insertions(+),
0 deletions(-)
jump to
A
data/fluxbox-generate_menu
@@ -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 + + +