# Basic vars set ratios 1:2:4 set shellopts '-eu' set ifs "\n" set findlen 1 set scrolloff 10 set icons set wrapscroll set period 1 set previewer ~/.config/lf/preview set cleaner ~/.config/lf/clean set cursorpreviewfmt "\033[7;90m" set promptfmt "\033[34;1m%u\033[36m@\033[34m%h \033[35m[\033[0;1m%d\033[35m]\033[32m » \033[33m%f\033[0m" cmd toggle-preview %{{ if [ "$(basename $lf_previewer)" = "preview" ]; then lf -remote "send $id set previewer mediainfo" else lf -remote "send $id set previewer ~/.config/lf/preview" fi $lf_cleaner lf -remote "send $id reload" }} cmd open $set -f; rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -p 0 $fx; clear cmd open-with ${{ method=$(rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -l $fx | fzf | cut -d':' -f1) rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -p $method $fx }} cmd mkdir &mkdir -p "$(echo $* | tr ' ' '\ ')" cmd trash &{{ for f in $fx; do echo $f trash-put $f & done lf -remote "send $id load" }} cmd lazygit ${{ clear if ! git -C $PWD status >/dev/null 2>&1; then [ $(echo "Yes\nNo" | fzf --header="Not in a git repository. Create a new git repository? (y/n): ") = "Yes" ] && git init && lazygit else lazygit fi }} # y (select for copy) and P to paste soft-link # d (select for cut) and P to paste hard-link cmd link &{{ set -- $(cat ~/.local/share/lf/files) mode="$1" shift if [ "$#" -lt 1 ]; then lf -remote "send $id echo no files to link" exit 0 fi case "$mode" in # symbolically copy mode is indicating a soft link copy) ln -sr -t . -- "$@";; # while a move mode is indicating a hard link move) ln -t . -- "$@";; esac rm ~/.local/share/lf/files lf -remote "send clear" }} cmd bulkrename $vidir cmd on-cd &{{ printf "%b" "\033]0;$(zsh -c 'source $XDG_CONFIG_HOME/zsh/configs/autogenerated/hashes; print -Pn "$USER@$HOST [%3~]"') \007" > /dev/tty fmt="\033[34;1m%u\033[36m@\033[34m%h \033[35m[\033[0;1m$(zsh -c 'source $XDG_CONFIG_HOME/zsh/configs/autogenerated/hashes; print -Pn "%3~"')\033[35m]\033[32m » \033[33m%f\033[0m" lf -remote "send $id set promptfmt \"$fmt\"" }} on-cd cmd on-quit ${{ DIR=$(echo $PWD | sed "s|$HOME|~|") printf "\033]0; $DIR\007" > /dev/tty }} cmd paste &{{ set -- $(cat ~/.local/share/lf/files) mode="$1" shift case "$mode" in copy) rsync -av --ignore-existing --progress -- "$@" . | stdbuf -i0 -o0 -e0 tr '\r' '\n' | while IFS= read -r line; do lf -remote "send $id echo $line" done ;; move) mv -n -- "$@" .;; esac rm ~/.local/share/lf/files lf -remote "send clear" }} cmd dupe &{{ for file in $fx; do find "$PWD" "$file" -maxdepth 0 | grep -oP '(?<=.\.~)\d+(?=~$)' | sort -n | tail -1 | ( ext=$(($(cat /dev/stdin)+1)) filedest="$(echo "$file" | sed 's/.~[[:digit:]]*~$//').~$ext~" cp -r "$file" "$filedest" ) done }} # cmd share $curl -F"file=@$fx" https://0x0.snaile.de | xclip -r -selection c cmd fzfsearch ${{ file="$(find $PWD | fzf)" [ -d $file ] && lf -remote "send $id cd $file" && return 0 [ -f $file ] && lf -remote "send $id select $file" }} cmd fzftags ${{ file="$(cat ${XDG_DATA_HOME:-$HOME/.local/share}/lf/tags | sed 's/:\*$//' | fzf)" [ -d $file ] && lf -remote "send $id cd $file" && return 0 [ -f $file ] && lf -remote "send $id select $file" }} cmd fzfmarks ${{ file="$(cat ${XDG_DATA_HOME:-$HOME/.local/share}/lf/marks | sed 's/^.://' | fzf)" [ -d $file ] && lf -remote "send $id cd $file" && return 0 [ -f $file ] && lf -remote "send $id select $file" }} cmd fzfshortcut ${{ file="$(cat ${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc | cut -d '"' -f2 | fzf)" [ -d $file ] && lf -remote "send $id cd $file" && return 0 [ -f $file ] && lf -remote "send $id select $file" }} cmd fzfgrep ${{ RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case " res="$( FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \ fzf --bind "change:reload:$RG_PREFIX {q} || true" \ --ansi --layout=reverse --header 'Search in files' \ | cut -d':' -f1 | sed 's/\\/\\\\/g;s/"/\\"/g' )" [ -n "$res" ] && lf -remote "send $id select \"$res\"" }} cmd extract ${{ for f in $fx; do aunpack "$f" done }} # cmd fzfworkon ${{ # workon -n $(workon | fzf) # }} # Bindings map a fzfsearch map t fzftags map m fzfmarks map f fzfshortcut map g fzfgrep map T trash map $trash-restore $PWD map &rm -rf -- $fx map extract map R toggle-preview map P link # map S share map lazygit map push :!$EDITOR map push :mkdir map N push :&touch map reload map set hidden! map x $$f map X !$f map o open-with map O $less $f map a :rename; cmd-home # rename from beginning map r :rename; cmd-end # rename from end map i :rename # before extension map c push r # new rename map B bulkrename map b dupe map u :clear; unselect map n &echo $f | xclip -r -selection c map quit map g/ cd "/" map W &$TERMINAL -d $PWD map e $$EDITOR $f map E $sudo -e $f # Load bookmark shortcuts source "~/.config/lf/shortcutrc"