diff --git a/.config/shell/browse b/.config/shell/browse index 31ddf63..bb8d7a1 100644 --- a/.config/shell/browse +++ b/.config/shell/browse @@ -7,33 +7,33 @@ cdd() { cd "$@" 2>/dev/null || cd "$(dirname "$1")" "${@:2}" } # Go up a number of dirs up() { - if [[ $# < 1 ]] ; then - cd .. - else - CDSTR="" - for i in {1..$1} ; do - CDSTR="../$CDSTR" - done - cd $CDSTR - fi + if [[ $# < 1 ]] ; then + cd .. + else + CDSTR="" + for i in {1..$1} ; do + CDSTR="../$CDSTR" + done + cd $CDSTR + fi } # Switch directory & ls cl() { - builtin cd $1 - ls --almost-all --group-directories-first --file-type + builtin cd $1 + ls --almost-all --group-directories-first --file-type } mkcd() { - mkdir -p "$1" && cd "$1" + mkdir -p "$1" && cd "$1" } cd() { - test "$1" != "-" -a ! -d "$1" -a $# -eq 1 && - dir=$(f --glob "$1*" "$DATA" --maxdepth 2 --type d --max-results 1) && - test -n "$dir" && cd "$dir" && return - builtin cd $1 && - command ls --file-type --group-directories-first --color=always --format=vertical -w $COLUMNS | head -3 + test -d "$DATA" && test "$1" != "-" -a ! -d "$1" -a $# -eq 1 && + dir=$(f --glob "$1*" "$DATA" --maxdepth 2 --type d --max-results 1) && + test -n "$dir" && cd "$dir" && return + builtin cd $1 && + command ls --file-type --group-directories-first --color=always --format=vertical -w $COLUMNS | head -3 } # ZOXIDE diff --git a/.config/shell/functions b/.config/shell/functions index 232d7b2..b70f9c7 100644 --- a/.config/shell/functions +++ b/.config/shell/functions @@ -254,7 +254,9 @@ swap() { } -alias f="noglob $(which fd >/dev/null && echo fd || echo fdfind) --hidden --no-ignore-vcs --one-file-system" +alias f="noglob fdd" +fdd() { $(which fd >/dev/null && echo fd || echo fdfind) --color=always --hidden --no-ignore-vcs --one-file-system "$@" | less -F; } +compdef f=fd #alias f='find -not -path "*.sync*" -and -not \( -name daten -prune \)' #alias f1='find -mindepth 1 -maxdepth 1' diff --git a/.config/yadm/bootstrap b/.config/yadm/bootstrap index a01d1ef..50bca9f 100755 --- a/.config/yadm/bootstrap +++ b/.config/yadm/bootstrap @@ -12,7 +12,8 @@ echo "fs.inotify.max_user_watches=800000" | sudo tee /etc/sysctl.d/60-max-user-w sudo sysctl --system highlight "Default sudoers configuration" -echo "Defaults editor=/usr/bin/nvim" | sudo tee /etc/sudoers.d/editor +echo 'Defaults editor=/usr/bin/nvim +Defaults env_keep="EDITOR"' | sudo tee /etc/sudoers.d/editor echo -e "Defaults timestamp_timeout=120\nDefaults passwd_timeout=30" | sudo tee /etc/sudoers.d/timeout highlight "password-free reboot" echo "$USER ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /usr/sbin/reboot, /sbin/poweroff, /usr/sbin/shutdown" | sudo tee /etc/sudoers.d/shutdown diff --git a/.local/bin/scripts/b b/.local/bin/scripts/b index cc9ac69..b3fedd9 100755 --- a/.local/bin/scripts/b +++ b/.local/bin/scripts/b @@ -8,7 +8,7 @@ for last; do true; done last=${last:-.} # Elevate permissions if the file exists but is not accessible -test -r "$(dirname $last)" || elevate=sudo +test -x "$(dirname $last)" || elevate=sudo tput setaf 4 && $elevate file -E "$last" | ( grep -v --color=never 'directory$' || true ) case "$($elevate file --dereference --mime "$last")" in diff --git a/.local/bin/scripts/checkaccess b/.local/bin/scripts/checkaccess index 6ca0092..6a2fad4 100755 --- a/.local/bin/scripts/checkaccess +++ b/.local/bin/scripts/checkaccess @@ -1,9 +1,13 @@ -#!/bin/sh -# Checks whether the current user has rights to the respective file, +#!/bin/sh -e +# Checks whether the current user has rights to the respective file(s), # even if it does not exist. # First parameter defines which rights are required and is passed to "test". -dir="$2" -while ! test -e "$dir" -do dir="$(dirname "$dir")" +flag=$1 +while test $# -gt 1; do + shift + dir="$1" + while ! test -e "$dir" + do dir="$(dirname "$dir")" + done + test $flag "$dir" done -test $1 "$dir" diff --git a/.local/bin/scripts/edconf b/.local/bin/scripts/edconf index eb2e8f3..1c370d5 100755 --- a/.local/bin/scripts/edconf +++ b/.local/bin/scripts/edconf @@ -5,7 +5,7 @@ alias dedup='awk '"'"'!a[$0]++'"'" listconf() { { cat "$conf_cache"; fd --hidden --type file --size -1m --max-depth 1 . ~; - find "${XDG_CONFIG_HOME:-$HOME/.config}" /etc -maxdepth 3 -follow -type f -readable -exec grep -lI '' {} + 2>/dev/null; } | dedup + find "${XDG_CONFIG_HOME:-$HOME/.config}" /etc /var/lib/postgres -maxdepth 4 -follow -type f -readable -exec grep -lI '' {} + 2>/dev/null; } | dedup } conf_cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/edconf" @@ -21,6 +21,6 @@ case "$sel" in /etc/fstab) sudoedit "$sel" && sudo findmnt --verify;; /etc/default/grub) sudoedit "$sel" && sudo grub-mkconfig -o /boot/grub/grub.cfg;; /etc/locale.gen) sudoedit "$sel" && sudo locale-gen;; - *) edit "$sel";; + *) $(test -w "$sel" || echo sudo) "$EDITOR" "$sel";; esac echo "$sel" | cat - "$conf_cache" | head -20 >"$conf_tmp" && mv "$conf_tmp" "$conf_cache" diff --git a/.local/bin/scripts/git-l b/.local/bin/scripts/git-l index 16f19ac..a830789 100755 --- a/.local/bin/scripts/git-l +++ b/.local/bin/scripts/git-l @@ -1,2 +1,3 @@ #!/bin/sh +git rev-parse @{upstream} >/dev/null 2>&1 || git branch --set-upstream-to=@{push} git pull --rebase --autostash "$@" || (printf "\e[31;1mError - aborting rebase!\e[0m\n" >&2 && git rebase --abort) diff --git a/.local/bin/scripts/m b/.local/bin/scripts/m index 28dc92e..2818794 100755 --- a/.local/bin/scripts/m +++ b/.local/bin/scripts/m @@ -4,6 +4,6 @@ # Automatically elevates if missing permissions. for last; do true; done ! test -e "$1" && echo "$1 does not exist" && exit 1 -checkaccess -w "$last" || elevate=sudo +checkaccess -w "$@" || elevate=sudo $elevate mkdir -p $(case "$last" in (*/) echo "$last";; (*) dirname "$last";; esac) $elevate mv -n "$@"