oxaliq
8d976bfe63
bunkdeck is now the repo for nice tools on top of bunkchat includes `bunkdeck` for scripting terminal multiplexing and `delete.sh` to add to crontab for periodic flushing of chatlog tested: - [x] local - [x] in tilde Co-authored-by: maren <git@stillgreenmoss.net> Reviewed-on: #2 Reviewed-by: maren <git@stillgreenmoss.net> Co-authored-by: oxaliq <git@oxaliq.net> Co-committed-by: oxaliq <git@oxaliq.net>
156 lines
3.9 KiB
Bash
Executable file
156 lines
3.9 KiB
Bash
Executable file
#!/bin/sh -e
|
|
|
|
sessionname=bunkdeck
|
|
heedPane=bunkdeck:0.0
|
|
proclaimPane=bunkdeck:0.1
|
|
shellPane=bunkdeck:0.2
|
|
|
|
isExistingDeck () {
|
|
if tmux has -t $sessionname ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
attachToDeck () {
|
|
# does not currently protect against nesting sessions (tmux does this for us)
|
|
tmux attach-session -d -t bunkdeck
|
|
}
|
|
|
|
startNewDeck () {
|
|
tmux new -d -s $sessionname heed
|
|
tmux split-window -h -t $sessionname -p 70
|
|
tmux split-window -t $heedPane -v -p 3
|
|
tmux send-keys -t $proclaimPane 'proclaim' C-m
|
|
tmux send-keys -t $shellPane 'cowsay "press [CTRL+b then o] to cycle through panes"' C-m
|
|
# turn on pane titling
|
|
tmux select-pane -t $heedPane -T heed
|
|
tmux select-pane -t $proclaimPane -T proclaim
|
|
tmux select-pane -t $shellPane -T shell
|
|
tmux set -g set-titles on
|
|
# attach session to shell
|
|
tmux attach -t $shellPane
|
|
}
|
|
|
|
killDeck () {
|
|
if isExistingDeck; then
|
|
tmux kill-session -t $sessionname
|
|
else
|
|
echo "you don't have bunkdeck running!"
|
|
fi
|
|
}
|
|
|
|
leaveDeck () {
|
|
# currently assumes that bunkdeck is only session running
|
|
# if bunkdeck leave is issued from within another session, silent failure occurs
|
|
if isExistingDeck && [ "${TMUX}" != "" ]; then
|
|
tmux detach -s $sessionname
|
|
echo "you are not inside bunkdeck! for help:"
|
|
echo "$ bunkdeck help"
|
|
fi
|
|
}
|
|
|
|
growPane () {
|
|
case $2 in
|
|
shell)
|
|
tmux resize-pane -t $shellPane -L "$3"
|
|
;;
|
|
proclaim)
|
|
tmux resize-pane -t $proclaimPane -U "$3"
|
|
;;
|
|
heed)
|
|
tmux resize-pane -t $heedPane -D "$3"
|
|
;;
|
|
*)
|
|
echo "usage: bunkdeck grow [WINDOW] [SIZE]"
|
|
echo
|
|
echo "windows:"
|
|
echo " shell horizontally grow the shell window"
|
|
echo " proclaim vertically grow the window where you send text"
|
|
echo " heed vertically grow the window where you read texts"
|
|
echo
|
|
echo "size:"
|
|
echo " number of cells to grow the selected window"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
shrinkPane () {
|
|
case $2 in
|
|
shell)
|
|
tmux resize-pane -t $shellPane -R "$3"
|
|
;;
|
|
proclaim)
|
|
tmux resize-pane -t $proclaimPane -D "$3"
|
|
;;
|
|
heed)
|
|
tmux resize-pane -t $heedPane -U "$3"
|
|
;;
|
|
*)
|
|
echo "usage: bunkdeck shrink [WINDOW] [SIZE]"
|
|
echo
|
|
echo "windows:"
|
|
echo " shell horizontally shrink the shell window"
|
|
echo " proclaim vertically shrink the window where you send text"
|
|
echo " heed vertically shrink the window where you read texts"
|
|
echo
|
|
echo "size:"
|
|
echo " number of cells to shrink the selected window"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
helpText () {
|
|
usageText
|
|
echo
|
|
echo "help:"
|
|
echo
|
|
echo " movement:"
|
|
echo " bunkdeck gives you three panes, 'proclaim' to chat, 'heed' to read chats"
|
|
echo " and 'shell' to do whatever you want!"
|
|
echo " to move between panes you press [CTL + b] at the same time"
|
|
echo " then [arrow key] to move to a new pane, or 'o' to cycle around"
|
|
}
|
|
|
|
usageText () {
|
|
echo "usage: bunkdeck [COMMAND]"
|
|
echo
|
|
echo "commands:"
|
|
echo " (none) attach to existing bunkdeck or start new one"
|
|
echo " kill kill running bunkdeck"
|
|
echo " leave close bunkdeck without killing it"
|
|
echo " grow grow the size of a bunkdeck window"
|
|
echo " shrink shrink the size of a bunkdeck window"
|
|
}
|
|
|
|
case $1 in
|
|
|
|
kill)
|
|
killDeck
|
|
;;
|
|
"")
|
|
if isExistingDeck; then
|
|
attachToDeck
|
|
else
|
|
startNewDeck
|
|
fi
|
|
;;
|
|
leave)
|
|
leaveDeck
|
|
;;
|
|
grow)
|
|
growPane "$@"
|
|
;;
|
|
shrink)
|
|
shrinkPane "$@"
|
|
;;
|
|
help)
|
|
helpText
|
|
;;
|
|
*)
|
|
usageText
|
|
;;
|
|
esac
|