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:
parent
a367418433
commit
7ba3dba2bc
4
lib/g
4
lib/g
|
@ -24,6 +24,4 @@ else
|
||||||
action="tmux new-session -s ${prog} ${prog}"
|
action="tmux new-session -s ${prog} ${prog}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#exec alacritty --title G${prog} -e ${=action}
|
exec x-terminal-emulator -t G${prog} -e ${=action}
|
||||||
#exec urxvt -name G${prog} -e ${=action}
|
|
||||||
exec alacritty -t G${prog} -e ${=action}
|
|
||||||
|
|
12
lib/term-wrapper-alacritty
Normal file
12
lib/term-wrapper-alacritty
Normal 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
9
lib/term-wrapper-kitty
Executable 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]} "$@"
|
30
misc/guiterm
30
misc/guiterm
|
@ -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}
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
#dep:alacritty tmux mosh
|
#dep:x-terminal-emulator tmux mosh
|
||||||
if [[ "$1" == "-S" ]]; then
|
if [[ "$1" == "-S" ]]; then
|
||||||
shift
|
shift
|
||||||
server=${1};
|
server=${1};
|
||||||
|
@ -8,4 +8,4 @@ else
|
||||||
server="qwerty";
|
server="qwerty";
|
||||||
fi
|
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
29
select-term.zsh
Executable 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
|
Loading…
Reference in a new issue