Various useful and useless scripts.

This commit is contained in:
photosheep 2021-07-17 22:18:41 -04:00
parent f58e08c56c
commit 6da3dcbb58
17 changed files with 528 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
testing

44
bonfetch.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash
color=$'\e[36m\e'$'[1m'
base=$'\e[(B'$'\e[90m'
insline () {
sed "$1s/$/ $2/"
}
insloop () {
line=$1
file=$2
shift 2
line=$(($line-$#+1))
for text in "$@"
do
cat $file | sed "$(echo $line)s/$/ $color$text$base/" > $file
line=$(($line+1))
done
}
distro=$(lsb_release -i | awk '{print $3}' | tr '[:upper:]' '[:lower:]')
kern=$(uname -r | sed 's/\-.*//;')
res=$(xrandr --current | grep ' connected' | sed 's/\+.*//;s/.* //;')
shell=$(basename $SHELL)
wmid=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK | sed 's/.*\s//;')
wm=$(xprop -id "$wmid" -notype -len 100 -f _NET_WM_NAME 8t | grep 'WM_NAME' | sed 's/\"//g;s/.*\s//')
model=$(cat /sys/devices/virtual/dmi/id/product_version)
upt=$(cat /proc/uptime | sed 's/\..*//')
days=$(echo $(( $upt / 60 / 60 / 24 ))d )
hours=$(echo $(( $upt / 60 / 60 % 24 ))h )
minutes=$(echo $(( $upt / 60 % 60 ))m )
pkgs_aur=$(pacman -Qqm | wc -l)
pkgs_total=$(pacman -Qq | wc -l)
wifi_quality=$(nmcli -f IN-USE,BARS device wifi list | awk '/*/ {print $2}')
TREEFILE=/tmp/bonfetch.txt
bonsai.sh --termcolors --life 15 --multiplier 10 --base 2 --geometry 20,200 | sed 1,8d > $TREEFILE
insloop $(cat $TREEFILE | wc -l) $TREEFILE "distro: $distro" "kernel: $kern" "resolution: $res"\
"shell: $shell" "wm: $wm" "uptime: $days $hours $minutes" "packages: $pkgs_total (aur: $pkgs_aur)" "wifi: $wifi_quality"
clear
cat $TREEFILE | sed '/^\s*$/d'
rm $TREEFILE

2
exif-notify.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
dunstify "EXIF Data" "$(exiftool -q -p ~/.scripts/notify-exif.fmt $@)"

14
f16.py Executable file
View File

@ -0,0 +1,14 @@
#!/bin/python3.8
import sys
def f16(data):
s1, s2 = 0, 0
for item in range(0, len(data)):
s1 = (s1 + ord(data[item])) % 255
s2 = (s1 + s2) % 255
return( hex(s2 << 8 | s1)[2:].zfill(4) )
print(f16(sys.argv[1]))

72
flowerfetch.sh Executable file
View File

@ -0,0 +1,72 @@
#!/bin/bash
leaf=$'\e[38;5;82m'
stem=$'\e[38;5;70m'
ground=$'\e[38;5;130m'
stamen=$'\e[38;5;226m'
flower=$'\e[38;5;231m'
truered=$'\e[38;5;160m'
truegrn=$'\e[38;5;82m'
white=$'\e[0m'
c1=$'\e[31m'
c4=$'\e[34m'
c6=$'\e[36m'
c7=$'\e[37m'
bats=()
for battery in /sys/class/power_supply/BAT*;
do
baticon=""
batstat=$(cat $battery/status)
if [ $batstat == "Discharging" ]
then
baticon="$truered"
elif [ $batstat == "Charging" ]
then
baticon="$truegrn"
fi
bats+=("[ $(basename $battery) $(cat $battery/capacity)% $baticon$c7]")
done
distro=$(lsb_release -si)
kern=$(uname -r | sed 's/\-.*//;')
res=$(xrandr --current | grep ' connected' | sed 's/\+.*//;s/.* //;')
shell=$(basename $SHELL)
wmid=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK | sed 's/.*\s//;')
wm=$(xprop -id "$wmid" -notype -len 100 -f _NET_WM_NAME 8t | grep 'WM_NAME' | sed 's/\"//g;s/.*\s//')
model=$(cat /sys/devices/virtual/dmi/id/product_version)
upt=$(cat /proc/uptime | sed 's/\..*//')
days=$(echo $(( $upt / 60 / 60 / 24 ))d )
hours=$(echo $(( $upt / 60 / 60 % 24 ))h )
minutes=$(echo $(( $upt / 60 % 60 ))m )
pkgs_aur=$(pacman -Qqm | wc -l)
pkgs_total=$(pacman -Qq | wc -l)
#pkgs_native=$(pacman -Qqn | wc -l)
#pkgs_total=$(($pkgs_native + $pkgs_aur))
wifi_quality=$(nmcli -f IN-USE,BARS device wifi list | awk '/*/ {print $2}')
tput clear
cat << EOF
$flower _ _
(_\\_)
(_ $stamen<_{}$flower
(_/_)
$leaf |\\ $stem|$leaf
\\\\$stem|$leaf /|
\\$stem|$leaf//
$stem|$leaf/
$ground,.,.,$stem|$ground.,.,.$c4
model $white-$c7 $model $c6
distro $white-$c7 $distro $c4
kernel $white-$c7 $kern $c6
wm $white-$c7 $wm $c4
res $white-$c7 $res $c6
shell $white-$c7 $shell $c4
uptime $white-$c7 $days $hours $minutes $c6
bat $white-$c7 ${bats[*]} $c4
pkgs $white-$c7 $pkgs_total (AUR: $pkgs_aur) $c6
wifi $white-$c7 $wifi_quality
EOF

20
get_calibration_profiles.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
icc_file_location="/home/$(whoami)/Docs/display/"
icc_list=$(find $icc_file_location -maxdepth 1 -name '*icc' -printf '%f\n' -o -name '*icm' -printf '%f\n' | sed "$ a Default" )
icc_amount=$(echo $icc_list | wc -w)
if [ "$icc_amount" -lt 2 ]; then
notify-send "No .icc files found in $icc_file_location"
exit 1
fi
choice=$(echo $icc_list | rofi -mesg 'Select your ICC.' -sep ' ' -dmenu)
display_list=$(xrandr | rg 'Screen' | sed -E 's/:(.*)//;s/(.*) //')
choice2=$(echo $display_list | rofi -mesg 'Select your panel.' -dmenu)
if [[ $choice == "Default" ]]; then
xcalib -s $choice2 -c
else
xcalib -s $choice2 $icc_file_location$choice
fi

7
get_updates.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
updates=/tmp/update_list.txt
checkupdates > $updates
notify-send -t 60000 "$(cat $updates | wc -l) packages that require updating..." "$(cat $updates | sed 's/ .*//g')"
rm $updates

1
imv-exif.fmt Normal file
View File

@ -0,0 +1 @@
${make;s/ .*//} $model + $lensid f/$fnumber ${shutterspeed}s ISO$iso ${focallength;s/ .*//}mm $directory/$filename $megapixels MP ($imagesize)

9
mping.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
mp () {
echo "$1 - "$(ping -c5 $1 | sed -En 's/.*time=//g;s/ ms/ms/g;2,6p')
}
export -f mp
parallel mp {} ::: $@ | column --table

4
notify-exif.fmt Normal file
View File

@ -0,0 +1,4 @@
${make;s/ .*//} $model + $lensmodel
<i>f/</i>$fnumber ${shutterspeed}<i>s</i> <i>ISO</i>$iso ${focallength;s/ .*//}<i>mm</i>
<i>$directory/</i><b>$filename</b>
<i>$megapixels MP ($imagesize)</i>

26
pianobar_lyrics.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
DATA=()
format () {
echo $* | tr ' ' '-'
}
while read LINE; do
DATA+=("$LINE")
done < /tmp/pianobar_info
ARTIST=${DATA[1]}
SAFE_ARTIST=$(format $ARTIST)
TITLE=${DATA[0]}
SAFE_TITLE="$(format $TITLE)"
ALBUM=${DATA[2]}
if [[ `wget -S --spider "https://makeitpersonal.co" 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
LYRICS=$(wget --user-agent="Mozilla/5.0 Gecko/20100101" --no-check-certificate --quiet --timeout=10 -O - "https://makeitpersonal.co/lyrics?artist=$SAFE_ARTIST&title=$SAFE_TITLE")
printf "\"$TITLE\" by \"$ARTIST\" $ALBUM\n$LYRICS\n"
fi

59
q11k.sh Executable file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# An attempt to make the entire digimend configuration very simple and modular by allowing
# configurations for each program.
# Tablet info
tablet="HID 256c:006e Pad pad"
pen="HID 256c:006e Pen stylus"
# Set size stuff according to screen.
tabletX=55880
tabletY=34925
screenX=1920
screenY=1080
newtabletY=$(( $screenY * $tabletX / $screenX ))
#xsetwacom --set "$pen" Area 0 0 $tabletX $newtabletY
xsetwacom --set "$pen" MapToOutput "eDP1"
# Universal commands
# This stuff applies to both inkscape and GIMP seemingly.
u_zoomin="shift ="
u_zoomout="-"
u_zoomtool="z"
u_save="+ctrl s"
u_undo="+ctrl z"
u_redo="+ctrl y"
u_newlayer="+ctrl shift n"
# Commands for GIMP
# GIMP is useful for photo editing and retouching, as well as other steps in the process.
g_brushinc="+bracketright"
g_brushdec="+bracketleft"
g_heal="h"
g_clone="c"
g_freesel="f"
g_warp="w"
g_pen="p"
# Commands for Inkscape
# Inkscape can be used for notes as well as making visual lighting arrangements.
i_free="p"
i_brush="c"
i_rectangle="r"
i_text="t"
i_esc="esc"
xsetwacom --set "$tablet" Button 1 "key $u_save"
xsetwacom --set "$tablet" Button 2 "key $u_undo"
xsetwacom --set "$tablet" Button 12 "key $g_heal"
xsetwacom --set "$tablet" Button 11 "key $g_clone"
xsetwacom --set "$tablet" Button 8 "key $u_zoomin"
xsetwacom --set "$tablet" Button 3 "key $u_zoomout"
xsetwacom --set "$tablet" Button 10 "key $g_freesel"
xsetwacom --set "$tablet" Button 9 "key $g_pen"
xsetwacom --set "$pen" Button 2 "key $g_brushinc"
xsetwacom --set "$pen" Button 3 "key $g_brushdec"

8
rofi-pass.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
greenclip print | head -n1 | xclip -selection clipboard -i
pkill --signal=SIGTSTP greenclip
pass clip
sleep $(($PASSWORD_STORE_CLIP_TIME + 5))
notify-send "Clipboard re-enabled"
pkill --signal=SIGCONT greenclip

91
rofi-radio.sh Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
# MIT license.
# Author : Joshua Smith
# Usage: Place in /usr/local/bin/
# Call from rofi when you want to do anything inside of rofi-radio.
OPTS="Playing\nNext\nPause\nStations\nRate\nSongs\nQuit"
RATEOPTS="Love\nHate\nTired\nNewStation"
HISTOPTS="History\nUpcoming\nExplain"
MENU="rofi -dmenu -i"
PBS="/tmp/pianobar_stations"
CTL="${XDG_CONFIG_HOME:-$HOME/.config}/pianobar/ctl"
ICO="/tmp/coverart.jpg"
notify () {
if [[ -n $ICO ]]; then
notify-send -i $ICO "pianobar | $1" "$2"
else
notify-send -i /usr/share/icons/Luv/devices/16/multimedia-player.svg "pianobar | $1" "$2"
fi
}
ratemenu () {
RATECASE=$(echo -e $RATEOPTS | $MENU)
[[ -z $RATECASE ]] && main
case "$RATECASE" in
Love)
echo "+" > $CTL
;;
Hate)
echo "-" > $CTL
;;
Tired)
echo "t" > $CTL
;;
NewStation)
echo "v" > $CTL
;;
esac
}
main () {
MAINCASE=$(echo -e $OPTS | $MENU)
case "$MAINCASE" in
Playing)
;;
Next)
echo "n" > $CTL
;;
Pause)
echo "p" > $CTL
notify "Paused" "You have paused the station."
;;
Stations)
STATION=$(cat $PBS | $MENU | sed -e 's/[^0-9].*//g')
# Check if station is even entered. If not, return to main menu.
if [[ -n $STATION ]]; then
if [[ -n $(cat $PBS | grep '^$STATION') ]]; then
echo "s$STATION" > $CTL
else
notify "Error" "$STATION is an invalid station number."
fi
else
main
fi
;;
Rate)
ratemenu
;;
Songs)
HISTCASE=$(echo -e $HISTOPS | $MENU)
[[ -z $HISTCASE ]] && main
case "$HISTCASE" in
History)
;;
Upcoming)
;;
Explain)
;;
esac
;;
Quit)
echo "q" > $CTL
rm $PBS $ICO
;;
esac
}
main

23
run_flashbench.sh Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
# Please read http://wiki.laptop.org/go/SDCard_Testing before using.
DEVFPATH=$1
DEV=`basename ${DEVFPATH}`
ERASESIZE=`cat /sys/block/${DEV}/device/preferred_erase_size 2>/dev/null`
if mount | rg "^${DEVFPATH}.* / " ; then
echo Refusing to run on root filesystem
exit 1
fi
echo Making sure the device has no mounted partitions
umount ${DEVFPATH}p*
for F in name oemid manfid hwrev fwrev; do
echo $F `cat /sys/block/${DEV}/device/${F}`
done
echo Running flashbench
flashbench --open-au --open-au-nr=5 --random --blocksize=4096 \
--erasesize=${ERASESIZE:-4194304} ${DEVFPATH}

82
scheme.sh Executable file
View File

@ -0,0 +1,82 @@
#!/bin/bash
# A color picker using the "pastel" program in order to generate colors.
# If no input provided (./scheme.sh red), use pastel to pick color.
if [ -z ${1+x} ]; then color=$(pastel pick); else color=$1; fi
# Theme for select.
PS3="> "
# Function to improve cleanliness of code, mostly for the all function.
color_loop () {
for x in $@
do
out=$(pastel rotate $x $color | pastel format hex)
hex=$(pastel format hex $out)
name=$(pastel format name $out)
pastel paint "$hex" "Color: $name ($hex)"
done
}
# Color scheme and harmony layouts. Easy to adjust and add to, in the case new color theory is developed.
complementary="0 180"
split="0 150 210"
analogous="-30 -15 0 15 30"
triadic="0 120 240"
tetra_rectangle="0 60 180 240"
tetra_square="0 90 180 270"
# Color scheme selection.
echo "What color scheme do you want?"
select scheme in Complementary SplitComplementary Analogous Triadic Tetradic_Rectangle Tetradic_Square All
do
case $scheme in
"Complementary")
echo "Mode: $scheme"
color_loop $complementary
break
;;
"SplitComplementary")
echo "Mode: $scheme"
color_loop $split
break
;;
"Analogous")
echo "Mode: $scheme"
color_loop $analogous
break
;;
"Triadic")
echo "Mode: $scheme"
color_loop $triadic
break
;;
"Tetradic_Rectangle")
echo "Mode: $scheme"
color_loop $tetra_rectangle
break
;;
"Tetradic_Square")
echo "Mode: $scheme"
color_loop $tetra_square
break
;;
# This is bad. Whatever, homie.
"All")
echo "Mode: Complementary"
color_loop $complementary
echo "Mode: SplitComplementary"
color_loop $split
echo "Mode: Analogous"
color_loop $analogous
echo "Mode: Triadic"
color_loop $triadic
echo "Mode: Tetradic_Rectangle"
color_loop $tetra_rectangle
echo "Mode: Tetradic_Square"
color_loop $tetra_square
break
;;
esac
done

65
teaprint.sh Executable file
View File

@ -0,0 +1,65 @@
#!/usr/bin/bash
# Input text format is..
# Year|Factory|Tea name|Category
ALIGN="LEFT"
FONT="LEFT"
TEXTYP="NORMAL"
WIDTH=1
HEIGHT=1
DENSITY=1
PRINTLEN=42
LNBREAK=""
LNBREAK=$(awk -v count=$PRINTLEN 'BEGIN { OFS="~"; $(count+1)="";print}')
setnorms () {
python-escpos set --align "left" --font "left" --text_type "NORMAL" \
--height 1 --width 1 --density 1
}
fort () {
python-escpos set --align "center" --font "left" --text_type "B" \
--height 1 --width 1 --density 3
python-escpos text --txt $LNBREAK
python-escpos text --txt "$1"
python-escpos text --txt $LNBREAK
}
DATA=""
for file in "$@"
do
DATA=$(cat $file)
for ln in $DATA
do
COUNTER=0
TEAARRAY=()
for item in $(echo $ln | tr '\|' '\n')
do
TEAARRAY[$COUNTER]="$(echo $item | tr '_' ' ')"
COUNTER=$((COUNTER+1))
done
FORTUNE=$(fortune -sn $PRINTLEN)
echo "From: ${TEAARRAY[0]}, Maker: ${TEAARRAY[1]}"
echo "Tea: ${TEAARRAY[2]}, Type: ${TEAARRAY[3]}"
echo -e "\t$FORTUNE\n"
python-escpos set --align "left" --font "center" --text_type "NORMAL" \
--height 1 --width 2 --density 3
python-escpos text --txt "From: ${TEAARRAY[0]}"
python-escpos text --txt "Maker: ${TEAARRAY[1]}"
python-escpos text --txt "Tea: ${TEAARRAY[2]}"
python-escpos text --txt "Type: ${TEAARRAY[3]}"
fort "$FORTUNE"
python-escpos cut
done
done
setnorms