dgy
/
hexagons
Archived
1
0
Fork 0
This repository has been archived on 2021-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
hexagons/.config/lf/lfrc

307 lines
7.2 KiB
Plaintext

# Basic Settings
set shell zsh
set shellopts '-eu:--shwordsplit'
set ifs "\n"
set scrolloff 5
set wrapscroll
set sortby time
set info size:time
set reverse
set incsearch
set period 1
set color256
set preview
set previewer lfview
# All other settings need to go above this comment because reasons
set icons
%{{
w=$(tput cols)
if [ $w -le 80 ]; then
lf -remote "send $id set ratios 1:1"
elif [ $w -le 160 ]; then
lf -remote "send $id set ratios 2:2"
else
lf -remote "send $id set ratios 2:4"
fi
}}
# Custom Functions
cmd open ${{
case $(file --mime-type $f -bL) in
text/*|application/json) vix "$f";;
image/gif) setsid sxiv-gif $f 2>/dev/null & ;;
image/*) setsid sxiv-rifle $f 2>/dev/null & ;;
audio/*) mpv $f ;;
video/*) setsid mpv $f -quiet >/dev/null 2>&1 & ;;
font/ttf) fp -i $f -o /tmp/fontpreview.png & ;;
application/x-7z-compressed|application/gz|application/rar|application/tar) atool --list --each -- "$f" | $PAGER ;;
application/tar|application/tgz|application/xz|application/zip) atool --list --each -- "$f" | $PAGER ;;
application/pdf|application/cbz|application/cbr|application/epub*) setsid zathura $fx >/dev/null 2>&1 & ;;
*) for f in $fx; do setsid $OPENER $f > /dev/null 2>&1 & done;;
esac
}}
cmd bulkrename ${{
old=$(mktemp)
new=$(mktemp)
[ -n $fs ] && fs=$(ls)
printf "$fs\n" > $old
printf "$fs\n" > $new
$EDITOR $new
[ $(cat $new | wc -l) -ne $(cat $old | wc -l) ] && exit
paste $old $new | while read names; do
src=$(printf $names | cut -f1)
dst=$(printf $names | cut -f2)
[ $src = $dst ] && continue
[ -e $dst ] && continue
mv $src $dst
done
rm $old $new
lf -remote "send $id unselect"
}}
# insert
cmd rename-insert &{{
if [ "$(echo "$fx" | wc -l)" -gt 1 ]; then
lf -remote "send $id echo You can't change more than one file name"
lf -remote "send $id unselect"
else
len="$(basename "$f" | wc -m)" # length of selected file/directory
for i in $(seq "$len"); do
pos="${pos}<left>" # how many times do I have to press <left> in order to get first char
done
lf -remote "send $id rename"
lf -remote "send $id push $pos"
fi
}}
# append before ext
cmd rename-before-ext &{{
if [ "$(echo "$fx" | wc -l)" -gt 1 ]; then
lf -remote "send $id echo You can't change more than one file name"
lf -remote "send $id unselect"
else
if [ -d "$f" ]; then
lf -remote "send $id rename"
else
ext_len="$(echo ${f##*.} | wc -m)" # extention length
for i in $(seq "$ext_len"); do
pos="${pos}<left>"
done
lf -remote "send $id rename"
lf -remote "send $id push "$pos""
fi
fi
}}
# change its name entirely
cmd rename-new &{{
if [ "$(echo "$fx" | wc -l)" -gt 1 ]; then
lf -remote "send $id echo You can't change more than one file name"
lf -remote "send $id unselect"
else
lf -remote "send $id rename"
lf -remote "send $id push <c-u>"
fi
}}
cmd paste-rsync &{{
load=$(lf -remote 'load')
mode=$(echo "$load" | sed -n '1p')
list=$(echo "$load" | sed '1d')
if [ $mode = 'copy']; then
rsync -av --ignore-existing --progress $list . \
| stdbuf -i0 -o0 -e0 tr '\r' '\n' \
| while read line; do
lf -remote "send $id echo $line"
done
elif [ $mode = 'move' ]; then
mv -n $list .
fi
lf -remote 'send load'
lf -remote 'send clear'
}}
cmd paste-append &{{
load=$(lf -remote 'load')
mode=$(echo "$load" | sed -n '1p')
list=$(echo "$load" | sed '1d')
if [ $mode = 'copy' ]; then
cp -rn $list .
elif [ $mode = 'move' ]; then
mv -n $list .
fi
lf -remote 'send load'
lf -remote 'send clear'
}}
cmd paste-overwrite %{{
load=$(lf -remote 'load')
mode=$(echo "$load" | sed -n '1p')
list=$(echo "$load" | sed '1d')
if [ $mode = 'copy' ]; then
cp -r $list .
elif [ $mode = 'move' ]; then
mv $list .
fi
lf -remote 'send load'
lf -remote 'send clear'
}}
cmd paste-interactive %{{
load=$(lf -remote 'load')
mode=$(echo "$load" | sed -n '1p')
list=$(echo "$load" | sed '1d')
if [ $mode = 'copy' ]; then
cp -r $list .
elif [ $mode = 'move' ]; then
mv $list .
fi
lf -remote 'send load'
lf -remote 'send clear'
}}
cmd fzf_jump ${{
res="$(find . -maxdepth 3 -printf '%P\n' | fzf --reverse --header='Jump to location')"
if [ -f "$res" ]; then
cmd="select"
elif [ -d "$res" ]; then
cmd="cd"
fi
lf -remote "send $id $cmd \"$res\""
}}
cmd Link %{{
lf -remote 'load' | while read file; do
if [ ! -n "${mode+1}" ]; then
mode="$file"
continue
fi
files+=("$file")
done
if [ "${#files[@]}" -le 1 ]; then
lf -remote "send $id echo no files to link"
exit 0
fi
# symbolicly copy mode is indicating a soft link
if [[ "$mode" == copy ]]; then
ln -sr $files -t .
# while a move mode is indicating a hard link
elif [[ "$mode" == move ]]; then
ln $files -t .
fi
}}
# toggle single column view
cmd no_preview :{{
set nopreview
set ratios 2
set info size:time
map ~ yes_preview
}}
cmd yes_preview :{{
set ratios 2:2
set preview
set info
map ~ no_preview
}}
cmd newfold ${{
set -f
read newd
mkdir $newd
mv $fx $newd
}}
# Bindings
# Remove some defaults
map "'"
map '"'
map m
map n
map d
map p
map w
map y
map c
map /
map r
cmap <esc> cmd-escape
map <f-2> push A<c-u> # new rename
map <f-3> cut
map <f-4> copy
map <f-5> reload
map <f-6> push $touch<space>
map <f-7> push $mkdir<space>
map <f-8> delete
map <f-9> paste
map <enter> open
map <delete> delete
map . set hidden!
map ~ no_preview
map | top
map ¿ bottom
map R reload
map x clear
map dd cut
map yy copy
map yn ${{echo -n $(dirname $f) | xclip -selection clipboard}}
map yp ${{echo -n $f | xclip -selection clipboard}}
map yn ${{echo -n $(basename $f) | xclip -selection clipboard}}
map pp paste
map pa paste-append
map po paste-overwrite
map pi paste-interactive
map pr paste-rsync
map o &mimeopen $f
map O $mimeopen --ask $f
map cx $chmod +x "$f"
map bg $setbg $f
map U %du -sh $f
map Y %cp -ri $fs .
map D %mv -i $fs .
map za $apack "$f".zip $f
map zu $file-roller "$f"
map zx $atool --each --extract "$f"
map zg $hx add $fs
map zn newfold
map i push A<c-a> # at the very beginning
map A rename # at the very end
map I push A<a-b><c-b>. # before extension
map a push A<a-b> # after extension
map B bulkrename
map L :Link
map f fzf_jump #goto dir
map / $lf -remote "send $id select \"$(FZF_DEFAULT_COMMAND='fd --max-depth=1' fzf)\"" #local dir find
map F $find | lf -remote "send $id select $(fzf --reverse --border --margin 2% --inline-info --color border:#005688,bg+:#16252E,fg+:#26c6da,hl+:#ffffff,hl:#26c6da)" #global find
# Movement
map gd cd ~/doc/
map gE cd /etc
map gU cd /usr
map ge cd ~/etc
map g. cd ~/.config
map gn cd ~/.config/nvim
map gz cd ~/.config/zsh
map gl cd ~/.local/share
map gM cd /media
map gm cd ~/snd/Albums
map gr cd /mnt/remote
map gc cd /mnt/cel
map gb cd ~/.local/bin
map gR cd /
map gv cd ~/vid/Learning
map gp cd ~/img
map cg $$EDITOR ~/.config/lf/lfrc
map sg source ~/.config/lf/lfrc