aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/.config/lf/lfrc
blob: e9223b87c84eea3a79a4f25e8ea99ca1344aab02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
set icons
set scrolloff 10
set ratios 1:4:3
set period 1
set ifs "\n"
set info size
set previewer ~/.local/bin/scope
set mouse on

# Custom commands

cmd on-cd &{{
    # '&' commands run silently in background (which is what we want here),
    # but are not connected to stdout.
    # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
    printf "\033]0; lf - $PWD\007" > /dev/tty
}}

on-cd

cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')"

cmd delete ${{
	clear; tput cup $(($(tput lines)/3)); tput bold
	set -f
	printf "%s\n\t" "$fx"
	printf "delete?[y/N]"
	read ans
	[ $ans = "y" ] && rm -rf -- $fx
}}

# compress current file or selected files with tar and gunzip
cmd tar ${{
    set -f
    mkdir $1
    cp -r $fx $1
    tar -czf $1.tar.gz $1
    rm -rf $1
}}

# extract the current file with the right command
cmd extract ${{
    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
}}

# change dir with fzf
cmd fzf_jump ${{
	res="$(find . -type d | fzf --header='Jump to location')"
	if [ -d "$res" ]; then
	    cmd="cd"
	else 
	    cmd="select"                                                       
	fi
	lf -remote "send $id $cmd \"$res\""
}}

# open file with fzf
cmd fzf_open ${{
	res="$(find . -type d -path "*/\.*" -prune -o -not -name ".*" -type f | fzf)"
	if [ -e "$res" ]; then
	    &xdg-open "$res"
	fi
}}

# drag and drop prompt
cmd dragon $dragon-drop -a $fx

cmd dragon_drop $cp $(dragon-drop --target | sed 's/file:\/\///g') .

# copy path to clipboard
cmd yank-path &printf '%s' "$fx" | wl-copy

cmd open &xdg-open $fx

cmd hard_link %{{
		load=$(cat ~/.local/share/lf/files)
		list=$(echo "$load" | sed '1d')
		ln $list .
}}

cmd soft_link %{{
		load=$(cat ~/.local/share/lf/files)
		list=$(echo "$load" | sed '1d')
		ln -s $list .
}}

# Bindings
map A rename
map c
map cc clear
map cd push :cd<space>
map cw push A<c-u> # rename from zero
map I push A<c-a> # rename from the beginning
map i push A<a-b><a-b><a-f> # rename before extention
map a push A<a-b> # rename after extention
map <c-n> push :mkdir<space>
map <c-t> push :$touch<space>
map <c-r> reload
map <enter> shell
map D delete
map <enter> shell
map f :fzf_jump
map o :fzf_open
map t :dragon
map T :dragon_drop
map W $setsid $TERMINAL > /dev/null 2>&1 & # open new terminal window
map Y :yank-path
map L $LESSOPEN='| ~/.local/bin/scope %s' less -r $f # open file preview in pager
map P hard_link
map <a-p> soft_link

# Mouse bindings
map <m-1> open
map <m-2> updir
map <m-3> invert
map <m-up> up
map <m-down> down