aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutil/fluxbox-generate_menu165
1 files changed, 119 insertions, 46 deletions
diff --git a/util/fluxbox-generate_menu b/util/fluxbox-generate_menu
index 54dded4..e7746c8 100755
--- a/util/fluxbox-generate_menu
+++ b/util/fluxbox-generate_menu
@@ -1,6 +1,8 @@
1#!/bin/sh 1#!/bin/sh
2#
2# generate_menu for Fluxbox 3# generate_menu for Fluxbox
3# Copyright (c) 2001-2002 Henrik Kinnunen (fluxgen@linuxmail.org) 4#
5# Copyright (c) 2002 Han Boetes <han@mijncomputer.nl>
4# 6#
5# Permission is hereby granted, free of charge, to any person obtaining a 7# Permission is hereby granted, free of charge, to any person obtaining a
6# copy of this software and associated documentation files (the "Software"), 8# copy of this software and associated documentation files (the "Software"),
@@ -19,6 +21,8 @@
19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21# DEALINGS IN THE SOFTWARE. 23# DEALINGS IN THE SOFTWARE.
24#
25# $Id: fluxbox-generate_menu,v 1.10 2002/11/12 19:19:14 fluxgen Exp $
22 26
23[ `id -u` -eq 0 ] && PATH=/bin:/usr/bin/:/usr/local/bin:/usr/X11R6/bin 27[ `id -u` -eq 0 ] && PATH=/bin:/usr/bin/:/usr/local/bin:/usr/X11R6/bin
24 28
@@ -31,16 +35,17 @@ Usage: fluxbox-generate_menu [-kg] [-o /path]
31 [-p /path] [-m menu-title] 35 [-p /path] [-m menu-title]
32Options: 36Options:
33 37
34 -t Favourite terminal. 38 -t Favourite terminal
39 -b Favourite browser
35 -k Insert a kde menu 40 -k Insert a kde menu
36 -g Add a gnome menu 41 -g Add a gnome menu
37 -o Outputfile; default is ~/.fluxbox/menu 42 -o Outputfile; default is ~/.fluxbox/menu
38 -m Menu-title; default is "Fluxbox" 43 -m Menu-title; default is "Fluxbox"
39 44 -r Don't remove empty menu-entries; Better for templates.
40 -h Display this help 45 -h Display this help
41 -a Display the authors of this script 46 -a Display the authors of this script
42 47
43 only for packagers: 48 Only for packagers:
44 49
45 -p Package-datadir; default is /usr/share 50 -p Package-datadir; default is /usr/share
46 -n Gnome-datadir; default is Package-datadir 51 -n Gnome-datadir; default is Package-datadir
@@ -87,13 +92,15 @@ append_menu() {
87} 92}
88 93
89append_submenu() { 94append_submenu() {
90 echo >> ${FILENAME} 95 # empty line for readability
96 [ ${REMOVE} ] && echo >> ${FILENAME}
91 append_menu "[submenu] ($1)" 97 append_menu "[submenu] ($1)"
92} 98}
93 99
94append_menu_end() { 100append_menu_end() {
95 append_menu "[end]" 101 append_menu "[end]"
96 echo >> ${FILENAME} 102 # empty line for readability
103 [ ${REMOVE} ] && echo >> ${FILENAME}
97} 104}
98 105
99menu_entry() { 106menu_entry() {
@@ -120,18 +127,28 @@ normal_find() {
120 done 127 done
121} 128}
122 129
130clean_up() {
131# -e "/^$/d" -e "/^$/d"
132cat ${FILENAME} | sed -e "/^\[submenu]/{
133N
134/^\[submenu].*\n\[end]/d
135}" > ${FILENAME}.tmp
136mv -f ${FILENAME}.tmp ${FILENAME}
137}
123 138
124# Get options. 139# Get options.
125while getopts ":khagt:p:n:q:o:m:" COMMAND_LINE_ARGUMENT ; do 140while getopts ":khragb:t:p:n:q:o:m:" COMMAND_LINE_ARGUMENT ; do
126 case "${COMMAND_LINE_ARGUMENT}" in 141 case "${COMMAND_LINE_ARGUMENT}" in
127 k) KDEMENU=yes ;; 142 k) KDEMENU=yes ;;
128 g) GNOMEMENU=yes ;; 143 g) GNOMEMENU=yes ;;
129 t) MY_TERM=${OPTARG};; 144 t) MY_TERM=${OPTARG};;
145 b) MY_BROWSER=${OPTARG};;
130 o) FILENAME=${OPTARG} ;; 146 o) FILENAME=${OPTARG} ;;
131 p) PKGDATADIR=${OPTARG} ;; 147 p) PKGDATADIR=${OPTARG} ;;
132 n) GPKGDATADIR=${OPTARG} ;; 148 n) GPKGDATADIR=${OPTARG} ;;
133 q) KPKGDATADIR=${OPTARG} ;; 149 q) KPKGDATADIR=${OPTARG} ;;
134 m) MENUTITLE=${OPTARG} ;; 150 m) MENUTITLE=${OPTARG} ;;
151 r) REMOVE=no ;;
135 h) display_usage ; exit 0 ;; 152 h) display_usage ; exit 0 ;;
136 a) display_authors ; exit 0 ;; 153 a) display_authors ; exit 0 ;;
137 *) display_help ; exit 1 ;; 154 *) display_help ; exit 1 ;;
@@ -154,12 +171,19 @@ fi
154 171
155# backup menu 172# backup menu
156if [ -w ${FILENAME} ]; then 173if [ -w ${FILENAME} ]; then
174 if [ -f ${FILENAME}.firstbak ];then
175 cp ${FILENAME} ${FILENAME}.firstbak
176 fi
157 mv ${FILENAME} ${FILENAME}.bak 177 mv ${FILENAME} ${FILENAME}.bak
158fi 178fi
159 179
160#packagedatadir 180#packagedatadir
161if [ ! -d "${PKGDATADIR}" ]; then 181if [ ! -d "${PKGDATADIR}" ]; then
162 PKGDATADIR=/usr/share 182 if [ `uname` = "Linux" ];then
183 PKGDATADIR=/usr/share
184 else
185 PKGDATADIR=/usr/local/share
186 fi
163fi 187fi
164 188
165#gnome packagedatadir 189#gnome packagedatadir
@@ -193,6 +217,21 @@ else
193fi 217fi
194 218
195 219
220# find the default browser
221find_it $MY_BROWSER
222if [ $? -ne 0 ];then
223 [ -n "$MY_BROWSER" ] && echo "Warning: you choose an invalid browser." > /dev/stderr
224 #The precise order is up for debate.
225 for browser in opera phoenix mozilla galeon konqueror dillo netscape links w3m lynx; do
226 if find_it $browser; then
227 DEFAULT_BROWSER=$browser
228 break
229 fi
230 done
231else
232 DEFAULT_BROWSER=$MY_BROWSER
233fi
234
196 235
197# a unix system without any terms. that's odd 236# a unix system without any terms. that's odd
198if [ -z "$DEFAULT_TERM" ];then 237if [ -z "$DEFAULT_TERM" ];then
@@ -387,64 +426,77 @@ echo "[begin] (${MENUTITLE})" > ${FILENAME}
387 426
388 427
389append "[exec] (${DEFAULT_TERM}) {${DEFAULT_TERM}}" 428append "[exec] (${DEFAULT_TERM}) {${DEFAULT_TERM}}"
390find_it nedit append "[exec] (nedit) {nedit}"
391 429
430case "$DEFAULT_BROWSER" in
431 links|w3m|lynx) append "[exec] (${DEFAULT_BROWSER}) {${DEFAULT_TERM} -e ${DEFAULT_BROWSER} fluxbox.org}" ;;
432 mozilla|phoenix|galeon|dillo|netscape) append "[exec] (${DEFAULT_BROWSER}) {${DEFAULT_BROWSER}}" ;;
433 konqueror) append "[exec] (konqueror) {kfmclient openProfile webbrowsing}" ;;
434 opera) append "[exec] (opera) {env QT_XFT=true opera}" ;;
435esac
392 436
393append_submenu ${TERMINALMENU} 437find_it fbrun append "[exec] (Run) {fbrun}"
394 normal_find xterm gnome-terminal Eterm konsole aterm rxvt
395append_menu_end
396 438
397 439
398append_submenu ${EDITORMENU} 440append_submenu ${TERMINALMENU}
399 normal_find nedit gvim xemacs emacs gedit xedit kword kwrite kate 441 normal_find xterm gnome-terminal Eterm konsole aterm rxvt
400append_menu_end 442append_menu_end
401 443
402 444
403append_submenu ${BROWSERMENU} 445append_submenu ${NETMENU}
404 normal_find netscape galeon mozilla dillo 446 append_submenu ${BROWSERMENU}
447 normal_find netscape galeon mozilla dillo
405 find_it opera append "[exec] (opera) {env QT_XFT=true opera}" 448 find_it opera append "[exec] (opera) {env QT_XFT=true opera}"
406 find_it konqueror append "[exec] (konqueror) {kfmclient openProfile webbrowsing}" 449 find_it konqueror append "[exec] (konqueror) {kfmclient openProfile webbrowsing}"
407 find_it links append "[exec] (links) {${DEFAULT_TERM} -e links fluxbox.org}" 450 find_it links append "[exec] (links) {${DEFAULT_TERM} -e links fluxbox.org}"
408 find_it w3m append "[exec] (w3m) {${DEFAULT_TERM} -e w3m fluxbox.org}" 451 find_it w3m append "[exec] (w3m) {${DEFAULT_TERM} -e w3m fluxbox.org}"
409 find_it lynx append "[exec] (lynx) {${DEFAULT_TERM} -e lynx fluxbox.org}" 452 find_it lynx append "[exec] (lynx) {${DEFAULT_TERM} -e lynx fluxbox.org}"
453 append_menu_end
454
455 append_submenu IM
456 normal_find gaim kopete gnomemeeting
457 find_it licq append "[exec] (licq) {env QT_XFT=true licq}"
458 append_menu_end
459
460 append_submenu Mail
461 normal_find sylpheed kmail evolution
462 find_it mutt append "[exec] (mutt) {${DEFAULT_TERM} -e mutt}"
463 append_menu_end
464
465 append_submenu IRC
466 normal_find xchat
467 find_it irssi append "[exec] (irssi) {${DEFAULT_TERM} -e irssi}"
468 find_it BitchX append "[exec] (BitchX) {${DEFAULT_TERM} -e BitchX -N}"
469 [ $? -ne 0 ] && \
470 find_it bitchx append "[exec] (BitchX) {${DEFAULT_TERM} -e bitchx -N}"
471 find_it ircii append "[exec] (ircii) {${DEFAULT_TERM} -e ircii -s}"
472 append_menu_end
473
474 normal_find gftp pan
410append_menu_end 475append_menu_end
411 476
412 477
413append_submenu ${NETMENU} 478append_submenu ${EDITORMENU}
414normal_find realplay gaim sylpheed kmail gnomemeeting evolution gftp pan xchat kopete 479 normal_find nedit gvim xemacs emacs gedit xedit kword kwrite kate
415 find_it licq append "[exec] (licq) {env QT_XFT=true licq}"
416 find_it mutt append "[exec] (mutt) {${DEFAULT_TERM} -e mutt}"
417 find_it irssi append "[exec] (irssi) {${DEFAULT_TERM} -e irssi}"
418 find_it BitchX append "[exec] (BitchX) {${DEFAULT_TERM} -e BitchX -N}"
419 [ $? -ne 0 ] && \
420 find_it bitchx append "[exec] (BitchX) {${DEFAULT_TERM} -e bitchx -N}"
421 find_it ircii append "[exec] (ircii) {${DEFAULT_TERM} -e ircii -s}"
422append_menu_end 480append_menu_end
423 481
424 482
425append_submenu ${MULTIMEDIAMENU} 483append_submenu ${MULTIMEDIAMENU}
426 append_submenu ${GRAPHICMENU} 484 append_submenu ${GRAPHICMENU}
427 normal_find gimp xv gqview xpaint kpaint kiconedit xscreensaver-demo 485 normal_find gimp xv gqview xpaint kpaint kiconedit xscreensaver-demo
428 find_it gears append "[exec] (Mesa gears) {gears}" 486 find_it gears append "[exec] (Mesa gears) {gears}"
429 find_it morph3d append "[exec] (Mesa morph) {morph3d}" 487 find_it morph3d append "[exec] (Mesa morph) {morph3d}"
430 find_it reflect append "[exec] (Mesa reflect) {reflect}" 488 find_it reflect append "[exec] (Mesa reflect) {reflect}"
431 append_menu_end 489 append_menu_end
432 490
433 append_submenu ${MUSICMENU} 491 append_submenu ${MUSICMENU}
434 normal_find xmms gqmpeg xmixer gmix kmix grecord \ 492 normal_find xmms gqmpeg xmixer gmix kmix grecord \
435 kmidi xplaycd soundtracker grip 493 kmidi xplaycd soundtracker grip easytag
436 find_it cplay append "[exec] (cplay) {${DEFAULT_TERM} -e cplay}" 494 find_it cplay append "[exec] (cplay) {${DEFAULT_TERM} -e cplay}"
437 append_menu_end 495 append_menu_end
438 496
439 append_submenu ${GAMESMENU}
440 normal_find bzflag gnibbles gnobots2 tuxpuck gataxx glines \
441 gnect mahjongg gnomine gnome-stones gnometris gnotravex \
442 gnotski iagno knights same-gnome xboard freecell pysol \
443 gtali tuxracer xpenguins xsnow xeyes xpenguins
444 append_menu_end
445 497
446 append_submenu ${MISCMENU} 498 append_submenu ${MISCMENU}
447 normal_find xine aviplay gtv gmplayer xmovie xcdroast xgdb ddd 499 normal_find xine aviplay gtv gmplayer xmovie xcdroast xgdb ddd realplay
448 find_it dvdrip append "[exec] (dvdrip) {nohup dvdrip}" 500 find_it dvdrip append "[exec] (dvdrip) {nohup dvdrip}"
449 append_menu_end 501 append_menu_end
450 502
@@ -464,11 +516,18 @@ append_submenu ${OFFICEMENU}
464 normal_find abiword kword wordperfect katoob acroread xpdf 516 normal_find abiword kword wordperfect katoob acroread xpdf
465append_menu_end 517append_menu_end
466 518
519append_submenu ${GAMESMENU}
520 normal_find bzflag gnibbles gnobots2 tuxpuck gataxx glines \
521 gnect mahjongg gnomine gnome-stones gnometris gnotravex \
522 gnotski iagno knights same-gnome xboard freecell pysol \
523 gtali tuxracer xpenguins xsnow xeyes xpenguins \
524 quake2 quake3
525append_menu_end
467 526
468# gnome menu 527# gnome menu
469if [ -d ${GPKGDATADIR}/gnome/apps -a "${GNOMEMENU}" ]; then 528if [ -d ${GPKGDATADIR}/gnome/apps -a "${GNOMEMENU}" ]; then
470 append_submenu ${GNOMEMENUTEXT} 529 append_submenu ${GNOMEMENUTEXT}
471 for a in `ls ${GPKGDATADIR}/gnome/apps`; do 530 for a in ${GPKGDATADIR}/gnome/apps/* ; do
472 if [ -d ${GPKGDATADIR}/gnome/apps/"${a}" ] ; then 531 if [ -d ${GPKGDATADIR}/gnome/apps/"${a}" ] ; then
473 append_submenu "${a}" 532 append_submenu "${a}"
474 menu_entry_dir "${GPKGDATADIR}/gnome/apps/${a}" 533 menu_entry_dir "${GPKGDATADIR}/gnome/apps/${a}"
@@ -482,10 +541,10 @@ fi
482# kde submenu 541# kde submenu
483if [ -d ${KPKGDATADIR}/applnk/ -a "${KDEMENU}" ]; then 542if [ -d ${KPKGDATADIR}/applnk/ -a "${KDEMENU}" ]; then
484 append_submenu ${KDEMENUTEXT} 543 append_submenu ${KDEMENUTEXT}
485 for a in `ls ${KPKGDATADIR}/applnk/`; do 544 for a in ${KPKGDATADIR}/applnk/* ; do
486 if [ -d ${KPKGDATADIR}/applnk/"${a}" ]; then 545 if [ -d ${KPKGDATADIR}/applnk/"${a}" ]; then
487 append_submenu "${a}" 546 append_submenu "${a}"
488 for x in `ls ${KPKGDATADIR}/applnk/"${a}"`; do 547 for x in ${KPKGDATADIR}/applnk/"${a}"/*; do
489 if [ -d ${KPKGDATADIR}/applnk/"${a}"/"${x}" ]; then 548 if [ -d ${KPKGDATADIR}/applnk/"${a}"/"${x}" ]; then
490 append_submenu "${x}" 549 append_submenu "${x}"
491 menu_entry_dir ${KPKGDATADIR}/applnk/"${a}"/"${x}" 550 menu_entry_dir ${KPKGDATADIR}/applnk/"${a}"/"${x}"
@@ -500,27 +559,41 @@ if [ -d ${KPKGDATADIR}/applnk/ -a "${KDEMENU}" ]; then
500 append_menu_end 559 append_menu_end
501fi 560fi
502 561
503 append_submenu ${FBSETTINGSMENU} 562# append_submenu ${FBSETTINGSMENU}
504 append "[workspaces] (${WORKSPACEMENU})" 563 append_submenu Fluxbox-menu
564 append "[config] (${CONFIGUREMENU})"
565
505 566
506 append_menu "[submenu] (${STYLEMENU}) {${STYLEMENUTITLE}}" 567 append_menu "[submenu] (${STYLEMENU}) {${STYLEMENUTITLE}}"
507 append "[stylesdir] (~/.fluxbox/styles)"
508 append "[stylesdir] (${PKGDATADIR}/fluxbox/styles)" 568 append "[stylesdir] (${PKGDATADIR}/fluxbox/styles)"
569 append "[stylesdir] (~/.fluxbox/styles)"
570
509 append_menu_end 571 append_menu_end
510 572
511 append "[config] (${CONFIGUREMENU})" 573 append "[workspaces] (${WORKSPACEMENU})"
512 append "[reconfig] (${RELOADITEM})"
513
514 find_it fluxconf append "[exec] (Fluxconf) {fluxconf}"
515 574
575 append_submenu Tools
576 find_it fluxconf append "[exec] (FluxConf) {fluxconf}"
577 find_it fluxkeys append "[exec] (FluxKeys) {fluxkeys}"
578 find_it fluxmenu append "[exec] (FluxMenu) {fluxmenu}"
516 # if gxmessage exitst use it; else use xmessage 579 # if gxmessage exitst use it; else use xmessage
517 find_it gxmessage append "[exec] (Windowname) {xprop|grep WM_CLASS|cut -d \\\" -f 2|gxmessage -file - -center}" 580 find_it gxmessage append "[exec] (Windowname) {xprop|grep WM_CLASS|cut -d \\\" -f 2|gxmessage -file - -center}"
518 [ $? -ne 0 ] && \ 581 [ $? -ne 0 ] && \
519 find_it xmessage append "[exec] (Windowname) {xprop|grep WM_CLASS|cut -d \\\" -f 2|xmessage -file - -center}" 582 find_it xmessage append "[exec] (Windowname) {xprop|grep WM_CLASS|cut -d \\\" -f 2|xmessage -file - -center}"
583 find_it fbrun append "[exec] (Run) {fbrun}"
520 append_menu_end 584 append_menu_end
521 585
586 append "[reconfig] (${RELOADITEM})"
587 append "[restart] (${RESTARTITEM})"
588 append "[exit] (${EXITITEM})"
522 589
523append "[restart] (${RESTARTITEM})" 590 append_menu_end
524append "[exit] (${EXITITEM})"
525 591
526append_menu_end 592append_menu_end
593
594# this function removes empty menu items. It can not yet remove nested
595# empty submenus :\
596
597if [ ! ${REMOVE} ];then
598 clean_up
599fi