Add wrappers for terminals to make scripts terminal-agnostic

Scripts launching a terminal will now require x-terminal-emulator in the
path. A symlink for it can be created using `select-term.zsh`.
This commit is contained in:
Alexander Gehrke 2021-07-05 13:11:42 +02:00
parent a367418433
commit 7ba3dba2bc
6 changed files with 53 additions and 35 deletions

4
lib/g
View file

@ -24,6 +24,4 @@ else
action="tmux new-session -s ${prog} ${prog}"
fi
#exec alacritty --title G${prog} -e ${=action}
#exec urxvt -name G${prog} -e ${=action}
exec alacritty -t G${prog} -e ${=action}
exec x-terminal-emulator -t G${prog} -e ${=action}

View file

@ -0,0 +1,12 @@
#!/bin/zsh
zparseopts -D -E \
t:=title -title=title \
e:=execute -exec=execute -execute=execute \
c:=class -class=class
if [[ -n $1 || -n $execute ]]; then
execparam="-e"
fi
alacritty ${class+--class} ${class[2]} ${title+-t} ${title[2]} $execparam ${=execute[2]} "$@"

9
lib/term-wrapper-kitty Executable file
View file

@ -0,0 +1,9 @@
#!/bin/zsh
zparseopts -D -E \
t:=title -title=title \
e:=execute -exec=execute -execute=execute \
c:=class -class=class
kitty -1 ${class+--class=}${class[2]} ${title+-T} ${title[2]} ${=execute[2]} "$@"

View file

@ -1,30 +0,0 @@
#!/bin/zsh
#dep:tmux alacritty
if [[ "${0:t}" == "guiterm" ]]; then
<<-HELP
Symlink to g\$progname to start \$progname in tmux in a new terminal or
reattach a tmux session named \$progname in a new terminal
Symlink to g.\$progname to start \$progname in tmux in a new terminal
regardless of existing tmux sessions"
Example symlink names:
gmutt: start mutt in a terminal or open the existing one
g.zsh: open a terminal running a new zsh session
HELP
exit 1
fi
prog=${${0:t}[2,-1]}
if [[ "$prog[1]" == "." ]]; then
prog=${prog[2,-1]}
action="tmux new-session ${prog}"
elif tmux list-sessions | grep -qe "^${prog}:"; then
action="tmux attach -t ${prog}"
else
action="tmux new-session -s ${prog} ${prog}"
fi
#exec alacritty --title G${prog} -e ${=action}
exec alacritty -t G${prog} -e ${=action}

View file

@ -1,5 +1,5 @@
#!/bin/zsh
#dep:alacritty tmux mosh
#dep:x-terminal-emulator tmux mosh
if [[ "$1" == "-S" ]]; then
shift
server=${1};
@ -8,4 +8,4 @@ else
server="qwerty";
fi
exec alacritty -t Weechat -e tmux new-session mosh "${server}" -- tmux attach "$@" -t weechat
exec x-terminal-emulator -t Weechat -e tmux new-session mosh "${server}" -- tmux attach "$@" -t weechat

29
select-term.zsh Executable file
View file

@ -0,0 +1,29 @@
#!/bin/zsh
zparseopts -D -E p:=install_path -path:=install_path h:=help -help:=help
if [[ $help ]]; then
<<-HELP
Usage: $0 [opts]
Installs a wrapper script for the selected terminal under the name
"x-terminal-emulator" in path. The wrapper ensures a common interface for
setting title, class and passing commands.
Options:
-p, --path PATH target directory to install into (defaults to ~/.local/bin)
HELP
exit 1
fi
if [[ ! $install_path ]]; then
install_path=$HOME/.local/bin
else
install_path=${install_path[2]}
fi
terms=( lib/term-wrapper-* )
selected_term=$(printf "%s\n" ${terms:t} | fzf)
ln -fsr lib/$selected_term $install_path/x-terminal-emulator