dotfiles/.config/lf/lfrc

165 lines
2.9 KiB
Plaintext

set drawbox
set icons true
set ignorecase true
# interpreter for shell commands
set shell sh
set shellopts '-eu'
set previewer ctpv
set cleaner ctpvclear
&ctpv -s $id
&ctpvquit $id
cmd edit-config ${{
$EDITOR ~/.config/lf/lfrc
lf -remote "send $id source ~/.config/lf/lfrc"
}}
cmd open &{{
case $(file --mime-type "$f" -bL) in
text/*|application/json) lf -remote "send $id \$$EDITOR \$fx";;
image/*) swayimg -f "$f";;
audio/*) lf -remote "send $id \$mpv --audio-display=no \"$fx\" && clear";;
video/*) mpv "$f";;
application/pdf|application/epub) zathura "$f";;
esac
}}
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 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%%;*}
if [[ "$(pwd)" == "/home/$USER/.local/share/Trash/files" ]]; then
rm -rf $file
else
trash-put "$(basename "$file")"
fi
if [ "$files" = "$file" ]; then
files=''
else
files="${files#*;}"
fi
done
}}
# lfrc
cmd restore-from-trash ${{
ids="$(echo -ne '\n' | \
trash-restore | \
awk '$1 ~ /^[0-9]+/ {print $0}' | \
fzf --multi | \
awk '{print $1}' | \
sed -z 's/\n/,/g;s/,$/\n/')"
echo $ids | trash-restore
clear
}}
map m
map o
map n
map "'"
map '"'
map d
map e
map f
map t
map . set hidden!
map md push %mkdir<space>
map y copy
map p paste
map x cut
map <enter> open
map f :fzf_jump
map gf :fzf_search
map C edit-config
map bg setwallpaper
map dd trash
map dr restore-from-trash
map R reload
map gh cd ~
map gd cd ~/Downloads
map gD cd ~/Documents
map gc cd ~/.config
map gr cd ~/repos
map gC cd ~/code
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/*