X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=163c09ebe41ef15ff596bcd3cf2f6c88ca98542b;hb=967233a47b27723012b07876b5857b01ec983c95;hp=13a2ba298abb41e34b7fa57175a3b4dbbd90c00a;hpb=a68d5744f8758fc77c34c612edac06dbc0bea129;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 13a2ba2..163c09e 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,8 +1,15 @@ +# + +d() { + local -r word=$(fzf < /usr/share/dict/words) + dict "$word" +} + # Top Disk-Using directories # 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 +22,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 +89,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,16 +139,15 @@ 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() { cat << EOF -$(date +%F) +$(date '+%F %A') ========== Morning report @@ -128,8 +171,13 @@ 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() { @@ -147,3 +195,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" +}