Various useful and useless scripts.
This commit is contained in:
parent
f58e08c56c
commit
6da3dcbb58
|
@ -0,0 +1 @@
|
|||
testing
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
dunstify "EXIF Data" "$(exiftool -q -p ~/.scripts/notify-exif.fmt $@)"
|
|
@ -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]))
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
${make;s/ .*//} $model + $lensid f/$fnumber ${shutterspeed}s ISO$iso ${focallength;s/ .*//}mm $directory/$filename $megapixels MP ($imagesize)
|
|
@ -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
|
|
@ -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>
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
|
@ -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
|
|
@ -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}
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
Loading…
Reference in New Issue