#!/usr/bin/env bash # # the world wide web is a mischievous rat which aims to control you # I aim to control the rat with ufw # user interface handled by my ration script # SHARE=$HOME/.local/share/rat update_waybar () { killall -35 waybar } cull_rats () { pkill -f -A " $(which rat) " } firewall_set () { case $1 in disable) echo $2 > $SHARE/status sudo ufw disable notify-send "Firewall has been disabled." ;; enable) sudo ufw enable notify-send -u critical "Firewall has been enabled." echo 0 > $SHARE/status update_waybar ;; *) echo "Invalid argument to firewall_set" > /dev/stderr exit 1 ;; esac } for_duration () { cull_rats firewall_set disable 1 endtime=$(($1*60+$(date +%s))) echo $endtime > $SHARE/data while [[ $endtime > $(date +%s) ]]; do update_waybar sleep 1 done firewall_set enable } for_task () { cull_rats firewall_set disable 2 update_waybar while true; do sleep 5m notif="$(notify-send -A open "Ask yourself: do I still need the rat to $1?")" if [[ -n "$notif" ]]; then kitty --app-id ration bash -i ration break fi done } for_program () { cull_rats firewall_set disable 3 echo $1 > $SHARE/data echo "$*" > $HOME/out update_waybar $@ firewall_set enable } for_work () { endtime=$(date -d 1700 +%s) if [[ $(date +%s) > $endtime ]]; then notify-send "It's past work hours!" exit 0 fi cull_rats firewall_set disable 4 update_waybar while [[ $(date +%s) < $endtime ]]; do sleep 1 done firewall_set enable } case $1 in duration) for_duration $2 ;; task) for_task "$2" ;; program) for_program ${@:2} ;; work) for_work ;; reset) cull_rats; firewall_set enable ;; *) echo "Invalid positional parameter" > /dev/stderr exit 1 ;; esac