blob: bce2244310067cce9317685831f0740532b5ce5b (
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
|
{
pkgs,
lib,
config,
...
}:
# lf - terminal file manager
{
options.tools.lf = {
enable = lib.mkEnableOption "Enables lf.";
};
config = lib.mkIf config.tools.lf.enable {
home.packages = with pkgs; [
ctpv
];
programs.lf = {
enable = true;
settings = {
number = true;
icons = true;
drawbox = true;
hidden = true;
preview = true;
};
previewer = {
source = lib.getExe' pkgs.ctpv "ctpv";
};
extraConfig = ''
&${lib.getExe' pkgs.ctpv "ctpv"} -s $id
cmd on-quit %${lib.getExe' pkgs.ctpv "ctpv"} -e $id
set cleaner ${lib.getExe' pkgs.ctpv "ctpvclear"}
# 1. WIPE DEFAULTS
clearmaps
# --- NAVIGATION ---
map k up
map j down
map h updir # Left to go out
map l open # Right to go in
map g top # nvim-tree 'g' (can also use gg)
map G bottom
map <c-u> half-up
map <c-d> half-down
map <c-b> page-up
map <c-f> page-down
# --- FILE MANIPULATION (Nvim-Tree Style) ---
map a push :touch<space> # 'a' for Add file
map A push :mkdir<space> # 'A' for Add directory
map r rename # 'r' for Rename
map d delete # 'd' for Delete (immediate prompt)
map x cut # 'x' for Cut (Move)
map y copy # 'y' for Copy
map p paste # 'p' for Paste
map c clear # 'c' for Clear selection/clipboard
# --- SELECTION & VISUAL ---
map <space> toggle # Space to select/mark
map v invert # 'v' to invert selection
map u unselect # 'u' to unselect all
map V visual # 'V' for visual selection mode
# --- SEARCH & FILTER ---
map / search
map ? search-back
map n search-next
map N search-prev
map f find # 'f' like nvim-tree live filter
map F find-back
map ; find-next
map , find-prev
map . set hidden! # Toggle hidden files (Dotfiles)
# --- SYSTEM & UI ---
map : read # ':' to enter command mode
map $ shell # Shell command
map ! shell-wait # Shell command (Wait for key)
map & shell-async # Async shell command
map R reload # 'R' for Refresh
map q quit # 'q' for Quit
map <c-l> redraw # Refresh screen UI
# --- MARKS (Bookmarks) ---
map m mark-save # 'm' + letter to save bookmark
map ' mark-load # ' + letter to jump to bookmark
map " mark-remove # " + letter to remove bookmark
'';
};
home.file.".config/lf/icons".source = ./icons;
};
}
|