initial commit

master
alex 2022-09-18 21:13:02 -05:00
commit 96bdcdf6ac
24 changed files with 1035 additions and 0 deletions

22
backup.sh Executable file
View File

@ -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

69
bemenu-colorgen.sh Executable file
View File

@ -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"

83
browser.sh Executable file
View File

@ -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

3
chromium-wayland Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
#chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"
chromium --ozone-platform-hint=auto "$@"

91
compress.sh Executable file
View File

@ -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

23
days_since.sh Executable file
View File

@ -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

21
encrypt.sh Executable file
View File

@ -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

84
fixscr.sh Executable file
View File

@ -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

10
gammastep-init.sh Executable file
View File

@ -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

18
hotkeys.sh Executable file
View File

@ -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

107
mangaterm Executable file
View File

@ -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"

25
pipewire.sh Executable file
View File

@ -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

32
set-wp.sh Executable file
View File

@ -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

77
ss.sh Executable file
View File

@ -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"

30
start-monero.sh Executable file
View File

@ -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

145
sway-bar.sh Executable file
View File

@ -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

8
tordone Executable file
View File

@ -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."

23
trans-init Executable file
View File

@ -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 &

30
unrar Executable file
View File

@ -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"

18
update-crypto.sh Executable file
View File

@ -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

46
update-hosts Executable file
View File

@ -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"

15
update-weather.sh Executable file
View File

@ -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

53
vol.sh Executable file
View File

@ -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

2
website_dl.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent "$1"