summaryrefslogtreecommitdiff
path: root/.local/bin/clearx
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/clearx')
-rwxr-xr-x.local/bin/clearx51
1 files changed, 51 insertions, 0 deletions
diff --git a/.local/bin/clearx b/.local/bin/clearx
new file mode 100755
index 0000000..225c208
--- /dev/null
+++ b/.local/bin/clearx
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+help() { echo "clearx - execute command in clear screen
+
+USAGE:
+ clearx [OPTION]... <command>
+
+OPTIONS:
+ -n no prompt when exiting
+ -h show this help message"; }
+
+err() { printf 'clearx: %s\n' "$@" >&2; exit 1; }
+while getopts 'nh' o; do case "$o" in
+ n) nflag=0 ;;
+ h) help >&2; exit ;;
+ *) err "invalid option -- '$OPTARG'" ;;
+esac done
+shift $((OPTIND - 1))
+
+[ "$#" -lt 1 ] && help >&2 && exit 1
+cmds="$*"
+[ "$nflag" = 0 ] ||
+ cmds="$cmds; printf '\n%s' 'Press <Enter> to continue: '; read -r arg"
+
+tmuxcmds="tmux set status off; $cmds; tmux set status on;"
+set_screen() {
+ [ -z "$TMUX" ] &&
+ err '$TMUX not set, only tmux is supported for screen program'
+ tmux new-window -n clearx "$tmuxcmds"
+}
+new_screen() { tmux new-session -s clearx "$tmuxcmds"; }
+
+terminal_emulator() {
+ [ -z "$DISPLAY" ] && return 1
+ #err 'clearx: terminal_emulator: $DISPLAY not set'
+ case "$TERMINAL" in
+ '') echo 'clearx: $TERMINAL not set' && exit 1 ;;
+ alacritty) export TERMINAL="alacritty" ;;
+ esac
+ wmctrl -r :ACTIVE: -b remove,fullscreen
+ $TERMINAL -e sh -c "sleep 0.2; $cmds" &
+ sleep 0.2 && wmctrl -r :ACTIVE: -b add,fullscreen
+}
+
+case "$TERM" in
+ '') err '$TERM not set' ;;
+ *screen*) set_screen ;;
+ *linux*) setfont ter-132n && new_screen ;;
+ *256*) terminal_emulator || new_screen ;;
+ *) err "no action for \$TERM: $TERM"
+esac