standardize IRC scripts
This commit is contained in:
parent
47803671db
commit
5a247d3e0b
@ -1,36 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function irc-notification {
|
$HOME/.local/bin/irc-bounce-and-notify.sh weechat@weechat '~/weechat.sh'
|
||||||
TYPE=$1
|
|
||||||
MSG=$2
|
|
||||||
|
|
||||||
notify-send \
|
|
||||||
-t 5000 \
|
|
||||||
-u critical \
|
|
||||||
--category IRC \
|
|
||||||
--app-name=IRC \
|
|
||||||
"$TYPE" \
|
|
||||||
"$MSG"
|
|
||||||
|
|
||||||
if [ -f /usr/share/sounds/freedesktop/stereo/message-new-instant.oga ]
|
|
||||||
then
|
|
||||||
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
notification_sound=""
|
|
||||||
|
|
||||||
listener_ssh_cmd="ssh weechat@weechat -- nc -k -l -U /tmp/weechat.notify.sock"
|
|
||||||
|
|
||||||
function get-irc-notifications {
|
|
||||||
$listener_ssh_cmd | \
|
|
||||||
while read type message; do
|
|
||||||
irc-notification "$(echo -n $type | base64 -d)" "$(echo -n $message | base64 -d)"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
get-irc-notifications &
|
|
||||||
|
|
||||||
trap "pkill -f '$listener_ssh_cmd'" EXIT
|
|
||||||
|
|
||||||
ssh -t weechat@weechat -- "~/weechat.sh"
|
|
||||||
|
112
any/scripts/.local/bin/irc-bounce-and-notify.sh
Executable file
112
any/scripts/.local/bin/irc-bounce-and-notify.sh
Executable file
@ -0,0 +1,112 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Environment Variables
|
||||||
|
MACOS_ICON_PATH=${MACOS_ICON_PATH:-"/Applications/WeeChat.app/Contents/Resources/weechat.icns"}
|
||||||
|
MACOS_TERM_EMULATOR=${MACOS_TERM_EMULATOR:-"com.apple.Terminal"}
|
||||||
|
MACOS_ACTIVATION_CMD=${MACOS_ACTIVATION_CMD:-"/usr/local/bin/tmux select-window -t 0:IRC"}
|
||||||
|
MACOS_SOUND=${MACOS_SOUND:-"default"}
|
||||||
|
LINUX_AUDIO_PLAYER=${LINUX_AUDIO_PLAYER:-"paplay"}
|
||||||
|
LINUX_SOUND=${LINUX_SOUND:-"/usr/share/sounds/freedesktop/stereo/message-new-instant.oga"}
|
||||||
|
|
||||||
|
# Arguments
|
||||||
|
HOST=${1:-"localhost"}
|
||||||
|
WEECHAT_INVOCATION_CMD=${2:-"~/weechat.sh"}
|
||||||
|
|
||||||
|
if [ "$HOST" == "-h" ]
|
||||||
|
then
|
||||||
|
echo "Usage: $(basename $0) <user@hostname> <weechat cmd>"
|
||||||
|
echo
|
||||||
|
echo -e "\tuser@hostname: The SSH connection string to the host running"
|
||||||
|
echo -e "\t WeeChat. If you specify localhost, SSH will not"
|
||||||
|
echo -e "\t be used."
|
||||||
|
echo -e "\tweechat cmd: The command to run WeeChat on the host."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OS_TYPE="${OSTYPE%%+([[:digit:].])}"
|
||||||
|
|
||||||
|
case "$OS_TYPE" in
|
||||||
|
linux-gnu)
|
||||||
|
if ! command -v notify-send &> /dev/null
|
||||||
|
then
|
||||||
|
echo "notify-send is required for Linux notifications."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! command -v "$LINUX_AUDIO_PLAYER" &> /dev/null
|
||||||
|
then
|
||||||
|
echo "${LINUX_AUDIO_PLAYER} is required for Linux notifications."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
base64decode="base64 -d"
|
||||||
|
;;
|
||||||
|
darwin)
|
||||||
|
if ! command -v terminal-notifier &> /dev/null
|
||||||
|
then
|
||||||
|
echo "terminal-notifier is required for macOS notifications."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
base64decode="base64 -D -"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "This script is only supported on Linux and MacOS."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
function irc-notification {
|
||||||
|
TYPE=$1
|
||||||
|
MSG=$2
|
||||||
|
|
||||||
|
if [ $OS_TYPE == "darwin" ]
|
||||||
|
then
|
||||||
|
terminal-notifier \
|
||||||
|
-title IRC \
|
||||||
|
-subtitle "$TYPE" \
|
||||||
|
-message "$MSG" \
|
||||||
|
-appIcon "$MACOS_ICON_PATH" \
|
||||||
|
-contentImage "$MACOS_ICON_PATH" \
|
||||||
|
-execute "$MACOS_ACTIVATION_CMD" \
|
||||||
|
-activate "$MACOS_TERM_EMULATOR" \
|
||||||
|
-sound default \
|
||||||
|
-group IRC
|
||||||
|
elif [ $OS_TYPE == "linux-gnu" ]
|
||||||
|
then
|
||||||
|
notify-send \
|
||||||
|
-t 5000 \
|
||||||
|
-u critical \
|
||||||
|
--category IRC \
|
||||||
|
--app-name=IRC \
|
||||||
|
"$TYPE" \
|
||||||
|
"$MSG"
|
||||||
|
|
||||||
|
if [ -f "$LINUX_SOUND" ]
|
||||||
|
then
|
||||||
|
"$LINUX_AUDIO_PLAYER" "$LINUX_SOUND"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
listener_ssh_cmd="nc -k -l -U /tmp/weechat.notify.sock"
|
||||||
|
|
||||||
|
if [[ $HOST != "localhost" ]]
|
||||||
|
then
|
||||||
|
listener_ssh_cmd="ssh $HOST -- $listener_ssh_cmd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
function get-irc-notifications {
|
||||||
|
$listener_ssh_cmd | \
|
||||||
|
while read type message; do
|
||||||
|
irc-notification "$(echo -n $type | $base64decode)" "$(echo -n $message | $base64decode)"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
get-irc-notifications &
|
||||||
|
|
||||||
|
trap "pkill -f '$listener_ssh_cmd'" EXIT
|
||||||
|
|
||||||
|
if [[ $HOST == "localhost" ]]
|
||||||
|
then
|
||||||
|
$WEECHAT_INVOCATION_CMD
|
||||||
|
else
|
||||||
|
ssh -t "$HOST" -- "$WEECHAT_INVOCATION_CMD"
|
||||||
|
fi
|
Loading…
x
Reference in New Issue
Block a user