X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=41f44b8adb0a4167cc7c6110bf3cb5b441db14fe;hb=0159e3aecb42859c8d78234e9ca9cf5dba49122e;hp=13a2ba298abb41e34b7fa57175a3b4dbbd90c00a;hpb=a68d5744f8758fc77c34c612edac06dbc0bea129;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 13a2ba2..41f44b8 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -2,7 +2,7 @@ # TODO: Consider using numfmt instead of awk tdu() { du "$1" \ - | sort -n -k 1 -r --parallel="$(nproc)" \ + | sort -n -k 1 -r \ | head -50 \ | awk ' { @@ -15,6 +15,21 @@ tdu() { | cut -c 1-115 } +# Top Disk-Using Files +tduf() { + find "$1" -type f -printf '%s\t%p\0' \ + | sort -z -n -k 1 -r \ + | head -z -n 50 \ + | gawk -v RS='\0' ' + { + size = $1 + path = $0 + sub("^" $1 "\t+", "", path) + gb = size / 1024 / 1024 / 1024 + printf("%f\t%s\n", gb, path) + }' +} + # Most-recently modified file system objects recent() { # NOTES: @@ -67,19 +82,41 @@ experiment() { } hump() { - ledit -l $(stty size | awk '{print $2}') ocaml $@ + ledit -l "$(stty size | awk '{print $2}')" ocaml $@ } howto() { cat "$(find ~/Archives/Documents/HOWTOs -mindepth 1 -maxdepth 1 | sort | fzf)" } +yt() { + local _yt_uri + local _yt_id + local _yt_title + local _yt_dir + + _yt_uri="$1" + _yt_id=$(youtube-dl --get-id "$_yt_uri") + _yt_title=$(youtube-dl --get-title "$_yt_uri") + _yt_dir="${DIR_YOUTUBE}/individual-videos/${_yt_title}--${_yt_id}" + + mkdir -p "$_yt_dir" + cd "$_yt_dir" || exit 1 + echo "$_yt_uri" > 'uri' + youtube-dl -c --write-description --write-info-json "$_yt_uri" +} + gh_fetch_repos() { curl "https://api.github.com/$1/$2/repos?page=1&per_page=10000" } gh_clone() { - gh_fetch_repos "$1" "$2" \ + gh_user_type="$1" + gh_user_name="$2" + gh_dir="${DIR_GITHUB}/${gh_user_name}" + mkdir -p "$gh_dir" + cd "$gh_dir" || exit 1 + gh_fetch_repos "$gh_user_type" "$gh_user_name" \ | jq --raw-output '.[] | select(.fork | not) | .git_url' \ | parallel -j 25 \ git clone {} @@ -95,11 +132,10 @@ gh_clone_org() { 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}" + gh_dir="${DIR_GITHUB}/${gh_username}" mkdir -p "$gh_dir" cd "$gh_dir" || exit 1 git clone "$1" - cd - || exit 1 } work_log_template() { @@ -128,10 +164,15 @@ work_log() { then work_log_template > "$file_work_log_today" fi - vim "$file_work_log_today" + vim -c 'set spell' "$file_work_log_today" } +note() { + mkdir -p "$DIR_NOTES" + vim -c 'set spell' "$DIR_NOTES/$(date +'%Y_%m_%d--%H_%M_%S%z')--$1.md" +} + weather() { curl "http://wttr.in/$WEATHER_LOCATION" } @@ -147,3 +188,16 @@ bt_devs() { | awk '{print $2}' \ | xargs bluetoothctl -- info } + +run() { + stderr="$(mktemp)" + $@ 2> >(tee "$stderr") + code="$?" + urgency='' + case "$code" in + 0) urgency='normal';; + *) urgency='critical' + esac + notify-send -u "$urgency" "Job done: $code" "$(cat $stderr)" + rm "$stderr" +}