X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=lib%2Flogin_functions.sh;h=13a2ba298abb41e34b7fa57175a3b4dbbd90c00a;hb=e184ff59e5cc01f9f62d0be272b77e59e149a6f1;hp=d0f480bf5cedf9e91c153861b0efa7432647a75d;hpb=39b8a1f77bc47d12162342d91d7014cc991a8fff;p=khome.git diff --git a/lib/login_functions.sh b/lib/login_functions.sh index d0f480b..13a2ba2 100644 --- a/lib/login_functions.sh +++ b/lib/login_functions.sh @@ -1,4 +1,5 @@ # Top Disk-Using directories +# TODO: Consider using numfmt instead of awk tdu() { du "$1" \ | sort -n -k 1 -r --parallel="$(nproc)" \ @@ -14,6 +15,34 @@ tdu() { | cut -c 1-115 } +# Most-recently modified file system objects +recent() { + # NOTES: + # - intentionally not quoting the parameters, so that some can be ignored + # if not passed, rather than be passed to find as an empty string; + # - %T+ is a GNU extension; + # - gawk is able to split records on \0, while awk cannot. + find $@ -printf '%T@ %T+ %p\0' \ + | tee >(gawk -v RS='\0' 'END { printf("[INFO] Total found: %d\n", NR); }') \ + | sort -z -k 1 -n -r \ + | head -n "$(stty size | awk 'NR == 1 {print $1 - 5}')" -z \ + | gawk -v RS='\0' ' + { + sub("^" $1 " +", "") # Remove epoch time + sub("+", " ") # Blank-out the default separator + sub("\\.[0-9]+", "") # Remove fractional seconds + print + }' +} + +recent_dirs() { + recent "$1" -type d +} + +recent_files() { + recent "$1" -type f +} + pa_def_sink() { pactl info | awk '/^Default Sink:/ {print $3}' } @@ -34,7 +63,7 @@ man() { } experiment() { - cd "$($HOME/bin/experiment $@)" + cd "$(~/bin/experiment $@)" || exit 1 } hump() { @@ -42,7 +71,7 @@ hump() { } howto() { - cat $(ls -1 -d $HOME/Archives/Documents/HOWTOs/* | fzf) + cat "$(find ~/Archives/Documents/HOWTOs -mindepth 1 -maxdepth 1 | sort | fzf)" } gh_fetch_repos() { @@ -63,3 +92,58 @@ gh_clone_user() { gh_clone_org() { gh_clone 'orgs' "$1" } + +gh_clone_repo() { + gh_username=$(echo "$1" | awk -F / '"$1 == "https" && $3 == github.com" {print $4}') + gh_dir="${HOME}/Archives/Software/src/repos/remote/github.com/${gh_username}" + mkdir -p "$gh_dir" + cd "$gh_dir" || exit 1 + git clone "$1" + cd - || exit 1 +} + +work_log_template() { +cat << EOF +$(date +%F) +========== + +Morning report +-------------- + +### Previous + +### Current + +### Blockers + +Day's notes +----------- +EOF +} + +work_log() { + mkdir -p "$DIR_WORK_LOG" + file_work_log_today="${DIR_WORK_LOG}/$(date +%F).md" + if [ ! -f "$file_work_log_today" ] + then + work_log_template > "$file_work_log_today" + fi + vim "$file_work_log_today" + +} + +weather() { + curl "http://wttr.in/$WEATHER_LOCATION" +} + +bt_devs_paired() { + bluetoothctl -- paired-devices \ + | awk '{print $2}' \ + | xargs bluetoothctl -- info +} + +bt_devs() { + bluetoothctl -- devices \ + | awk '{print $2}' \ + | xargs bluetoothctl -- info +}