# 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 drawbox 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 open $set -f; rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -p 0 $fx; clear cmd open-with ${{ clear set -f rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -l $fx read -p "Open with: " method rifle -c $XDG_CONFIG_HOME/lf/rifle.conf -p $method $fx clear }} cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')" cmd extract ${{ clear; tput cup $(($(tput lines)/3)); tput bold set -f printf "%s\n\t" "$fx" printf "extract?[y/N]" read ans clear [ $ans = "y" ] && aunpack $fx }} cmd delete ${{ clear; tput cup $(($(tput lines)/3)); tput bold set -f printf "%s\n\t" "$fx" printf "delete?[y/N]" read ans clear [ $ans = "y" ] && rm -rf -- $fx }} cmd trash ${{ clear; tput cup $(($(tput lines)/3)); tput bold set -f printf "%s\n\t" "$fx" printf "trash?[y/N]" read ans clear if [ $ans = "y" ]; then for f in $fx; do echo $f trash-put $f & done fi }} cmd rsyncto ${{ clear; tput cup $(($(tput lines)/3)); tput bold set -f clear; echo -n "rsync -azvhP " read dest clear for x in $fx; do eval rsync -azvhP \"$x\" \"$dest\" done && notify-send "File(s) rsynced." "File(s) copies to $dest." }} # 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 setbg "$1" 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) cp -rn -- "$@" .;; 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 edit ${{ clear if [ -f $f ] && [ -w $f ]; then $EDITOR $f elif [ -f $f ]; then sudo -e $f fi clear }} # cmd share $curl -F"file=@$fx" https://0x0.snaile.de | xclip -r -selection c cmd fzfsearch ${{ file="$(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 fzfshortcutfiles ${{ file="$(cat ${XDG_DATA_HOME:-$HOME/.local/share}/lf/shortcut-files | fzf)" lf -remote "send $id select $file" }} cmd fzfshortcutdirs ${{ file="$(cat ${XDG_DATA_HOME:-$HOME/.local/share}/lf/shortcut-dirs | fzf)" [ -d $file ] && lf -remote "send $id cd $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\"" }} # Bindings map a fzfsearch map t fzftags map m fzfmarks map f fzfshortcutfiles map d fzfshortcutdirs map g fzfgrep map J $dir=$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf) && lf -remote "send $id cd $(eval echo $dir)" map D delete map trash map T $trash-restore $PWD map extract map R rsyncto map P link map S share map $lazygit map push :!$EDITOR map push :mkdir map push :&touch map reload map set hidden! map shell map x $$f map X !$f map o open-with 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 &setsid $TERMINAL -e lf map e edit # Load bookmark shortcuts source "~/.config/lf/shortcutrc"