diff options
Diffstat (limited to 'scripts/util')
-rwxr-xr-x | scripts/util/afk.sh | 21 | ||||
-rwxr-xr-x | scripts/util/arcc | 11 | ||||
-rwxr-xr-x | scripts/util/arco | 11 | ||||
-rwxr-xr-x | scripts/util/bday.sh | 47 | ||||
-rwxr-xr-x | scripts/util/bmark.sh | 3 | ||||
-rwxr-xr-x | scripts/util/croc.sh | 7 | ||||
-rwxr-xr-x | scripts/util/dic | 5 | ||||
-rwxr-xr-x | scripts/util/dupt.sh | 5 | ||||
-rwxr-xr-x | scripts/util/fmail.sh | 3 | ||||
-rwxr-xr-x | scripts/util/git-repo-add.sh | 57 | ||||
-rwxr-xr-x | scripts/util/gtab_init.sh | 25 | ||||
-rwxr-xr-x | scripts/util/hist.sh | 3 | ||||
-rwxr-xr-x | scripts/util/killpid.sh | 3 | ||||
-rwxr-xr-x | scripts/util/manfzf.sh | 13 | ||||
-rwxr-xr-x | scripts/util/netsel.sh | 6 | ||||
-rwxr-xr-x | scripts/util/open_1 | 5 | ||||
-rwxr-xr-x | scripts/util/pgen.sh | 34 | ||||
-rwxr-xr-x | scripts/util/sc.sh | 3 | ||||
-rwxr-xr-x | scripts/util/sp.sh | 11 | ||||
-rwxr-xr-x | scripts/util/update-web.sh | 5 | ||||
-rwxr-xr-x | scripts/util/vol | 19 | ||||
-rwxr-xr-x | scripts/util/vol+ | 17 | ||||
-rwxr-xr-x | scripts/util/vol- | 22 |
23 files changed, 336 insertions, 0 deletions
diff --git a/scripts/util/afk.sh b/scripts/util/afk.sh new file mode 100755 index 0000000..a189dd5 --- /dev/null +++ b/scripts/util/afk.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# TODO: for dunst, we need to create a watchdog process + +# Prevent screen from sleeping or trick websites to think you're present while afk + +dzen_opts="-bg white -fg black -p 1 -x -475 -y 50 -w 475 -h 50" +message="Away from keyboard for ~$1 minutes" + +#[[ $(pgrep dunst) ]] && dunstctl set-paused true +while true; do + for direction in "10 0" "0 10" "-10 0" "0 -10"; do # move around + xdotool mousemove_relative -- $direction + printf '%s\n' "$message" | dzen2 $dzen_opts + done + + xdotool mousemove 2880 540 # someplace near the middle +done + +#[[ $(pgrep dunst) ]] && dunstctl set-paused false +rm "$PID_FILE" diff --git a/scripts/util/arcc b/scripts/util/arcc new file mode 100755 index 0000000..7bb25e7 --- /dev/null +++ b/scripts/util/arcc @@ -0,0 +1,11 @@ +#!/bin/bash + +if df | grep -q aa && df | grep -q arc ; then + sudo umount ~/Digital/Drives/D2 + sudo cryptsetup close /dev/mapper/arc && + + sudo umount ~/Digital/Drives/ED + sudo cryptsetup close /dev/mapper/aa + else + echo "Error: Drive not mounted."; +fi diff --git a/scripts/util/arco b/scripts/util/arco new file mode 100755 index 0000000..2d93661 --- /dev/null +++ b/scripts/util/arco @@ -0,0 +1,11 @@ +#!/bin/bash + +if lsblk | grep -q sdc && lsblk | grep -q sdb ; then + sudo cryptsetup open /dev/sdb arc + sudo mount /dev/mapper/arc ~/Digital/Drives/D2 -o compress-force && + + sudo cryptsetup open /dev/sdc aa + sudo mount /dev/mapper/aa ~/Digital/Drives/ED +else + echo "Error: Drive not mounted."; +fi diff --git a/scripts/util/bday.sh b/scripts/util/bday.sh new file mode 100755 index 0000000..72ac556 --- /dev/null +++ b/scripts/util/bday.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# I'm forgetful of these things + +today=$(date '+%m/%d') +run_date=$(date '+%Y-%m-%d') +#F_BDAY_RECORDS="bdays.txt" +F_BDAY_RECORDS=~/.local/share/bdays.txt +BDAY_IMG=~/Digital/Pictures/Backgrounds/birthday.png + +last_run=$( + grep '^# last run:' "$F_BDAY_RECORDS" 2>/dev/null \ + | tail -n1 \ + | awk '{ print $4 }' +) +[ "$last_run" = "$run_date" ] && exit 0 + + +BDAY_LIST=$(awk -v td="$today" ' + $0 ~ /^[[:space:]]*#/ { next } # skip comments + NF < 3 { next } # skip malformed + $1 == td { + printf("%s %d\n", $3, $2 + 1) + } +' "$F_BDAY_RECORDS") + +[ -z "$BDAY_LIST" ] && exit 0 + +magick -size 800x600 canvas:black \ + -gravity north -font 'Adwaita-Sans-Bold' -pointsize 72 -fill white \ + -annotate +0+50 'Birthdays Today' \ + -gravity center -font 'Adwaita-Sans' -pointsize 36 \ + -annotate +0+100 "$BDAY_LIST" \ + ~/Digital/Pictures/Backgrounds/birthday.png + +awk -v td="$today" ' + /^# last run:/ { next } # drop old last-run + $0 ~ /^[[:space:]]*#/ { print; next } # preserve other comments + NF < 3 { print; next } # preserve blanks/malformed + $1 == td { $2 = $2 + 1 } # bump age + { print $1, $2, $3 } # print all records +' "$F_BDAY_RECORDS" > bdays.tmp + +echo "# last run: $run_date" >> bdays.tmp +mv bdays.tmp "$F_BDAY_RECORDS" + +xwallpaper --output HDMI-A-0 --center "$BDAY_IMG" diff --git a/scripts/util/bmark.sh b/scripts/util/bmark.sh new file mode 100755 index 0000000..466414c --- /dev/null +++ b/scripts/util/bmark.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +xdotool type $(grep -v '^#' ~/.local/share/bmark/bmarks.txt | dmenu -i -l 30 | cut -d' ' -f1) diff --git a/scripts/util/croc.sh b/scripts/util/croc.sh new file mode 100755 index 0000000..ae7efbd --- /dev/null +++ b/scripts/util/croc.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +nmcli c show --active | grep -q "wg-mullvad" 2>>/dev/null && read -p "VPN is active. Contine? [Y/n] " ON || echo "VPN is off, aborting."; break ; + +case $ON in + [Yy]* ) croc $1; +esac diff --git a/scripts/util/dic b/scripts/util/dic new file mode 100755 index 0000000..58755a8 --- /dev/null +++ b/scripts/util/dic @@ -0,0 +1,5 @@ +#!/bin/sh + +# Online CLI dictionary + +curl -s https://www.wordnik.com/words/"$1" | awk '/id="define/{p=1}p' | awk '/div/{p++}p==2' | sed -e 's/<[^>]*>//g' | sed 's/^ *$//g' | expand --tabs=1 | less diff --git a/scripts/util/dupt.sh b/scripts/util/dupt.sh new file mode 100755 index 0000000..61d2260 --- /dev/null +++ b/scripts/util/dupt.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +# open a new terminal in the current working directory + +st -e sh -c 'cd "$PWD" && exec $SHELL' >/dev/null 2>&1 & diff --git a/scripts/util/fmail.sh b/scripts/util/fmail.sh new file mode 100755 index 0000000..e90e91a --- /dev/null +++ b/scripts/util/fmail.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/local/bin/mailsync && /bin/mbsync -c /home/black/.config/mbsync/config -a diff --git a/scripts/util/git-repo-add.sh b/scripts/util/git-repo-add.sh new file mode 100755 index 0000000..709ead0 --- /dev/null +++ b/scripts/util/git-repo-add.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# this is to be run locally after remote script has executed + +if [ $# -ne 1 ]; then + echo -e "\nUsage: $0 'new-repo-name'\n" + exit 1 +fi + +if [ -d "$1" ]; then + echo "Directory $1 already exists. Aborting." + exit 1 +fi + + +echo -e "\nCreating new repo $PWD/$1" + +mkdir "$1" && echo "created $PWD/$1" +cd "$1" +git init && echo "initialized $1" +touch README.md && echo "created 'README.md'" +echo "init" > README.md +git add . && echo "staged $1" +git commit -m 'initial commit' && echo "commited repo" + +echo -e "\n\n" +while true; do + echo "Enter remote name and URL (press enter to finish)" + echo -e "eg. origin ssh://git@ssh.github.com:443/user/$1\n" + read -p ": " name url + + if [ -z "$name" ] && [ -z "$url" ]; then + break + fi + + if [ -z "$name" ] || [ -z "$url" ]; then + echo -e "\nYou must provide a name and url" + echo -e "eg. origin ssh://git@ssh.github.com:443/user/$1\n\n" + continue + fi + + git remote add "$name" "$url" + echo "added $name ($url)" +done + +read -p "Push to remote? (y/n): " push_choice + +if [[ "$push_choice" =~ ^[Yy]$ ]]; then + for remote in $(git remote); do + git push "$remote" --all + echo "Pushed to remote: $remote" + done +else + echo "Push aborted." +fi + +cd .. diff --git a/scripts/util/gtab_init.sh b/scripts/util/gtab_init.sh new file mode 100755 index 0000000..99b3cde --- /dev/null +++ b/scripts/util/gtab_init.sh @@ -0,0 +1,25 @@ +pad_id=$(xinput | grep "HID 256c:006d Pad pad" | cut -f 2 | cut -d '=' -f 2) +stylus_id=$(xinput | grep "HID 256c:006d Pen stylus" | cut -f 2 | cut -d '=' -f 2) +#SCREEN="$1" + +# Reset Buttons +xsetwacom set $pad_id Button 1 "key + " +xsetwacom set $pad_id Button 2 "key + " +xsetwacom set $pad_id Button 3 "key + " +xsetwacom set $pad_id Button 8 "key + " +xsetwacom set $pad_id Button 9 "key + " +xsetwacom set $pad_id Button 10 "key + " +xsetwacom set $pad_id Button 11 "key + " +xsetwacom set $pad_id Button 12 "key + " + +# Set the Screen +xsetwacom set $stylus_id MapToOutput "DisplayPort-0" # $SCREEN + +# Set Buttons +xsetwacom --set $pad_id Button 1 "key +ctrl z -ctrl" +xsetwacom --set $pad_id Button 2 "key +ctrl s -ctrl" +xsetwacom --set $pad_id Button 9 "key +ctrl shift p -ctrl" +xsetwacom --set $pad_id Button 10 "key +ctrl shift e -ctrl" +xsetwacom --set $pad_id Button 11 "key +ctrl shift a -ctrl" +#xsetwacom --set $pad_id Button 12 "key +ctrl 7 -ctrl" +xsetwacom --set $pad_id Button 12 "key +ctrl shift r -ctrl" diff --git a/scripts/util/hist.sh b/scripts/util/hist.sh new file mode 100755 index 0000000..16b7717 --- /dev/null +++ b/scripts/util/hist.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +$(cat "$HISTFILE" | fzf) diff --git a/scripts/util/killpid.sh b/scripts/util/killpid.sh new file mode 100755 index 0000000..34a738a --- /dev/null +++ b/scripts/util/killpid.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +ps -aux | fzf | awk '{print $2}' | xargs -r kill diff --git a/scripts/util/manfzf.sh b/scripts/util/manfzf.sh new file mode 100755 index 0000000..aa25d11 --- /dev/null +++ b/scripts/util/manfzf.sh @@ -0,0 +1,13 @@ +# Man without options will use fzf to select a page +function fzf-man(){ + MAN="/usr/bin/man" + if [ -n "$1" ]; then + $MAN "$@" + return $? + else + $MAN -k . | fzf --reverse --preview="echo {1,2} | sed 's/ (/./' | sed -E 's/\)\s*$//' | xargs $MAN" | awk '{print $1 "." $2}' | tr -d '()' | xargs -r $MAN + return $? + fi +} + +fzf-man diff --git a/scripts/util/netsel.sh b/scripts/util/netsel.sh new file mode 100755 index 0000000..b1b2a88 --- /dev/null +++ b/scripts/util/netsel.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +BSSID=$(printf "%s" "$(nmcli d wifi | fzf --height 40%)" | sed 's/\*//' | awk '{print $1}') +#read -sp "Enter password for $BSSID: " PASSWORD + +nmcli d wifi connect $BSSID #password "$PASSWORD" diff --git a/scripts/util/open_1 b/scripts/util/open_1 new file mode 100755 index 0000000..58c8efc --- /dev/null +++ b/scripts/util/open_1 @@ -0,0 +1,5 @@ +#!/bin/sh + +sudo cryptsetup open /dev/sda1 one + +sudo mount /dev/mapper/one ~/Digital/Drives/D1 -o compress-force diff --git a/scripts/util/pgen.sh b/scripts/util/pgen.sh new file mode 100755 index 0000000..f3a7976 --- /dev/null +++ b/scripts/util/pgen.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# A pseudorandom password generator + +LEN=16 # default length +SYMBOLS=true + +gen_psw() { + local len=$1 + local symbols=$2 + local charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + [[ $symbols == true ]] && charset="${charset}!@#$%^&*()_+{}|:<>?" + + psw=$(< /dev/urandom tr -dc "$charset" | head -c "$len") + echo "$psw" +} + +while [[ "$#" -gt 0 ]]; do + case $1 in + -l|--length) LEN="$2"; shift ;; + -ns|--no-symbols) SYMBOLS=false ;; + *) echo "Unknown flag: $1"; exit 1 ;; + esac + shift +done + +PASSWORD=$(gen_psw "$LEN" "$SYMBOLS") +echo "$PASSWORD" + +if command -v xclip &> /dev/null; then + echo -n "$PASSWORD" | xclip -selection clipboard + printf '%s\n' "Password has been copied." | dzen2 -p 1 -bg white -fg black -x -305 -y 50 -w 455 -h 50 +fi diff --git a/scripts/util/sc.sh b/scripts/util/sc.sh new file mode 100755 index 0000000..9557e34 --- /dev/null +++ b/scripts/util/sc.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +maim -s -m 10 | tee ~/Digital/Pictures/Screen\ Shots/$(date +%Y-%m-%d__%S%S).jpg | xclip -selection clipboard -t image/png diff --git a/scripts/util/sp.sh b/scripts/util/sp.sh new file mode 100755 index 0000000..b4ce819 --- /dev/null +++ b/scripts/util/sp.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# pacman wrapper + +case $* in + -Syu ) sudo pacman -Syu + echo 0 > ~/.local/share/updates.txt ;; + -Syyu ) sudo pacman -Syyu + echo 0 > ~/.local/share/updates.txt ;; + * ) sudo pacman ;; +esac diff --git a/scripts/util/update-web.sh b/scripts/util/update-web.sh new file mode 100755 index 0000000..88292b5 --- /dev/null +++ b/scripts/util/update-web.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +SITE=$(printf "$(ls ~/Dev/website)" | dmenu -i -p "Pick a site to update"); +rsync -uvrp --delete-after ~/Dev/website/"$SITE"/ root@nagy.contact:/var/www/"$SITE"/ +printf "Updating: $SITE\n" | dzen2 -bg white -fg black -p 2 -x -375 -y 50 -w 275 -h 50 diff --git a/scripts/util/vol b/scripts/util/vol new file mode 100755 index 0000000..1aa82c0 --- /dev/null +++ b/scripts/util/vol @@ -0,0 +1,19 @@ +#!/bin/sh + + mute_state=$(amixer -c 3 get 'Master',0 | grep -o '\[on\]') + + if [[ $mute_state == "[on]" ]]; then + amixer -c 3 set 'Master',0 mute + printf '%s\n' "Volume: Off" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + amixer -c 3 set 'Headphone',0 mute + else + amixer -c 3 set 'Master',0 unmute + amixer -c 3 set 'Headphone',0 unmute + printf '%s\n' "Volume: On" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + fi + + +#amixer -D pulse sset Master toggle +#state=$(amixer -D pulse sget Master | grep 'Front Left:' | sed -E 's/.*\[([a-z]+)\].*/\1/') +#printf 'Volume %s\n' "$state" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 +# amixer set Master toggle ; a="$(awk -F"[][]" '/Front Left/ { print $4 }' <(amixer sget Master) | tail -n +2)"; printf '%s\n' "Volume: $a" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 diff --git a/scripts/util/vol+ b/scripts/util/vol+ new file mode 100755 index 0000000..89c8fcb --- /dev/null +++ b/scripts/util/vol+ @@ -0,0 +1,17 @@ +#!/bin/bash + +MASTER_SINK=$(pactl list short sinks | grep "RUNNING" | awk '{print $1}') +if [ $# -eq 0 ] +then + pactl set-sink-volume $MASTER_SINK +5% +else + pactl set-sink-volume $MASTER_SINK +$@% +fi +level=$(pactl list sinks | grep -E "RUNNING|Volume" | grep -A1 "RUNNING" | grep -E -o "[[:digit:]]{1,5}%" | head -n1) +printf '%s\n' "Vol $(echo $level)" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + +#amixer -D pulse sset Master -c 3 5%+ +#level=$(amixer -D pulse sget Master -c 3 | sed -n 's/^[^[]*\[\([0-9]*%\)\].*$/\1/p') +#3printf '%s\n' "Vol $(echo $level)" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + +#amixer set Master -c 3 5%+ > /dev/null 2>&1 ; a="$()" ; printf '%s\n' "Vol $(amixer -c 3 sget Master | awk -F'[][]' '/Mono: Playback/ {print $2}')" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 diff --git a/scripts/util/vol- b/scripts/util/vol- new file mode 100755 index 0000000..c2c2f9c --- /dev/null +++ b/scripts/util/vol- @@ -0,0 +1,22 @@ +#!/bin/bash + + +MASTER_SINK=$(pactl list short sinks | grep "RUNNING" | awk '{print $1}') +if [ $# -eq 0 ] +then + pactl set-sink-volume $MASTER_SINK -5% +else + pactl set-sink-volume $MASTER_SINK -$@% +fi + +level=$(pactl list sinks | grep -E "RUNNING|Volume" | grep -A1 "RUNNING" | grep -E -o "[[:digit:]]{1,5}%" | head -n1) +printf '%s\n' "Vol $(echo $level)" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + + +#amixer -D pulse sset Master -c 3 5%- + +#level=$(amixer -D pulse sget Master -c 3 | grep 'Front Left:' | sed -E 's/.*\[([0-9]+%)\].*/\1/') +#level=$(amixer -D pulse sget Master -c 3 | sed -n 's/^[^[]*\[\([0-9]*%\)\].*$/\1/p') +#printf '%s\n' "Vol $(echo $level)" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 + +#amixer set Master -c 2 5%- > /dev/null 2>&1 ; a="$()" ; printf '%s\n' "Vol $(amixer -c 2 sget Master | awk -F'[][]' '/Mono: Playback/ {print $2}')" | dzen2 -p 1 -bg white -fg black -x -375 -y 50 -w 275 -h 50 |