From 211ba8a0b0c536e499edc1e17920a5002515a8b9 Mon Sep 17 00:00:00 2001 From: iofq Date: Thu, 28 Dec 2023 21:47:36 -0600 Subject: [PATCH] add bin scripts --- bin/bar.sh | 91 +++++++++++++++++++ bin/colors.sh | 26 ++++++ bin/extract | 19 ++++ bin/kp | 13 +++ bin/lc | 9 ++ bin/ufetch | 71 +++++++++++++++ flake.lock | 30 +++--- flake.nix | 2 +- home-manager/home.nix | 7 +- .../shared/programs/shell/default.nix | 3 +- home-manager/t14/home.nix | 9 ++ nixos/configuration.nix | 17 +--- nixos/default.nix | 47 ++++++---- nixos/racknerd/configuration.nix | 37 ++++++++ nixos/racknerd/hardware-configuration.nix | 10 ++ nixos/t14/configuration.nix | 11 +++ 16 files changed, 349 insertions(+), 53 deletions(-) create mode 100755 bin/bar.sh create mode 100755 bin/colors.sh create mode 100755 bin/extract create mode 100755 bin/kp create mode 100755 bin/lc create mode 100755 bin/ufetch create mode 100644 nixos/racknerd/configuration.nix create mode 100755 nixos/racknerd/hardware-configuration.nix diff --git a/bin/bar.sh b/bin/bar.sh new file mode 100755 index 0000000..2a7dc9b --- /dev/null +++ b/bin/bar.sh @@ -0,0 +1,91 @@ +#!/bin/bash +trap \ + "{ pkill -P $$ ; exit 255; }" \ + SIGINT SIGTERM ERR EXIT + +bat() { + battery=$(cat /sys/class/power_supply/BAT0/capacity) + time=$(cat /tmp/.battime) + drain=$(cat /sys/class/power_supply/BAT0/power_now) + if [[ $(cat /sys/class/power_supply/BAT0/status) == "Charging" ]]; then + echo "$battery%+" + else + echo "$time, $battery%$charge, $(echo "scale=1; $drain / 1000000" | bc)mW" + fi +} + +time_date() { + FORMAT="%a %m.%d.%y %T" + DATE=`date "+${FORMAT}"` + echo "${DATE}" +} + +mem() { + echo "scale=2; $(free -m | sed -n 2p | awk '{print $3 + $5}') / 1000" | bc +} + +vol() { + MUTED=$(amixer get Master | grep off) + amixer get Master | grep -m1 -Po "\d{1,3}%" + [[ $MUTED != '' ]] && echo " M"; + +} + +temp_update() { + TEMP=$(cat /sys/class/thermal/thermal_zone0/temp) + echo $((TEMP / 1000)) +} + +cpu_update() { + read prevtotal previdle < /tmp/.cpulast + read cpu a b c idle rest < /proc/stat + total=$((a+b+c+idle)) + [[ $prevtotal == 0 ]] && prevtotal=1 + cpu=$((100*( (total-prevtotal) - (idle-previdle) ) / (total-prevtotal) )) + echo $total $idle > /tmp/.cpulast + echo "$cpu%" +} + +calc(){ awk "BEGIN { print "$*" }"; } +mhz_update() { + mhz=$(cat /proc/cpuinfo | grep 'cpu MHz' | awk '{print $4}' | head -n1 | cut -d "." -f 1) + echo "$(calc $mhz/1000 | awk '{ printf "%1.2f\n", $0 }') GHz" +} + +update_3() { + while true; do + cpu_update > /tmp/.cpu + temp_update > /tmp/.temp + mhz_update > /tmp/.mhz + sleep 3 + done +} +update_30() { + while :; do + awk 'NR==3 {printf("%.0ddB",$4) > "/tmp/.wifi"}' /proc/net/wireless + acpi | awk '{print $5}' > /tmp/.battime + if ping -W 1 -c 1 8.8.8.8 > /dev/null; then + echo "@" > /tmp/.online + else + echo "?" > /tmp/.online + fi + sleep 30 + done +} + +update_300() { + while :; do + curl -s wttr.in/madison?format=%t | head -c 7 > /tmp/.wttr + sleep 300 + done +} + +SLEEP_SEC=1 +PAD=" | " +update_300 & +update_30 & +update_3 & +while true; do + xsetroot -name "$(mem)G$PAD$(cat /tmp/.cpu)$PAD$(cat /tmp/.mhz)$PAD$(cat /tmp/.temp)°C$PAD$(cat /tmp/.wifi), $(cat /tmp/.online)$PAD$(vol)$PAD$(bat)$PAD$(cat /tmp/.wttr), $(time_date)" + sleep $SLEEP_SEC +done diff --git a/bin/colors.sh b/bin/colors.sh new file mode 100755 index 0000000..0e323ed --- /dev/null +++ b/bin/colors.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# This file echoes a bunch of color codes to the +#terminal to demonstrate what's available. Each +# line is the color code of one forground color, +# out of 17 (default + 16 escapes), followed by a +# test use of that color on all nine background +# colors (default + 8 escapes). +# + +T='gYw' # The test text + +echo -e "\n 40m 41m 42m 43m\ + 44m 45m 46m 47m"; + +for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \ + '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \ + ' 36m' '1;36m' ' 37m' '1;37m'; +do FG=${FGs// /} + echo -en " $FGs \033[$FG $T " + for BG in 40m 41m 42m 43m 44m 45m 46m 47m; + do echo -en "$EINS \033[$FG\033[$BG $T \033[0m"; + done + echo; +done +echo diff --git a/bin/extract b/bin/extract new file mode 100755 index 0000000..c732265 --- /dev/null +++ b/bin/extract @@ -0,0 +1,19 @@ +if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.xz) tar xf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) 7z x $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via extract()" ;; + esac +else + echo "'$1' is not a valid file" +fi diff --git a/bin/kp b/bin/kp new file mode 100755 index 0000000..98543a5 --- /dev/null +++ b/bin/kp @@ -0,0 +1,13 @@ +### PROCESS +# mnemonic: [K]ill [P]rocess +# show output of "ps -ef", use [tab] to select one or multiple entries +# press [enter] to kill selected processes and go back to the process list. +# or press [escape] to go back to the process list. Press [escape] twice to exit completely. + +pid=$(ps -ef | sed 1d | eval "fzf ${FZF_DEFAULT_OPTS} -m --header='[kill:process]'" | awk '{print $2}') + +if [ "x$pid" != "x" ] +then + echo $pid | xargs kill -${1:-9} + kp +fi diff --git a/bin/lc b/bin/lc new file mode 100755 index 0000000..c76f587 --- /dev/null +++ b/bin/lc @@ -0,0 +1,9 @@ +#!/bin/bash +# Usage: lc [number_of_cpus_to_load [number_of_seconds] ] +pids="" +cpus=${1:-1} +seconds=${2:-60} +echo loading $cpus CPUs for $seconds seconds +trap 'for p in $pids; do kill $p; done' 0 +for ((i=0;i