summaryrefslogtreecommitdiffstats
path: root/bashrun.sh
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-04-06 19:43:27 +0200
committerFlorian Pritz <f-p@gmx.at>2009-04-06 19:43:27 +0200
commit40a3dc796bb93accf7ff6c98a53a7d64cf463fac (patch)
treefc2bce4f3ac23e2217adff58fd7362e2278bdb02 /bashrun.sh
parent07f70d71c16ac614e8083fd4edbd2f19b3328e0c (diff)
downloadbin-40a3dc796bb93accf7ff6c98a53a7d64cf463fac.tar.gz
bin-40a3dc796bb93accf7ff6c98a53a7d64cf463fac.tar.xz
moved bashburn to bashrun.sh
Diffstat (limited to 'bashrun.sh')
-rwxr-xr-x[l---------]bashrun.sh107
1 files changed, 106 insertions, 1 deletions
diff --git a/bashrun.sh b/bashrun.sh
index b37f7f0..b571a52 120000..100755
--- a/bashrun.sh
+++ b/bashrun.sh
@@ -1 +1,106 @@
-bashrun \ No newline at end of file
+#!/bin/bash
+#
+# usage: bashrun [geometry] (default: 40x1)
+#
+# NOTE: commands entered will have an '&' appended before being run,
+# so don't append it yourself, it will fail silently.
+#
+# rcfile: $HOME/.bashrunrc
+#
+# ---------------------------------------------------------------------
+
+GEOM=${1:-40x1}
+
+# create .bashrunrc unless present
+BASHRUNRC=$HOME/.bashrunrc
+if [ ! -f $BASHRUNRC ]; then
+(
+cat <<'EOF'
+# which X terminal to use:
+# (xterm|rxvt|urxvt|mrxvt|aterm|mlterm)
+XTERM=urxvtc
+
+# history file and options:
+HISTFILE=$HOME/.bashrun_history
+HISTCONTROL=ignoredups:erasedups
+
+# bind <TAB> to menu-complete. Makes <TAB> cycle through completions on
+# the current line instead of paging all possible completions
+bind '"\t": menu-complete'
+
+# bind <C-g> to send ^D
+# (<C-g> is the default quit-chain-key in emacs, ratpoison, etc)
+bind '"\C-g"':"\"\x04\""
+
+# set a simple prompt
+PS1=">"
+
+# ***DO NOT EDIT BEYOND THIS LINE***
+#
+# bind ENTER to add ' &' to command
+bind '"\x0d"':"\" &\n\""
+EOF
+) > $BASHRUNRC
+fi
+
+. $BASHRUNRC
+
+error() {
+ if [ `which zenity` ]; then
+ zenity --title bashrun --error --text "$@"
+ elif [ `which kdialog` ]; then
+ kdialog --title bashrun --error "$@"
+ elif [ `which xmessage` ]; then
+ xmessage "$@"
+ fi
+ echo -en "\007"
+ echo $@
+}
+
+# run bash terminal
+if [ "$XTERM" = "xterm" ]; then
+ $XTERM -name 'bashrun' \
+ -title 'bashrun' \
+ -geometry $GEOM \
+ -e "/bin/bash --rcfile $BASHRUNRC -i -t"
+
+elif [[ "$XTERM" = "aterm" || "$XTERM" = "mlterm" ]]; then
+ $XTERM -name 'bashrun' \
+ -title 'bashrun' \
+ -geometry $GEOM +sb \
+ -e /bin/bash --rcfile $BASHRUNRC -i -t
+
+elif [[ "$XTERM" = "urxvt" || "$XTERM" = "rxvt" ]] || [ "$XTERM" = "urxvtc" ]; then
+ $XTERM -name 'bashrun' \
+ -title 'bashrun' \
+ -geometry $GEOM \
+ -e sh -c "/bin/bash --rcfile $HOME/.bashrunrc -i -t"
+
+
+elif [ "$XTERM" = "mrxvt" ]; then
+ $XTERM -name 'bashrun' \
+ -title 'bashrun' \
+ -geometry $GEOM +sb -ht \
+ -e sh -c "/bin/bash --rcfile $BASHRUNRC -i -t"
+else
+ error "$XTERM is not supported. Please check $BASHRUNRC"
+ exit 1
+fi
+
+# history cleanup...
+# remove trailing whitespace and '&' from the last history line
+tac $HISTFILE | sed "1s/\&//;s/ *$//" | tac > $HISTFILE
+
+# HISTCONTROL won't work on its own because bash applies the
+# 'ignoredups' and 'erasedups' rules to 'command &'.
+
+# apply 'ignoredups' if set
+if [[ "$HISTCONTROL" =~ "ignoredups" || "$HISTCONTROL" =~ "ignoreboth" ]]; then
+ uniq $HISTFILE $HISTFILE.tmp
+ mv $HISTFILE.tmp $HISTFILE
+fi
+
+# apply 'erasedups' if set
+if [[ "$HISTCONTROL" =~ "erasedups" ]]; then
+ tac $HISTFILE | gawk '!x[$0]++' - | tac > $HISTFILE
+fi