remove bunkchat scripts #2
7 changed files with 155 additions and 148 deletions
233
bunkdeck
233
bunkdeck
|
@ -1,121 +1,156 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
#!/bin/sh -e
|
||||
|
||||
heedPane="bunkdeck:0.0"
|
||||
proclaimPane="bunkdeck:0.1"
|
||||
shellPane="bunkdeck:0.2"
|
||||
sessionname=bunkdeck
|
||||
heedPane=bunkdeck:0.0
|
||||
proclaimPane=bunkdeck:0.1
|
||||
shellPane=bunkdeck:0.2
|
||||
|
||||
function isExistingDeck {
|
||||
set +e
|
||||
sessions=$(tmux list-sessions)
|
||||
set -e
|
||||
|
||||
if [[ $sessions == *"bunkdeck"* ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
isExistingDeck () {
|
||||
if tmux has -t $sessionname ; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function startNewDeck {
|
||||
tmux new -d -s bunkdeck heed
|
||||
tmux split-window -h -t bunkdeck -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
|
||||
attachToDeck () {
|
||||
# does not currently protect against nesting sessions (tmux does this for us)
|
||||
tmux attach-session -d -t bunkdeck
|
||||
}
|
||||
|
||||
function killDeck {
|
||||
tmux kill-session -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
|
||||
}
|
||||
|
||||
function 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"
|
||||
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
|
||||
echo "size:"
|
||||
echo " number of cells to grow the selected window"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function 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"
|
||||
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
|
||||
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"
|
||||
}
|
||||
|
||||
case $1 in
|
||||
|
||||
kill)
|
||||
killDeck
|
||||
;;
|
||||
"")
|
||||
if isExistingDeck; then
|
||||
tmux attach-session -t bunkdeck
|
||||
else
|
||||
startNewDeck
|
||||
fi
|
||||
;;
|
||||
grow)
|
||||
growPane "$@"
|
||||
;;
|
||||
shrink)
|
||||
shrinkPane "$@"
|
||||
;;
|
||||
*)
|
||||
usageText () {
|
||||
echo "usage: bunkdeck [COMMAND]"
|
||||
echo
|
||||
echo "commands:"
|
||||
echo " (none) attach to existing bunkdeck or start new one"
|
||||
echo " kill kill running bunkdeck"
|
||||
echo " grow grow the size of a bunkdeck window"
|
||||
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"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
case $1 in
|
||||
|
||||
kill)
|
||||
killDeck
|
||||
;;
|
||||
"")
|
||||
if isExistingDeck; then
|
||||
attachToDeck
|
||||
else
|
||||
startNewDeck
|
||||
fi
|
||||
;;
|
||||
leave)
|
||||
leaveDeck
|
||||
;;
|
||||
grow)
|
||||
growPane "$@"
|
||||
;;
|
||||
shrink)
|
||||
shrinkPane "$@"
|
||||
;;
|
||||
help)
|
||||
helpText
|
||||
;;
|
||||
*)
|
||||
usageText
|
||||
;;
|
||||
esac
|
||||
|
|
6
delete.sh
Normal file
6
delete.sh
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
chatlog=/var/log/bunkchat/chat.log
|
||||
|
||||
chattr -a $chatlog
|
||||
echo > $chatlog
|
||||
chattr +a $chatlog
|
12
heed
12
heed
|
@ -1,12 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
clear
|
||||
|
||||
figlet -f future heed - bunkchat
|
||||
echo "#######################################################################"
|
||||
echo "# Take heed, $USER! This is a group chat with everyone on the server! #"
|
||||
echo "# You can view earlier chat with 'scry' or 'less /srv/bunkchat.txt' #"
|
||||
echo "#######################################################################"
|
||||
echo
|
||||
|
||||
tail -f /srv/bunkchat.txt
|
13
install.sh
Executable file
13
install.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# TODO
|
||||
|
||||
# check for tmux and cowsay
|
||||
|
||||
# if not prompt and exit
|
||||
# pull in bunkchat
|
||||
# run bunkchat install script
|
||||
# install buckdeck in /usr/local/bin
|
||||
|
||||
# prompt user to install delete.sh in /root/crontab-scripts/delete-bunkchat.sh
|
||||
# prompt with crontab config
|
29
proclaim
29
proclaim
|
@ -1,29 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# make username uppercase
|
||||
username=$(echo "$USER" | tr '[:lower:]' '[:upper:]')
|
||||
timezone="America/New_York"
|
||||
declare prompt
|
||||
|
||||
makeSlug () {
|
||||
# make time and date
|
||||
time=$(TZ=${timezone} date +%I:%M%p)
|
||||
date=$(TZ=${timezone} date +%m/%d)
|
||||
|
||||
# make name/time string
|
||||
prompt="${username}-${date}-${time}"
|
||||
}
|
||||
|
||||
# enter bunkchat mode (clear the screen)
|
||||
clear
|
||||
|
||||
while true
|
||||
do
|
||||
figlet -f future proclaim - bunkchat
|
||||
echo "You may view old chat with 'scry', heathen."
|
||||
echo "-------------------------------------------"
|
||||
read -r -p "speak to the server: " text
|
||||
makeSlug
|
||||
echo "${prompt}: $text" >> /srv/bunkchat.txt
|
||||
clear
|
||||
done
|
|
@ -6,11 +6,8 @@ tmux wraps some hand-rolled local chat scripts, and the`bunkdeck` command starts
|
|||
|
||||
bunkdeck is comprised of these lil things:
|
||||
* `bunkdeck` - run this command to start the interface
|
||||
* `proclaim` - post in chat
|
||||
* `heed` - read the chat
|
||||
* `scry` - read the old chat
|
||||
* `bunkchat` - the actual chat functionality [git](https://git.bunk.computer/bunk/bunkchat)
|
||||
|
||||
on the server, these are all installed in `/usr/local/bin` so everyone can run them
|
||||
|
||||
the file they all interact with, `/srv/bunkchat.txt` has permissions such that everyone can read and write to it
|
||||
|
||||
the file they all interact with, `/var/log/bunkchat/chat.log` is append-only
|
||||
|
|
3
scry
3
scry
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
less /srv/bunkchat.txt
|
Loading…
Reference in a new issue