aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/term
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2020-03-19 11:32:07 +0100
committerPatrick Spek <p.spek@tyil.nl>2021-08-14 11:59:34 +0200
commitc2e51bc0d1b14fcd5d8b29cf3c87d8f18666231f (patch)
treebc556a8b12561d223af1a3135e384c1c819bc6f3 /.local/bin/term
parentd67fee9a0bb6f907533d5d3c7e573c34cdb21bef (diff)
Add possible terminal with no history reference
Diffstat (limited to '.local/bin/term')
-rwxr-xr-x.local/bin/term82
1 files changed, 82 insertions, 0 deletions
diff --git a/.local/bin/term b/.local/bin/term
new file mode 100755
index 0000000..aabea8e
--- /dev/null
+++ b/.local/bin/term
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+# details.
+
+# A list of possible terminal emulators, sorted by preference
+TERMINALS="
+ termite
+ st
+ urxvt
+ rxvt
+ xterm
+"
+
+main()
+{
+ # Handle opts
+ while getopts ":hc" opt
+ do
+ case "$opt" in
+ c) OPT_NO_HIST=1 ;;
+ h) usage && exit 0 ;;
+ *)
+ printf "Invalid option passed: %s\n" "$OPTARG" >&2
+ ;;
+ esac
+ done
+
+ shift $(( OPTIND - 1 ))
+
+ # Unset history related environment variables if requested
+ if [ "$OPT_NO_HIST" ]
+ then
+ unset HISTFILE
+ unset HISTSIZE
+ unset SAVEHIST
+
+ export TERM_NO_HISTORY=1
+ fi
+
+ # Check the list of possible terminal emulators, and exec the first one
+ # that's available
+ for terminal in $TERMINALS
+ do
+ command -v "$terminal" > /dev/null || continue
+
+ exec "$terminal" "$@"
+ done
+
+ # No usable terminal found, print error
+ printf "No suitable terminal emulator found. The following were tried:\n"
+
+ for terminal in $TERMINALS
+ do
+ printf "\t%s\n" "$terminal"
+ done
+
+ exit 127
+}
+
+usage()
+{
+ cat <<EOF
+Usage:
+ ${0##*/} -h
+
+Nondescript
+
+Options:
+ -h Show this help text and exit.
+ -c Unset HISTFILE before starting the terminal.
+EOF
+}
+
+main "$@"