set icons true set ignorecase true set drawbox # interpreter for shell commands set shell sh set shellopts '-eu' set previewer ctpv set cleaner ctpvclear &ctpv -s $id &ctpvquit $id cmd mkfile ${{ printf "File Name: " read ans $EDITOR $ans }} cmd edit-config ${{ $EDITOR ~/.config/lf/lfrc lf -remote "send $id source ~/.config/lf/lfrc" }} 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 setwallpaper %swww img "$f" --transition-type right --transition-fps 60 cmd fzf_jump ${{ res="$(find . | fzf --reverse --header='Jump to location' | sed 's/\\/\\\\/g;s/"/\\"/g')" if [ -d "$res" ] ; then cmd="cd" elif [ -f "$res" ] ; then cmd="select" else exit 0 fi lf -remote "send $id $cmd \"$res\"" }} cmd fzf_search ${{ res="$( \ RG_PREFIX="rg --column --line-number --no-heading --color=always \ --smart-case " FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \ fzf --bind "change:reload:$RG_PREFIX {q} || true" \ --ansi --layout=reverse --header 'Search in files' \ | cut -d':' -f1 )" [ ! -z "$res" ] && lf -remote "send $id select \"$res\"" }} cmd open &{{ case "$f" in *.pdf|*.epub) $(zathura "$f");; *.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx) $(mpv "$f");; *.bmp|*.jpg|*.jpeg|*.png|*.xpm|*.webp|*.tiff|*.gif|*.jfif|*.ico) $(imv "$f") ;; *) lf -remote "send $id \$$EDITOR \$fx";; esac }} cmd unarchive ${{ set -f case $f in *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; *.tar.gz|*.tgz) tar xzvf $f;; *.tar.xz|*.txz) tar xJvf $f;; *.zip) unzip $f;; *.rar) unrar x $f;; *.7z) 7z x $f;; esac }} cmd tar ${{ set -f mkdir $1 cp -r $fx $1 tar czf $1.tar.gz $1 rm -rf $1 }} cmd zip ${{ set -f mkdir $1 cp -r $fx $1 zip -r $1.zip $1 rm -rf $1 }} # Trash bindings cmd trash ${{ files=$(printf "$fx" | tr '\n' ';') while [ "$files" ]; do file=${files%%;*} trash-put "$(basename "$file")" if [ "$files" = "$file" ]; then files='' else files="${files#*;}" fi done }} cmd restore_trash ${{ trash-restore }} map . set hidden! # move current file or selected files to trash folder # (also see 'man mv' for backup/overwrite options) cmd trash %set -f; mv $fx ~/.trash # make sure trash folder exists %mkdir -p ~/.trash map dd trash map dr restore_trash map y copy map p paste map x cut map f :fzf_jump map gf :fzf_search map open map R reload map bg setwallpaper map C edit-config map gh cd ~ map gd cd ~/Downloads map gD cd ~/Documents map gc cd ~/.config map gr cd ~/repos map gp cd ~/Pictures map gw cd ~/Pictures/wallpapers map gs cd ~/Pictures/screenshots map gv cd ~/Videos map gm cd ~/Music map gt cd ~/.local/share/Trash/files map tC rm -rf ~/.local/share/Trash/files/*