diff --git a/Makefile.am b/Makefile.am index 5a639635..07b3bdf6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,6 +2,7 @@ SUBDIRS = \ dox \ eesh \ epp \ - src + src \ + scripts EXTRA_DIST = e.spec configure configure.in TODO econfig.h.in diff --git a/configure.in b/configure.in index ec899ab0..cc860b49 100644 --- a/configure.in +++ b/configure.in @@ -234,5 +234,6 @@ dox/Makefile dox/E-docs/Makefile eesh/Makefile epp/Makefile +scripts/Makefile ]) #, [chmod +x configedit/ConfigEdit]) diff --git a/scripts/Makefile.am b/scripts/Makefile.am new file mode 100644 index 00000000..ea793c9a --- /dev/null +++ b/scripts/Makefile.am @@ -0,0 +1,12 @@ +if FSSTD +escriptsdatadir = $(pkgdatadir)/bin/ +else +escriptsdatadir = $(prefix)/enlightenment/bin +endif + +escriptsdata_DATA = +escriptsdata_SCRIPTS = e_gen_kde_menu e_gen_menu + +EXTRA_DIST = $(escriptsdata_DATA) +EXTRA_SCRIPTS = + diff --git a/scripts/e_gen_kde_menu b/scripts/e_gen_kde_menu new file mode 100644 index 00000000..d7ff2fff --- /dev/null +++ b/scripts/e_gen_kde_menu @@ -0,0 +1,201 @@ +#!/bin/sh +############################################################################## +# generates a file.menu format for Enlightenment out of a KDE menu heirachy # +# Copyright 1999 The Rasterman # +############################################################################## + +# if we dont have enough arguments +if [ $# -lt 3 ]; then + echo "usage:" + echo " "$0" base_name output_dir output_file.menu [kde_applnk_base_dir]" + exit +fi +# setup variables +BASE=$1 +ODIR=$2 +OUT=$3 + +# hunt around and see where all the kde graphics have gone +IDIR=/usr/share/icons +if [ ! -r $IDIR"/mini/kcontrol.xpm" ]; then + IDIR=/usr/local/share/icons +fi +if [ ! -r $IDIR"/mini/kcontrol.xpm" ]; then + IDIR=/opt/kde/icons +fi +if [ ! -r $IDIR"/mini/kcontrol.xpm" ]; then + IDIR=/usr/local/kde/icons +fi +if [ ! -r $IDIR"/mini/kcontrol.xpm" ]; then + IDIR=/usr/kde/icons +fi +if [ ! -r $IDIR"/mini/kcontrol.xpm" ]; then + IDIR=/usr/share/kde/icons +fi +# mini icons are in the icons dir +MIDIR=$IDIR"/mini" + +# hunt around and see where all the kde applnk stuff is +if [ $# -eq 4 ]; then + DIR=$4 +else + DIR=/usr/share/applnk + if [ ! -r $DIR"/KControl.kdelnk" ]; then + DIR=/usr/local/share/applnk + fi + if [ ! -r $DIR"/KControl.kdelnk" ]; then + DIR=/opt/kde/applnk + fi + if [ ! -r $DIR"/KControl.kdelnk" ]; then + DIR=/usr/local/kde/applnk + fi + if [ ! -r $DIR"/KControl.kdelnk" ]; then + DIR=/usr/kde/applnk + fi + if [ ! -r $DIR"/KControl.kdelnk" ]; then + DIR=/usr/share/kde/applnk + fi +fi + +# if the applnk dir doesn't exist in the end then exit +if [ ! -d "$DIR" ]; then + exit +fi +# if the destination dir doesnt exist - create it +if [ ! -d "$ODIR" ]; then + mkdir $ODIR +fi + +# function to check its a KDE kdelnk file +is_kdelnk() { + VAL=`grep "\[KDE Desktop Entry\]" $1` + if [ -n "$VAL" ]; then + VAL=`grep '^Name=' $1 | head -1` + if [ -n "$VAL" ]; then + NAME=`echo $VAL | awk -F= '{printf("%s", $2);}'` + echo -n $NAME + return 0 + fi + fi + return 1 +} + +# function to get the sortorder list -if there is one +get_sortorder() { + VAL=`grep '^SortOrder=' $1 | head -1` + if [ -n "$VAL" ]; then + VAL2=`echo $VAL | awk -F= '{printf("%s", $2);}' | sed "s/,/ /g"` + echo -n $VAL2 + return 0 + fi + return 1 +} + +get_icon() { + VAL=`grep '^Icon=' $1 | head -1` + if [ -n "$VAL" ]; then + VAL2=`echo $VAL | awk -F= '{printf("%s", $2);}'` + echo -n $VAL2 + return 0 + fi + return 1 +} + +get_miniicon() { + VAL=`grep '^MiniIcon=' $1 | head -1` + if [ -n "$VAL" ]; then + VAL2=`echo $VAL | awk -F= '{printf("%s", $2);}'` + echo -n $VAL2 + return 0 + else + get_icon $1 + return 0 + fi + return 1 +} + +get_exec() { + VAL=`grep '^Exec=' $1 | head -1` + if [ -n "$VAL" ]; then + VAL2=`echo $VAL | awk -F= '{printf("%s", $2);}'` + VAL2=`echo $VAL2 | sed "s:\%c:$2:g"` + VAL2=`echo $VAL2 | sed "s:\%m:$3:g"` + VAL2=`echo $VAL2 | sed "s:\%i:$4:g"` + VAL2=`echo $VAL2 | sed "s:\":\':g"` + VAL2=`echo $VAL2 | sed "s:\%u:NONE:g"` + VAL2=`echo $VAL2 | sed "s:\%k:NONE:g"` + VAL2=`echo $VAL2 | sed "s:\%f:blank:g"` + VAL2=`echo $VAL2 | sed "s:\%n:NONE:g"` + VAL2=`echo $VAL2 | sed "s:\%d:$HOME:g"` + echo -n $VAL2 + return 0 + fi + return 1 +} + +E_TITLE="$DIR Menu" + +ORDER="" +# if a .directory file exists - read it +F=$DIR"/.directory" +if [ -f $F ]; then + NAME=`is_kdelnk $F` + if [ -n "$NAME" ]; then + E_TITLE=$NAME + fi + ORDER=`get_sortorder $F` +fi + +# if there is no order - build one +if [ -z "$ORDER" ]; then + ORDER=`/bin/ls -F $DIR | grep "/$" | sed "s:/::g"` +fi + +# print the menu title +echo \"$E_TITLE\" > $OUT + +# for every subdir in the dir list or order - print it +for F in $ORDER; do + FF=$DIR"/"$F + if [ -d "$FF" ]; then + NAME=`echo $F | sed "s/_/ /g"` + FFF=$FF"/.directory" + if [ -f "$FFF" ]; then + ICON=`get_icon "$FFF"` + else + ICON="" + fi + if [ -n "$ICON" ]; then + ICON=\"$MIDIR"/"$ICON\" + else + ICON=NULL + fi + FFF=$ODIR"/"$BASE + if [ ! -d "$FFF" ]; then + mkdir $FFF + fi + MFILE=$FFF"/"$F.menu + $0 $BASE"/"$F $ODIR $MFILE $DIR"/"$F + echo \"$NAME\" $ICON menu \"$MFILE\" >> $OUT + fi +done + +# for all normal files... +FILES=`/bin/ls -F $DIR | grep -v "/$"` +for F in $FILES; do + FF=$DIR"/"$F + if [ -f "$FF" ]; then + NAME=`is_kdelnk $FF` + if [ -n "$NAME" ]; then + ICON=`get_miniicon "$FF"` + BICON=`get_icon $FF` + if [ -n "$ICON" ]; then + ICON=\"$MIDIR"/"$ICON\" + else + ICON=NULL + fi + EXE=`get_exec $FF $NAME $ICON $BICON` + echo \"$NAME\" $ICON exec \"$EXE\" >> $OUT + fi + fi +done diff --git a/scripts/e_gen_menu b/scripts/e_gen_menu new file mode 100644 index 00000000..aba65619 --- /dev/null +++ b/scripts/e_gen_menu @@ -0,0 +1,67 @@ +#!/bin/sh +############################################################################## +# generates a file.menu format for Enlightenment out of a KDE menu heirachy # +# Copyright 1999 The Rasterman # +############################################################################## + +export PATH=$PATH:"/usr/local/enlightenment/bin:/usr/enlightenment/bin:/opt/enlightenment/bin:/usr/local/bin" + +OUT_DIR=$HOME"/.enlightenment" +OUT=$OUT_DIR"/file.menu" + +e_gen_kde_menu menus_kde $OUT_DIR kde.menu +# generate gnome menu here +# e_gen_gnome_menu menus_gnome $OUT_DIR gnome.menu + +# if the out dir doesnt exist - make it +if [ ! -d "$OUT_DIR" ]; then + mkdir $OUT_DIR +fi + +# find eesh +EESH=`which eesh` +# generate file menu if it doesn't exist +if [ ! -f "$OUT" ]; then + echo \"User Menus\" > $OUT + echo \"User Application list\" NULL menu \"user_apps.menu\" >> $OUT + echo \"KDE\" NULL menu \"kde.menu\" >> $OUT + echo \"GNOME\" NULL menu \"gnome.menu\" >> $OUT + # if we have eesh available + if [ -n "$EESH" ]; then + echo \"Restart Enlightenment\" NULL exec \"$EESH -e \'restart\ q'\" >> $OUT + echo \"Log Out\" NULL exec \"$EESH -e \'exit\'\" >> $OUT + fi +fi + +# generate a stub user_apps menu if it doesnt exist +OUT=$OUT_DIR"/user_apps.menu" +if [ ! -f "$OUT" ]; then + echo \"User Application List\" > $OUT + echo \"Eterm\" NULL exec \"Eterm\" >> $OUT + echo \"XTerm\" NULL exec \"xterm\" >> $OUT + echo \"RXVT\" NULL exec \"rxvt\" >> $OUT + echo \"KTerm\" NULL exec \"kterm\" >> $OUT + echo \"Gnome Terminal\" NULL exec \"gnome-terminal\" >> $OUT + echo \"Netscape\" NULL exec \"netscape\" >> $OUT + echo \"TkRat\" NULL exec \"tkrat\" >> $OUT + echo \"Netscape Mail\" NULL exec \"netscape -mail -no-about-splash\" >> $OUT + echo \"Balsa\" NULL exec \"balsa\" >> $OUT + echo \"Exmh\" NULL exec \"exmh\" >> $OUT + echo \"Electric Eyes\" NULL exec \"ee\" >> $OUT + echo \"The GIMP\" NULL exec \"gimp\" >> $OUT + echo \"XV\" NULL exec \"xv\" >> $OUT + echo \"GQView\" NULL exec \"gqview\" >> $OUT + echo \"XMag\" NULL exec \"xmag\" >> $OUT + echo \"XawTV\" NULL exec \"xawtv\" >> $OUT + echo \"Imlib Settings\" NULL exec \"imlib_config\" >> $OUT + echo \"X-Chat\" NULL exec \"xchat\" >> $OUT + echo \"XMan\" NULL exec \"xman\" >> $OUT + echo \"TkMan\" NULL exec \"tkman\" >> $OUT + echo \"GnomeICU\" NULL exec \"gnomeicu -a\" >> $OUT + echo \"eMusic\" NULL exec \"emusic\" >> $OUT + echo \"X11Amp\" NULL exec \"x11amp\" >> $OUT + echo \"XMMS\" NULL exec \"xmms\" >> $OUT + echo \"FreeAMp\" NULL exec \"freeamp\" >> $OUT + echo \"Civilization\" NULL exec \"civctp\" >> $OUT + echo \"Myth 2\" NULL exec \"myth2\" >> $OUT +fi