commit 96bdcdf6ac235cfe72deca4189b672989abfb7b9 Author: alex Date: Sun Sep 18 21:13:02 2022 -0500 initial commit diff --git a/backup.sh b/backup.sh new file mode 100755 index 0000000..a8ca7ec --- /dev/null +++ b/backup.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh +BACKUP_LOC="/media/SEAGATE/HOME_BACKUP/" +DIR="$HOME/" +EXCLUDE_CONF="$HOME/.config/rsync-exclude.conf" + +EXCL_INCL="--exclude-from=$EXCLUDE_CONF" + +if [ "$1" = "-r" ]; then + notify-send "backup.sh" "restoring from backup" + rsync -ru $EXCL_INCL "$BACKUP_LOC" "$DIR" +else + + notify-send "backup.sh" "performing backup" + if [ -d $BACKUP_LOC ]; then + rsync -arP --delete $EXCL_INCL "$DIR" "$BACKUP_LOC" + else + notify-send "backup.sh" "backup location not found" + fi + +fi + +sync diff --git a/bemenu-colorgen.sh b/bemenu-colorgen.sh new file mode 100755 index 0000000..c8f0639 --- /dev/null +++ b/bemenu-colorgen.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +BEMENUOPTS_FILE="$HOME/.config/bemenu/bemenu_opts.sh" + +HEIGHT="22" #height in pixels to make the bemenu prompt + +help () { + echo " usage: sh bemenu-colorgen.sh FILE" + echo " where FILE contains hex values of a base16 color scheme in this format:" + echo " NOTE: the file must contain 16 color values" + echo " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo " #282936" + echo " #3a3c4e" + echo " #F7CA88" + echo " #626483" + echo " #62d6e8" + echo " #e9e9f4" + echo " #f1f2f8" + echo " #f7f7fb" + echo " #ea51b2" + echo " #b45bcf" + echo " #00f769" + echo " #ebff87" + echo " #a1efe4" + echo " #62d6e8" + echo " #b45bcf" + echo " #00f769" + echo " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + + + FILE="$1" + +! [ -f "$FILE" ] && help && exit +[ "$( wc -l "$FILE" | cut -d ' ' -f 1 )" != "16" ] && help && exit + + +NB="" +NF="" +HB="" +HF="" +SB="" +SF="" +TB="" +TF="" +FB="" +FF="#ffffff" + +IFS=' +' + +COUNT=0 +for LINE in $(cat "$FILE") +do + case $COUNT in + 0) NB="$LINE" && HB="$LINE" && TB="$LINE" && FB="$LINE";; + 1) SB="$LINE";; + 6) HF="$LINE" && SF="$LINE";; + 10) NF="$LINE" && TF="$LINE";; + esac + + COUNT=$((COUNT + 1)) +done + +echo "bemenu colors updated." + +echo "#!/bin/sh" > "$BEMENUOPTS_FILE" +echo "#generated from: $1" >> "$BEMENUOPTS_FILE" +echo "export BEMENU_OPTS=\"-H $HEIGHT --nb $NB --nf $NF --hb $HB --hf $HF --sb $SB --sf $SF --tb $TB --tf $TF --fb $FB --ff $FF\"" >> "$BEMENUOPTS_FILE" diff --git a/browser.sh b/browser.sh new file mode 100755 index 0000000..a10f302 --- /dev/null +++ b/browser.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env sh + +WBROWSER=chromium-wayland + + +#OPTS="       Torrent ) +OPTS="Web +Video +YT +Audio +Youtube-dl audio +File +RSS +Torrent" + +rss() { +#sfeed + sed -i '$d' ~/.config/sfeed/sfeedrc + FEED_NAME="$(echo "" | bemenu -p "Feed Name: ")" + echo "feed \"$FEED_NAME\" \"$1\"" >> ~/.config/sfeed/sfeedrc + echo "}" >> ~/.config/sfeed/sfeedrc + +#newsboat + #echo "$1" >> ~/.config/newsboat/urls +} + + +ydl() { + OPT="default +select" + + SEL="$( echo "$OPT" | bemenu)" + + LOC="$HOME/media/audio/" + + if [ "$SEL" = "select" ]; then + if [ ! -f ~/.cache/lf/lastpath ]; then + mkdir -p ~/.cache/lf/ + touch ~/.cache/lf/lastpath + echo "~" > ~/.cache/lf/lastpath + fi + $TERMINAL -e lf -last-dir-path ~/.cache/lf/lastpath "$(cat ~/.cache/lf/lastpath)" + LOC="$(cat ~/.cache/lf/lastpath)" + fi + + cd "$LOC" + youtube-dl "$1" -f 140 + sleep 5 + +} + + + +sel() { + SEL="$( echo "$OPTS" | bemenu)" + + [ "$SEL" = "Web" ] && $WBROWSER "$1" && exit + + [ "$SEL" = "Video" ] && mpv "$1" && exit + + [ "$SEL" = "YT" ] && mpv --ytdl-format=18 "$1" && exit + + [ "$SEL" = "Audio" ] && $TERMINAL -e mpv "$1" && exit + + [ "$SEL" = "Youtube-dl audio" ] && ydl "$1" && exit + + [ "$SEL" = "File" ] && cd "$XDG_DOWNLOAD_DIR" && curl -O -L "$1" && exit + + [ "$SEL" = "RSS" ] && rss "$1" && exit + + [ "$SEL" = "Torrent" ] && transadd "$1" && exit + +#$WBROWSER "$1" +} + +if [ -z "$1" ]; then + #$WBROWSER #URL="$( xclip -o | sed 's/$//g')" && sel "$URL" && exit + #$WBROWSER #URL="$(wl-paste)" && sel "$URL" && exit + sel "$(wl-paste)" +else + #echo "$1" >> ~/.cache/log/browsersh.log + sel "$1" +fi diff --git a/chromium-wayland b/chromium-wayland new file mode 100755 index 0000000..4ed7436 --- /dev/null +++ b/chromium-wayland @@ -0,0 +1,3 @@ +#!/bin/sh +#chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@" +chromium --ozone-platform-hint=auto "$@" diff --git a/compress.sh b/compress.sh new file mode 100755 index 0000000..159d3f0 --- /dev/null +++ b/compress.sh @@ -0,0 +1,91 @@ +#!/bin/sh + +mkname() { + FILES="$( echo "$@" | head -1 - )" + + NAME="$(echo "$FILES" | awk '{print $1}' | xargs -0 basename | cut -f 1 -d '.')" + + #C=0 #create counter variable in case of infinite loop + #while : + #do + # case "$NAME" in + # *.*) NAME="$(echo "$NAME" | cut -f 2 -d '.')" ;; #trim file extensions + # #.*) NAME="$(echo "$NAME" | sed 's/^\.//g')" ;; #trim leading periods + # /*) NAME="$(echo "$NAME" | sed 's/^\///g')" ;; #trim leading slashes + # *) break;; #break if all above conditions are gone + # esac + # + # C=$((C + 1)) + # [ $C -gt 10 ] && break #if counter limit reached break loop + #done + + echo "$NAME" +} + +compress() { + set -f + echo "@ = $@" + FILES="$(echo "$@" | xargs -0)" + echo "FILES = $FILES" + + DIRNAME="$(basename "$FILES")" + echo "DIRNAME = $DIRNAME" + + if ! [ -d "$DIRNAME" ]; then + DIRNAME="$(mkname "$@")" + + echo "making directory $DIRNAME" + mkdir "$DIRNAME" + for f in $FILES + do + cp -r "$f" "$DIRNAME" + done + DELFLAG="TRUE" #set delete flag if we created a temp directory + fi + + echo "enter compression type [tar.gz, zip, 7z(default)]: " + read TYPE + + case "$TYPE" in + tar.gz) tar czf "$DIRNAME".tar.gz "$DIRNAME";; + zip) zip -r "$DIRNAME".zip "$DIRNAME";; + *) 7z a "$DIRNAME".7z "$DIRNAME";; + esac + + [ "$DELFLAG" ] && rm -rf "$DIRNAME" +} + +extract() { + set -f + FILE="$(echo "$1" | xargs)" #use xargs to trim whitespace + DIR="$(basename "$FILE" | cut -f 1 -d '.')" + mkdir "$DIR" + case $FILE in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf "$FILE" --directory="$DIR";; + *.tar.gz|*.tgz) tar xzvf "$FILE" --directory="$DIR";; + *.tar.xz|*.txz) tar xJvf "$FILE" --directory="$DIR";; + *.zip) unzip "$FILE" -d "$DIR";; + *.rar) unrar x "$FILE" "$DIR";; + *.7z | *.crx) 7z x "$FILE" -o"$DIR";; + esac +} + +help () { + echo "script to compress/extract files using tar/zip/rar" + echo " -c [ files/directories ] => compress input files/directories" + echo " -e [ file ] => extract input file to a subdirectory of the files name" +} + +#get all input except first argument, if first argument has a '-' and save in ARGS +#ARGS="$( echo "$@" | sed 's/^-.* //g' )" +ARGS="$(echo "$2")" + +echo "ARGS = $ARGS" + +if [ "$1" = "-c" ]; then + compress "$ARGS" +elif [ "$1" = "-e" ]; then + extract "$ARGS" +else + help +fi diff --git a/days_since.sh b/days_since.sh new file mode 100755 index 0000000..3dc1a88 --- /dev/null +++ b/days_since.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +help() { + echo "\$1 -> file to update or compare against" + echo "\$2 -> -u -> update file given by \$1" +} + +! [ -f "$1" ] && touch "$1" + + +if [ "$2" = "-u" ]; then + echo $(date "+%y%m%d %H") >> "$1" +else + + LAST="$( awk 'END{print $1}' < "$1" )" + HOUR="$( awk 'END{print $2}' < "$1" )"".0" + HOUR_NOW="$(date +%H)"".0" + + DAYS=$(( (($(date --date="$(date +%y%m%d)" +%s) - $(date --date="$LAST" +%s) ))/(60*60*24) )) + RET=$(bc <<< "scale=2; $DAYS + (($HOUR_NOW - $HOUR)/24.0)") + + echo "$RET" +fi diff --git a/encrypt.sh b/encrypt.sh new file mode 100755 index 0000000..b13dbf0 --- /dev/null +++ b/encrypt.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ "$1" = "-e" ];then + + if [ "$2" ]; then + tar -cvzf - "$2" | gpg -c > "$2".tar.gz.gpg + fi + +elif [ "$1" = "-d" ];then + + + if [ "$2" ]; then + gpg -d "$2" | tar -xvzf - + fi + +else + echo " $1 : -e, encrypt $2" + echo " -d, decrypt $2" + echo " $2 : directory or file to encrypt/decrypt" + +fi diff --git a/fixscr.sh b/fixscr.sh new file mode 100755 index 0000000..8e0af28 --- /dev/null +++ b/fixscr.sh @@ -0,0 +1,84 @@ +#!/bin/sh + +RES="1920x1080" +MON="VGA-1" +LAPTOP="LVDS-1" + + +list_mons() { + wlr-randr | grep -v "^ " | awk '{print $1}' +} + +get_mon() { + echo "$(list_mons)" | bemenu -p "Select monitor: " +} + +#$1 -> monitor to get resolutions of +get_res() { + if [ -z "$1" ]; then + echo "$RES" + else + echo "$(wlr-randr | sed '1,/VGA-1/d' | sed '1,/[0-9]/d' | awk '{print $1}')" | bemenu + fi +} + +laptop_only() { + wlr-randr --output VGA-1 --off #TODO only needed because my thinkpad has an issue, remove when no longer needed + wlr-randr --output "$LAPTOP" --on +} + +#$1 -> monitor +#$2 -> resolution +monitor_only() { + MON="$1" + RES="$2" + + echo "$MON $RES" >> ~/.cache/log/fixscrsh.log + + [ -z "$1" ] && MON="$(get_mon)" + [ -z "$2" ] && RES="$(get_res "$MON")" + + wlr-randr --output "$LAPTOP" --off + wlr-randr --output "$MON" --on --mode "$RES" +} + +span() { + MONS="$(list_mons)" + for i in $MONS + do + wlr-randr --output "$i" --on + done +} + +menu() { +OPTS="laptop_only +monitor_only +mirror +span +quit" + + SEL="$(echo "$OPTS" | bemenu)" + + [ "$SEL" = "laptop_only" ] && laptop_only + [ "$SEL" = "monitor_only" ] && monitor_only + [ "$SEL" = "span" ] && span +} + +help() { + echo "Usage: ./fixscr.sh" + echo " --menu => show bemenu prompts to select monitor configuration" + echo " --laptop-only => enable only laptop" + echo " --monitor-only [MONITOR] [RESOLUTION] => enable only external monitor" + echo " --help => show this help prompt" +} + +[ "$2" ] && MON="$2" +[ "$3" ] && RES="$3" + +if [ "$1" = "--menu" ]; then + menu +else + [ "$1" = "--monitor-only" ] && monitor_only "$MON" "$RES" + [ "$1" = "--laptop-only" ] && laptop_only + [ -z "$1" ] && help +fi diff --git a/gammastep-init.sh b/gammastep-init.sh new file mode 100755 index 0000000..93f01a1 --- /dev/null +++ b/gammastep-init.sh @@ -0,0 +1,10 @@ +#!/bin/sh +#run this to start gammastep +#got this from https://rumpelsepp.org/blog/geolocation-for-gammastep/ +#modified to be a posix shell script, and to save location data to a file +#so gammastep still works if internet is out. + +FN="$HOME/.cache/gs_geoclue.json" + +curl -Ls https://ipapi.co/json > "$FN" +gammastep -l "$( cat "$FN" | jq ".latitude" )":"$( cat "$FN" | jq ".longitude" )" -m wayland diff --git a/hotkeys.sh b/hotkeys.sh new file mode 100755 index 0000000..83f543f --- /dev/null +++ b/hotkeys.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +run () { + killall swhks + + swhks & pkexec swhkd +} + +close () { + killall swhks + sudo killall swhkd +} + +if [ "$1" = "-k" ]; then + close +else + run +fi diff --git a/mangaterm b/mangaterm new file mode 100755 index 0000000..410a2b9 --- /dev/null +++ b/mangaterm @@ -0,0 +1,107 @@ +#!/bin/sh + +#using PID for dirname in case multiple instances are opened they do not interfere +CACHEDIR="$HOME/.cache/mangaterm" +TMPDIR="$CACHEDIR/$$" + +# read_char var +# from: https://stackoverflow.com/a/30022297 +read_char() { + stty -icanon -echo + eval "$1=\$(dd bs=1 count=1 2>/dev/null)" + stty icanon echo +} + +help() { + echo "Read manga/comics/pdfs in the terminal" + echo " mangaterm.sh DIRECTORY" + echo " mangaterm.sh FILE" + echo "" + echo " --help show this help menu" + echo "" + echo "keybindings:" + echo " j -> next page" + echo " k -> previous page" + echo " q -> quit" + echo "" + exit +} + +disp() { + FILE="$DIR"/"$(echo "$FILES" | head -n "$1" | tail -n 1)" + clear + [ -f "$FILE" ] && chafa -C on "$FILE" + + printf "%s" "$FILE" +} + +close() { + rm -rf "$TMPDIR" + clear + exit +} + +readDir() { + DIR="$(echo "$1" | xargs)" + + #if opening an archive that created a subdirectory, open subdirectories until there are multiple files + SDIR="$(ls -A "$DIR")" + if [ "$(echo "$SDIR" | wc -l)" = "1" ]; then + if [ -d "$DIR/$SDIR" ]; then + readDir "$DIR"/"$SDIR" + fi + fi + + FILES="$(ls "$DIR")" + LEN="$(echo "$FILES" | wc -l)" + + disp "1" + + I=1 + while read_char char; do + if [ "$char" = "j" ]; then + I=$((I + 1)) + elif [ "$char" = "k" ]; then + I=$((I - 1)) + elif [ "$char" = "q" ]; then + close + fi + + if [ "$I" -ge "$LEN" ] || [ "$I" -le "0" ]; then + if [ "$I" -ge "$LEN" ]; then + I="$LEN" + elif [ "$I" -le "0" ]; then + I=0 + fi + fi + + disp "$I" + done + + close +} + +handleFile() { + case $(file --mime-type "$1" -b) in + inode/directory) readDir "$1" ;; + application/zip) unzip "$1" -d "$TMPDIR" && readDir "$TMPDIR" ;; + application/*rar) 7z x "$1" -o"$TMPDIR" && readDir "$TMPDIR" ;; + application/gzip) tar xzvf "$1" --directory="$TMPDIR" && readDir "$TMPDIR" ;; + application/pdf) pdftoppm -jpeg "$1" "$TMPDIR"/page && readDir "$TMPDIR" ;; + *) help ;; + + esac +} + +trap 'close' 2 +trap 'close' 15 + +[ "$1" = "--help" ] && help + +mkdir -p "$TMPDIR" + +if [ "$(echo "$1" | cut -c1-1)" = "-" ]; then + foot -e mangaterm "$2" 2>/dev/null > /dev/null +fi + +handleFile "$1" diff --git a/pipewire.sh b/pipewire.sh new file mode 100755 index 0000000..e92d4e6 --- /dev/null +++ b/pipewire.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +#programs to run to initialize pipewire, separated by spaces +PROGS="pipewire pipewire-pulse wireplumber" + +trap 'kill' 2 +trap 'kill' 15 + +kill() { + for PRG in $PROGS + do + pkill -KILL "$PRG" + sleep 1 + done +} + + +for PRG in $PROGS +do + + [ -z "$(pgrep "^$PRG\$")" ] && "$PRG" & + sleep 1 +done + +wait diff --git a/set-wp.sh b/set-wp.sh new file mode 100755 index 0000000..3a78185 --- /dev/null +++ b/set-wp.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env sh +#sets a random wallpaper using feh from the ~/wallpapers directory + +setwp() { + #wal -n -s -t -e -i "$1" + rm ~/.config/wall + cp "$1" "$HOME/.config/wall" + swaymsg "output * bg ~/.config/wall fill" + swaybg --image "$HOME/.config/wall" +} + + +#TODO convert this to be usable in wayland/sway +#[ "$1" = "-r" ] && WALLP=$(find -L ~/wallpapers/ -iname "*.*" -print | shuf -n 1) && feh --bg-scale "$WALLP" && exit + +#if [ -d "$1" ]; then +# case $1 in +# /*) sel="$(sxiv -o "$1" | sed '$!d')" ;; +# *) sel="$PWD/$(sxiv "$1" -o | sed '$!d')" ;; +# esac +# [ -f "$sel" ] && setwp "$sel" +# +#elif [ -f "$1" ]; then +# #setwp "$PWD/$1" +# setwp "$1" +#fi + +if [ -f "$1" ]; then + setwp "$1" +fi + + diff --git a/ss.sh b/ss.sh new file mode 100755 index 0000000..acfe389 --- /dev/null +++ b/ss.sh @@ -0,0 +1,77 @@ +#!/bin/sh +#Script wrapper for using grim for screenshots in sway +#commands taken from grim's github README, commands saved below for reference +#requires that sway, grim, jq, and imagemagick are installed + +#for all functions: +# $1 -> filename for output, will be set to - if -clip flag is set +# $2 -> program to pipe grim output to, defaults to cat, is set to wl-copy if -clip is set +# $3 -> seconds to wait before taking screenshot + +ss_all() { + sleep "$3" + grim "$1" | "$2" +} + +ss_mon() { + sleep "$3" + grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$1" | "$2" +} + +ss_win() { + sleep "$3" + grim -g "$(swaymsg -t get_tree | jq -j '.. | select(.type?) | select(.focused).rect | "\(.x),\(.y) \(.width)x\(.height)"')" "$1" | "$2" +} + +ss_sel() { + grim -g "$(slurp && sleep "$3")" "$1" | "$2" +} + +ss_color_pick() { + grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:- | "$2" +} + +help() { + echo "ss.sh [OPTIONS]" + echo " -a -> take screenshot of entire display" + echo " -m -> take screenshot of current monitor" + echo " -w -> take screenshot of currently active window" + echo " -s -> take screenshot of selection" + echo " -o FILENAME -> override filename output with given string FILENAME" + echo " --color-picker -> get the current color value of a selected pixel, prints data to stdout" + echo " --clip -> copy image to clipboard instead of writing to file" + echo " --secs SECS -> wait SECS seconds before taking screenshot" + echo " --help -> print this help message" + echo "" +} + +CMD="help" + +FN=$(date +'%s_grim.png') + +SECS="0" + +FN_FLAG="" +SL_FLAG="" + +PIPE_CMD="cat" + +for ARG in "$@" +do + [ "$ARG" = "-a" ] && CMD="ss_all" + [ "$ARG" = "-m" ] && CMD="ss_mon" + [ "$ARG" = "-w" ] && CMD="ss_win" + [ "$ARG" = "-s" ] && CMD="ss_sel" + [ "$ARG" = "--color-picker" ] && CMD="ss_color_pick" + [ "$ARG" = "--clip" ] && FN="-" && PIPE_CMD="wl-copy" + [ "$ARG" = "--help" ] && CMD="help" + + [ "$FN_FLAG" = "1" ] && FN_FLAG="" && FN="$ARG" #turn off FN_FLAG and set FN to argument after -o + [ "$ARG" = "-o" ] && FN_FLAG="1" #flag next argument to be file name + + [ "$SL_FLAG" = "1" ] && SL_FLAG="" && SECS="$ARG" #turn off SL_FLAG and set SECS to argument after -secs + [ "$ARG" = "-secs" ] && SL_FLAG="1" #flag next argument to be SECS + +done + +$CMD "$FN" "$PIPE_CMD" "$SECS" diff --git a/start-monero.sh b/start-monero.sh new file mode 100755 index 0000000..a8dc586 --- /dev/null +++ b/start-monero.sh @@ -0,0 +1,30 @@ +#!/bin/sh +#DATA_LOC="/media/SEAGATE/CRYPTO/monero/BLOCKCHAIN/" +#DATA_LOC="$HOME/.local/share/monero/BLOCKCHAIN/" +DATA_LOC="/media/SEAGATE/CRYPTO/monero/BLOCKCHAIN2/" +WALLET_LOC="$HOME"/.local/wallets/monero/myWallet/myWallet + +#add this in /etc/security/limits.conf +# $USER hard memlock 2048 +# $USER soft memlock 2048 + +#ulimit -l 2048 + +#monerod --data-dir "$DATA_LOC" --mining-threads 3 --detach +#sleep 60 + +if [ "$1" = "-w" ]; then + monero-wallet-cli --wallet-file "$WALLET_LOC" +elif [ "$1" = "-i" ]; then + mkdir -p "$DATA_LOC" + ulimit -l 2048 + monerod --data-dir "$DATA_LOC" --prune-blockchain --max-concurrency=4 --detach + #monerod --data-dir "$DATA_LOC" --db-salvage + echo "sleeping..." + sleep 1200 + echo "Wallet started." +else + echo "-i -> initialize, set ulimits and start monerod" + echo "-w -> open wallet in cli" +fi + diff --git a/sway-bar.sh b/sway-bar.sh new file mode 100755 index 0000000..c8b5cb2 --- /dev/null +++ b/sway-bar.sh @@ -0,0 +1,145 @@ +#!/bin/sh +#========================================================================= +# This script is used to set the status bar for dwm, or +# other wms that use xsetroot for a status bar. +# +# by default this script will only run once, to run in +# a loop give it the -l flag: ./sway-bar.sh -l +# +# Requires: pamixer +# +# ddate -> creates a date string +# audio -> creates a string representing the state of pulseaudio +# netup -> creates a string for the current network interface and status +# weather -> reads file written by ~/scripts/update-weather.sh to set the weather +# +# update -> calls all the above functions into swaybar to set status bar +# +# https://gitlab.com/ahub/dotfiles +#======================================================================== + +MAIL_DIR="$HOME/.local/share/mail" + +SEP=" | " + +ddate () { + printf " %s\n" "$(date "+%b %d, %Y ( %I:%M )")" #(%a) +} + + +audio () { + #volstat="$(amixer get Master)" + # if [ -n "$(echo "$volstat" | grep "\[off\]")" ]; then + # icon="🔇" + # else + # icon="$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed 's/[^0-9]*//g' | sed -n 1p -) 🔊" + # fi + + icon="$(vol.sh -g) 🔊" + [ "$(pamixer --get-mute)" = "true" ] && icon="🔇" + + printf "%s\n" "$icon" +} + +rss() { + rss_cnt=$(sfeed_plain ~/.local/share/sfeed/feeds/* | grep -c "^N" ) + #rss_cnt="$(newsboat -x print-unread | awk '{print $1}')" + printf "%s \n" "$rss_cnt" +} + +mail() { + #MAIL_DIR="$HOME/.local/share/mail/main/INBOX/new" + #COUNT="$(ls "$MAIL_DIR" | wc -l)" + + COUNT=0 + for MBOX in $(ls "$MAIL_DIR") + do + TMP_DIR="$MAIL_DIR""/$MBOX""/INBOX/new" + COUNT=$((COUNT+$(ls "$TMP_DIR" | wc -l))) + + done + + icon="$COUNT 📧" + + printf "%s\n" "$icon" + +} + +netup() { + icon="❗" + for iface in $(ls -1 /sys/class/net | sed '/^lo/d') + do + if [ $(cat /sys/class/net/"$iface"/operstate | grep up) ] ; then + if [ "$(echo "$iface" | grep w)" ]; then + icon=" " + else + icon="" + fi + elif [ -z "$icon" ]; then + icon="❗" + fi + done + + printf "%s\n" "$icon" +} + +weather() { + if ! [ -f ~/.cache/wttr ]; then + sh ~/.local/scripts/update-weather.sh + fi + icon="$(cat ~/.cache/wttr)" + + printf "%s\n" "$icon" +} + +cputemp() { + icon="$(cat /sys/class/thermal/thermal_zone0/temp | sed 's/\(.\)..$/.\1°C/')" + + printf "%s\n" "$icon" +} + +battery() { + BATT_DIR="/sys/class/power_supply/BAT0" + if [ -d "$BATT_DIR" ]; then + status="$(cat "$BATT_DIR"/status)" + charge="$(cat "$BATT_DIR"/capacity)" + fi + icon="" + if [ "$status" = "Discharging" ]; then + icon="${charge}% 🔋" + elif [ -z "$status" ]; then + icon="🔌" + else + icon="${charge}% 🔌" + fi + + printf "%s\n" "$icon" +} + +crypto() { + icon="$(cat ~/.cache/rate)" + printf "%s\n" "$icon" +} + +update() { + echo " $(crypto)$SEP$(cputemp)$SEP$(battery)$SEP$(netup)$SEP$(audio)$SEP$(rss)$SEP$(weather)$SEP$(ddate) " +} + + +#trap 'exit' 2 +#trap 'exit' 15 +#trap 'exit' 9 +if [ "$1" ] && [ "$1" = "-l" ]; then + echo "$$" > ~/.cache/statusbar_pid + + sh ~/.local/scripts/update-crypto.sh -i & + sh ~/.local/scripts/update-weather.sh -i & + + while true + do + update + sleep 60 + done +else + update +fi diff --git a/tordone b/tordone new file mode 100755 index 0000000..59724fe --- /dev/null +++ b/tordone @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +# * TR_APP_VERSION +# * TR_TIME_LOCALTIME +# * TR_TORRENT_DIR +# * TR_TORRENT_HASH +# * TR_TORRENT_ID +# * TR_TORRENT_NAME +notify-send "✔️ Transmission-daemon" "$TR_TORRENT_NAME download complete." diff --git a/trans-init b/trans-init new file mode 100755 index 0000000..303ad4d --- /dev/null +++ b/trans-init @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + +#sleep 30 +[ ! -d ~/.cache/transmission ] && mkdir -p ~/.cache/transmission + +while [ ! -f ~/.cache/transmission/bt_blocklists.gz ]; do + sleep 10 + cd ~/.cache/transmission/ + #curl -O -L https://github.com/sahsu/transmission-blocklist/releases/download/1.0.0/blocklist.gz + #curl -O -L https://github.com/sahsu/transmission-blocklist/releases/latest/download/blocklist.gz + curl -O -L https://github.com/Naunter/BT_BlockLists/raw/master/bt_blocklists.gz +done + +gunzip ~/.cache/transmission/bt_blocklists.gz +rm ~/.cache/transmission/bt_blocklists.gz + +if [ -f ~/.config/transmission-daemon/blocklists/bt_blocklists ]; then + rm ~/.config/transmission-daemon/blocklists/* +fi + +mv ~/.cache/transmission/bt_blocklists ~/.config/transmission-daemon/blocklists/ + +[ -z "$(pgrep transmission)" ] && transmission-daemon & diff --git a/unrar b/unrar new file mode 100755 index 0000000..88ca30c --- /dev/null +++ b/unrar @@ -0,0 +1,30 @@ +#!/bin/sh +# script acts as a basic wrapper for 7z for extracting .rar files +# requires p7zip-rar , p7zip with rar archive support +# not everything is implemented just x and l flags +# $1 -> flag +# $2 -> archive file name ex: archive.rar +# $3 -> (optional) directory to extract to + + +if [ "$1" = "x" ]; then + if [ "$(echo "$2" | grep ".rar" )" ]; then + if [ -d "$3" ]; then + 7z x "$2" -o"$3" + else + 7z x "$2" + fi + fi + exit +fi + +if [ "$1" = "l" ]; then + 7z l "$2" + exit +fi + +echo "This is a script that serves as a wrapper for 7z to use unrar commands." +echo "" +echo "unrar x file.rar --> extracts file to current directory" +echo "unrar x file.rar /path/to/directory/ --> extracts file to specified directory" +echo "unrar l file.rar --> prints out contents of file to terminal" diff --git a/update-crypto.sh b/update-crypto.sh new file mode 100755 index 0000000..18f3931 --- /dev/null +++ b/update-crypto.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +get() { + val="$(curl --connect-timeout 30 "rate.sx/1$1" | sed 's/\(\.[0-9][0-9]\).*$/\1/g')" + + printf "%s: %s\n" "$1" "$val" +} + +[ "$1" = "-i" ] && sleep 10 + + +UPDATE="$(get 'LINK') $(get 'XMR')" + +if [ $(echo $UPDATE | wc -m) -le 30 ]; then + echo "$UPDATE" > ~/.cache/rate +else + echo "❗" > ~/.cache/rate +fi diff --git a/update-hosts b/update-hosts new file mode 100755 index 0000000..17a9ba9 --- /dev/null +++ b/update-hosts @@ -0,0 +1,46 @@ +#!/usr/bin/env sh +#=================== +#TODO: +# + currently making /etc/hosts a symlink to a user owned file to allow script to run w/o sudo, possible security issue. +# +#FLAGS: +# if $1 is -u then update files from internet +# +# ================== + +BLOCKFILE="$HOME/.config/blocklist" + +update() { + mkdir -p ~/.local/share/update_hosts + cd ~/.local/share/update_hosts + + if [ ! -f "./.hosts.orig" ]; then + cp /etc/hosts ./.hosts.orig + fi + + if [ "$1" = "-u" ]; then + + rm ./.swc_hosts + #get someonewhocares.org hosts file + curl https://someonewhocares.org/hosts/hosts -o ./.swc_hosts + + fi + + #curl https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts -o ./.sb_hosts + + #[ -f "$BLOCKFILE" ] && echo "blocklist file found." && sed 's/^/127.0.0.1 /g' "$BLOCKFILE" > ./blocklist + + #if [ -f "./blocklist" ]; then + # cat ./.hosts.orig ./.swc_hosts ./.sb_hosts ./blocklist > ./hosts + #else + cat ./.hosts.orig ./.swc_hosts > ./hosts + #fi + + #cat ./.hosts.orig ./.swc_hosts > ./hosts + + #sudo mv ./hosts /etc/ + [ "$1" = "-u" ] && sudo rm /etc/hosts && sudo ln -s $HOME/.local/share/update_hosts/hosts /etc/ && exit +} + + +update "$1" diff --git a/update-weather.sh b/update-weather.sh new file mode 100755 index 0000000..3302007 --- /dev/null +++ b/update-weather.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env sh + +[ "$1" = "-i" ] && sleep 10 + +UPDATE="$(curl --connect-timeout 30 "wttr.in/?format=1")" # > ~/.cache/wttr + +echo $UPDATE | wc -m + +if [ $(echo $UPDATE | wc -m) -le 30 ]; then + echo "$UPDATE" > ~/.cache/wttr + +else + echo "❗" > ~/.cache/wttr + +fi diff --git a/vol.sh b/vol.sh new file mode 100755 index 0000000..d8c5522 --- /dev/null +++ b/vol.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +PERC="0.05" + +refbar() { + pkill sleep -P "$(cat ~/.cache/statusbar_pid )" +} + +inc() { + [ "$1" ] && PERC="$1" + #pulsemixer --change-volume +"$1" && refbar + #amixer sset Master 1%+ && refbar + #pamixer -i "$PERC" && refbar + wpctl set-volume @DEFAULT_AUDIO_SINK@ "$(echo "$(get) + $PERC" | bc)" && refbar +} + +dec() { + [ "$1" ] && PERC="$1" + #pulsemixer --change-volume -"$1" && refbar + #amixer sset Master 1%- && refbar + #pamixer -d "$PERC" && refbar + wpctl set-volume @DEFAULT_AUDIO_SINK@ "$(echo "$(get) - $PERC" | bc)" && refbar +} + +mute() { + #pulsemixer --toggle-mute && refbar + #amixer sset Master toggle && refbar + #pamixer -t && refbar + wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && refbar +} + +get() { + wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d' ' -f 2 +} + +help() { + echo "-i N -> increment volume by N (0.00 - 1.00)" + echo "-d N -> decrement volume by N (0.00 - 1.00)" + echo "-g -> get current volume" + echo "--toggle-mute -> toggle mute sound" +} + +if [ "$1" = "-i" ]; then + inc "$2" +elif [ "$1" = "-d" ]; then + dec "$2" +elif [ "$1" = "--toggle-mute" ]; then + mute +elif [ "$1" = "-g" ]; then + get +else + help +fi diff --git a/website_dl.sh b/website_dl.sh new file mode 100755 index 0000000..681cc22 --- /dev/null +++ b/website_dl.sh @@ -0,0 +1,2 @@ +#!/bin/sh +wget --mirror --convert-links --adjust-extension --page-requisites --no-parent "$1"