X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc;h=048fa5131688e744e27f66aa2c463a746fefa548;hb=2ff8740f1061a31683152a4447340921de82b1b9;hp=d54570eff2246ce397daf069d25f5bf11fa92e95;hpb=8d33c68549c02c45ed78a05f7de703a08ec245c6;p=distro-setup diff --git a/brc b/brc index d54570e..048fa51 100644 --- a/brc +++ b/brc @@ -301,9 +301,8 @@ mysrc /a/bin/distro-functions/src/package-manager-abstractions # * functions -### begin FSF section ### -# use for temporary functions +# temporary functions y() { m "${@//spring/fall}" } @@ -312,15 +311,19 @@ h() { } +### begin FSF section ### + # Comments before functions are meant to be good useful # documentation. If they fail at that, please improve them or send Ian a # note. ## copy bash completion -# Usage: ORIGINAL_COMMAND TARGET_COMMAND... # # It copies how the bash completion works from one command to other -# commands. +# commands. Generally just use within a .bashrc. +# +# Usage: ORIGINAL_COMMAND TARGET_COMMAND... +# ccomp() { local c src src=$1 @@ -335,17 +338,21 @@ ccomp() { eval $c $* } -## directory history tracking and navigation. +## BEGIN functions to change directory better than cd ## +# +# The functions: # -# cd becomes a function, also aliased to c. b to go back, f to go -# forward, cl to list recent directories and choose one. +# c: acts like cd, but stores directory history: you could alias to cd if you wanted. +# b: go back +# f: go forward +# cl: list recent directories and optionally choose one. # -# The finer details you may want to skip: +# Finer details you may want to skip: # -# We also define bl to print the list of back and forward directories. +# bl: print the list of back and forward directories. # -# We keep 2 stacks, forward and back. Unlike with a web browser, the -# forward stack is not erased when going somewhere new. +# We keep 2 stacks of directories, forward and back. Unlike with a web +# browser, the forward stack is not erased when going somewhere new. # # Recent directories are stored in ~/.cdirs. # @@ -447,7 +454,7 @@ f() { # printf "%s\n" "${_dir_forward[-1]}" # fi } -# cd list +# cl = cd list cl() { local i line input start local -A buttondirs alines @@ -477,7 +484,9 @@ cl() { alines[$line]=t buttondirs[${buttons[i]}]="$line" printf "%s %s\n" ${buttons[i]} "$line" - if (( i == ${#buttons[@]} - 1 )); then + # the LINES bit is for when we have a short terminal, just dont print all + # the directories. alternative would be to do something like less the list. + if (( i == ${#buttons[@]} - 1 )) || { [[ $LINES ]] && (( i == LINES - 3 )); }; then break fi i=$(( i + 1 )) @@ -492,7 +501,8 @@ cl() { c "${buttondirs[$input]}" fi } -# back list +# bl = back list. lists the back and forward directories. i tend to +# forget this exists and use cl instead. bl() { local start i j max max=10 @@ -533,6 +543,7 @@ bl() { fi done } +## END functions to change directory better than cd ## # pee do. run args as a command with output copied to syslog. # @@ -681,33 +692,6 @@ khcopy() { ssh-copy-id $1 } -# ya, hacky hardcoded hostnames in 2023. we could do better -hssh-update() { - local -a failed_hosts hosts - case $HOSTNAME in - sy|kd) - hosts=( - kd x3.office.fsf.org syw - ) - ;; - x3) - hosts=( - b8.nz sywg.b8.nz - ) - ;; - esac - for host in ${hosts[@]}; do - e $host - if ! scp /b/fai/fai/config/files/usr/local/bin/hssh/IANK root@$host:/usr/local/bin/hssh; then - failed_hosts+=($host) - fi - done - if (( ${#failed_hosts[@]} >= 1 )); then - echo failed_hosts=${failed_hosts[*]} - return 1 - fi -} - a() { local x x=$(readlink -nf "${1:-$PWD}") @@ -2787,6 +2771,7 @@ rn() { } n() { dunstify -u critical n + _psrun=(dunstctl close-all) } catnew() {