rtfm-filemanager 8.2.2 → 8.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/rtfm +31 -12
- data/img/rtfm-kb.svg +341 -0
- metadata +3 -3
- data/img/rtfm-kb.png +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9578236347587df8d2eb07db00d7a667093344d95a60103a5df3fc2819df9f9a
|
|
4
|
+
data.tar.gz: 36ba2c5bc4b229d53200708da04fc29cc7e013fc9fee7c4abc8d10a6ba055eb7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f11d1c5405086f0a90ab186fb349a571c2af82c1e0d9b9f7513758a678db299dec69d8b9bde1c8b6f5eed91fc86d511457a29ba24287dbe2c57a04925e149240
|
|
7
|
+
data.tar.gz: bc1f862bdb325cfa015dbb6ba31146a338ef105b9e5400bdd5988b4d616d6b9788dd6ac7c7f1e41adcad5773d71a691c83a7f11233a9f7d93b7dd45df8007d33
|
data/bin/rtfm
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# get a great understanding of the code itself by simply sending
|
|
19
19
|
# or pasting this whole file into you favorite AI for coding with
|
|
20
20
|
# a prompt like this: "Help me understand every part of this code".
|
|
21
|
-
@version = '8.2.
|
|
21
|
+
@version = '8.2.4' # Performance: cache MIME type lookups
|
|
22
22
|
|
|
23
23
|
# SAVE & STORE TERMINAL {{{1
|
|
24
24
|
ORIG_STTY = `stty -g`.chomp
|
|
@@ -494,6 +494,20 @@ def cmd?(cmd) # Helper function
|
|
|
494
494
|
system("which #{cmd} > /dev/null 2>&1")
|
|
495
495
|
end
|
|
496
496
|
|
|
497
|
+
def mime_type(path) # Cached MIME type lookup
|
|
498
|
+
mtime = File.mtime(path).to_i rescue 0
|
|
499
|
+
key = "#{path}:#{mtime}"
|
|
500
|
+
return @mime_cache[key] if @mime_cache[key]
|
|
501
|
+
result = `file --mime-type -b #{Shellwords.escape(path)} 2>/dev/null`.strip
|
|
502
|
+
if @mime_cache_size >= @max_mime_entries
|
|
503
|
+
@mime_cache.clear
|
|
504
|
+
@mime_cache_size = 0
|
|
505
|
+
end
|
|
506
|
+
@mime_cache[key] = result
|
|
507
|
+
@mime_cache_size += 1
|
|
508
|
+
result
|
|
509
|
+
end
|
|
510
|
+
|
|
497
511
|
# Initialize termpix for image display
|
|
498
512
|
@termpix = Termpix::Display.new
|
|
499
513
|
@showimage = @termpix.supported?
|
|
@@ -525,6 +539,9 @@ $stdin.set_encoding(Encoding::UTF_8)
|
|
|
525
539
|
@command_cache = {} # Cache for expensive shell commands
|
|
526
540
|
@command_cache_size = 0
|
|
527
541
|
@max_command_cache = 50
|
|
542
|
+
@mime_cache = {} # Cache for file MIME type lookups
|
|
543
|
+
@mime_cache_size = 0
|
|
544
|
+
@max_mime_entries = 200
|
|
528
545
|
|
|
529
546
|
# INITIALIZE VARIABLES {{{1
|
|
530
547
|
## These can be set by user in ~/.rtfm/conf
|
|
@@ -2121,9 +2138,8 @@ def show_file_properties # {{{3
|
|
|
2121
2138
|
|
|
2122
2139
|
# MIME type
|
|
2123
2140
|
begin
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
text << sprintf(" %-20s %s\n", "MIME Type:", mime_type.fg(156))
|
|
2141
|
+
mt = mime_type(@selected)
|
|
2142
|
+
text << sprintf(" %-20s %s\n", "MIME Type:", mt.fg(156))
|
|
2127
2143
|
rescue StandardError # file command failed
|
|
2128
2144
|
text << sprintf(" %-20s %s\n", "MIME Type:", "Unknown".fg(240))
|
|
2129
2145
|
end
|
|
@@ -4882,7 +4898,8 @@ def copy_path_primary # {{{3
|
|
|
4882
4898
|
path = get_selected_full_path
|
|
4883
4899
|
if path
|
|
4884
4900
|
copy_to_clipboard(path, 'primary')
|
|
4885
|
-
|
|
4901
|
+
copy_to_clipboard(path, 'clipboard')
|
|
4902
|
+
@pB.say(' Path copied')
|
|
4886
4903
|
else
|
|
4887
4904
|
@pB.say(' No selected item path to copy')
|
|
4888
4905
|
end
|
|
@@ -4897,7 +4914,8 @@ def copy_path_clipboard # {{{3
|
|
|
4897
4914
|
path = get_selected_full_path
|
|
4898
4915
|
if path
|
|
4899
4916
|
copy_to_clipboard(path, 'clipboard')
|
|
4900
|
-
|
|
4917
|
+
copy_to_clipboard(path, 'primary')
|
|
4918
|
+
@pB.say(' Path copied')
|
|
4901
4919
|
else
|
|
4902
4920
|
@pB.say(' No selected item path to copy')
|
|
4903
4921
|
end
|
|
@@ -4968,10 +4986,11 @@ def copy_right # {{{3
|
|
|
4968
4986
|
@pB.say(' Failed to copy image - xclip may not be installed')
|
|
4969
4987
|
end
|
|
4970
4988
|
else
|
|
4971
|
-
# Copy right pane text content
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
shell("echo -n #{
|
|
4989
|
+
# Copy right pane text content to both selections
|
|
4990
|
+
escaped = Shellwords.escape(@pR.text.pure)
|
|
4991
|
+
shell("echo -n #{escaped} | xclip -selection clipboard > /dev/null 2>&1", background: true)
|
|
4992
|
+
shell("echo -n #{escaped} | xclip -selection primary > /dev/null 2>&1", background: true)
|
|
4993
|
+
@pB.say(' Right pane text copied')
|
|
4975
4994
|
end
|
|
4976
4995
|
end
|
|
4977
4996
|
|
|
@@ -6379,7 +6398,7 @@ def get_interactive_program(file_path) # HELPER FOR OPEN_SELECTED TO USE @intera
|
|
|
6379
6398
|
end
|
|
6380
6399
|
else
|
|
6381
6400
|
# Check what xdg-open would use
|
|
6382
|
-
mimetype =
|
|
6401
|
+
mimetype = mime_type(file_path)
|
|
6383
6402
|
desktop_file = `xdg-mime query default #{Shellwords.escape(mimetype)}`.chomp
|
|
6384
6403
|
|
|
6385
6404
|
if desktop_file && !desktop_file.empty?
|
|
@@ -6749,7 +6768,7 @@ def showcontent # SHOW CONTENTS IN THE RIGHT WINDOW {{{2
|
|
|
6749
6768
|
@image = true
|
|
6750
6769
|
else
|
|
6751
6770
|
# Check if file is text using the `file` command
|
|
6752
|
-
file_type =
|
|
6771
|
+
file_type = mime_type(@selected)
|
|
6753
6772
|
if file_type.start_with?('text/') || file_type == 'application/x-empty'
|
|
6754
6773
|
# It's a text file - fall through to text preview below
|
|
6755
6774
|
else
|
data/img/rtfm-kb.svg
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1500 560" width="1500" height="560" font-family="monospace, Courier New, Courier">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.key { fill: #333; stroke: #555; stroke-width: 1; rx: 5; ry: 5; }
|
|
5
|
+
.kw { fill: #2a2a2a; stroke: #555; stroke-width: 1; rx: 5; ry: 5; }
|
|
6
|
+
.kl { font-size: 12px; fill: #bbb; font-weight: bold; text-anchor: middle; }
|
|
7
|
+
.lo { font-size: 8.5px; fill: #FF8888; text-anchor: middle; }
|
|
8
|
+
.up { font-size: 8.5px; fill: #88BBFF; text-anchor: middle; }
|
|
9
|
+
.ct { font-size: 10px; fill: #88FF88; }
|
|
10
|
+
.sp { font-size: 8.5px; fill: #DDAAFF; text-anchor: middle; }
|
|
11
|
+
.nv { font-size: 8.5px; fill: #bbb; text-anchor: middle; }
|
|
12
|
+
</style>
|
|
13
|
+
</defs>
|
|
14
|
+
<rect width="1500" height="560" fill="#1a1a1a" rx="8"/>
|
|
15
|
+
<text x="470" y="22" text-anchor="middle" font-size="15" font-weight="bold" fill="#fff">RTFM Keyboard Reference</text>
|
|
16
|
+
|
|
17
|
+
<!-- Row 0: Esc -->
|
|
18
|
+
<rect x="10" y="34" width="58" height="55" class="key"/>
|
|
19
|
+
<text x="39" y="54" class="kl">Esc</text>
|
|
20
|
+
<text x="39" y="80" class="lo">quit</text>
|
|
21
|
+
|
|
22
|
+
<!-- Row 1: Number row kw=62 gap=4 -->
|
|
23
|
+
<rect x="10" y="97" width="58" height="55" class="key"/>
|
|
24
|
+
<text x="39" y="117" class="kl">` ~</text>
|
|
25
|
+
<text x="39" y="143" class="lo">~ home</text>
|
|
26
|
+
|
|
27
|
+
<rect x="72" y="97" width="62" height="55" class="key"/>
|
|
28
|
+
<text x="103" y="117" class="kl">1</text>
|
|
29
|
+
<text x="103" y="143" class="lo">tab 1</text>
|
|
30
|
+
|
|
31
|
+
<rect x="138" y="97" width="62" height="55" class="key"/>
|
|
32
|
+
<text x="169" y="117" class="kl">2</text>
|
|
33
|
+
<text x="169" y="143" class="lo">tab 2</text>
|
|
34
|
+
|
|
35
|
+
<rect x="204" y="97" width="62" height="55" class="key"/>
|
|
36
|
+
<text x="235" y="117" class="kl">3</text>
|
|
37
|
+
<text x="235" y="143" class="lo">tab 3</text>
|
|
38
|
+
|
|
39
|
+
<rect x="270" y="97" width="62" height="55" class="key"/>
|
|
40
|
+
<text x="301" y="117" class="kl">4</text>
|
|
41
|
+
<text x="301" y="143" class="lo">tab 4</text>
|
|
42
|
+
|
|
43
|
+
<rect x="336" y="97" width="62" height="55" class="key"/>
|
|
44
|
+
<text x="367" y="117" class="kl">5</text>
|
|
45
|
+
<text x="367" y="143" class="lo">tab 5</text>
|
|
46
|
+
|
|
47
|
+
<rect x="402" y="97" width="62" height="55" class="key"/>
|
|
48
|
+
<text x="433" y="117" class="kl">6</text>
|
|
49
|
+
<text x="433" y="143" class="lo">tab 6</text>
|
|
50
|
+
|
|
51
|
+
<rect x="468" y="97" width="62" height="55" class="key"/>
|
|
52
|
+
<text x="499" y="117" class="kl">7</text>
|
|
53
|
+
<text x="499" y="143" class="lo">tab 7</text>
|
|
54
|
+
|
|
55
|
+
<rect x="534" y="97" width="62" height="55" class="key"/>
|
|
56
|
+
<text x="565" y="117" class="kl">8</text>
|
|
57
|
+
<text x="565" y="143" class="lo">tab 8</text>
|
|
58
|
+
|
|
59
|
+
<rect x="600" y="97" width="62" height="55" class="key"/>
|
|
60
|
+
<text x="631" y="117" class="kl">9</text>
|
|
61
|
+
<text x="631" y="143" class="lo">tab 9</text>
|
|
62
|
+
|
|
63
|
+
<rect x="666" y="97" width="62" height="55" class="key"/>
|
|
64
|
+
<text x="697" y="127" class="kl">0</text>
|
|
65
|
+
|
|
66
|
+
<rect x="732" y="97" width="62" height="55" class="key"/>
|
|
67
|
+
<text x="763" y="115" class="kl">- _</text>
|
|
68
|
+
<text x="763" y="133" class="sp">_ image</text>
|
|
69
|
+
<text x="763" y="146" class="lo">- preview</text>
|
|
70
|
+
|
|
71
|
+
<rect x="798" y="97" width="62" height="55" class="key"/>
|
|
72
|
+
<text x="829" y="115" class="kl">= +</text>
|
|
73
|
+
<text x="829" y="133" class="sp">+ interact</text>
|
|
74
|
+
<text x="829" y="146" class="lo">= mkdir</text>
|
|
75
|
+
|
|
76
|
+
<rect x="864" y="97" width="76" height="55" class="kw"/>
|
|
77
|
+
<text x="902" y="130" class="nv">Bksp</text>
|
|
78
|
+
|
|
79
|
+
<!-- Row 2: QWERTY start x=10+80=90 offset, kw=62 -->
|
|
80
|
+
<rect x="10" y="160" width="76" height="55" class="kw"/>
|
|
81
|
+
<text x="48" y="183" class="nv">Tab</text>
|
|
82
|
+
<text x="48" y="206" class="nv">pgdn R</text>
|
|
83
|
+
|
|
84
|
+
<rect x="90" y="160" width="62" height="55" class="key"/>
|
|
85
|
+
<text x="121" y="176" class="kl">Q</text>
|
|
86
|
+
<text x="121" y="194" class="up">Q nosave</text>
|
|
87
|
+
<text x="121" y="207" class="lo">q save</text>
|
|
88
|
+
|
|
89
|
+
<rect x="156" y="160" width="62" height="55" class="key"/>
|
|
90
|
+
<text x="187" y="176" class="kl">W</text>
|
|
91
|
+
<text x="187" y="194" class="up">Write cfg</text>
|
|
92
|
+
<text x="187" y="207" class="lo">width</text>
|
|
93
|
+
|
|
94
|
+
<rect x="222" y="160" width="62" height="55" class="key"/>
|
|
95
|
+
<text x="253" y="176" class="kl">E</text>
|
|
96
|
+
<text x="253" y="194" class="up">Bulk ren</text>
|
|
97
|
+
<text x="253" y="207" class="lo">props</text>
|
|
98
|
+
|
|
99
|
+
<rect x="288" y="160" width="62" height="55" class="key"/>
|
|
100
|
+
<text x="319" y="176" class="kl">R</text>
|
|
101
|
+
<text x="319" y="194" class="up">Load cfg</text>
|
|
102
|
+
<text x="319" y="207" class="lo">refresh</text>
|
|
103
|
+
|
|
104
|
+
<rect x="354" y="160" width="62" height="55" class="key"/>
|
|
105
|
+
<text x="385" y="176" class="kl">T</text>
|
|
106
|
+
<text x="385" y="194" class="up">Tag list</text>
|
|
107
|
+
<text x="385" y="207" class="lo">tag</text>
|
|
108
|
+
|
|
109
|
+
<rect x="420" y="160" width="62" height="55" class="key"/>
|
|
110
|
+
<text x="451" y="176" class="kl">Y</text>
|
|
111
|
+
<text x="451" y="194" class="up">Cp clipbd</text>
|
|
112
|
+
<text x="451" y="207" class="lo">cp primary</text>
|
|
113
|
+
|
|
114
|
+
<rect x="486" y="160" width="62" height="55" class="key"/>
|
|
115
|
+
<text x="517" y="176" class="kl">U</text>
|
|
116
|
+
<text x="517" y="194" class="up">Undo</text>
|
|
117
|
+
<text x="517" y="207" class="lo">untag all</text>
|
|
118
|
+
|
|
119
|
+
<rect x="552" y="160" width="62" height="55" class="key"/>
|
|
120
|
+
<text x="583" y="176" class="kl">I</text>
|
|
121
|
+
<text x="583" y="194" class="up">AI descr</text>
|
|
122
|
+
<text x="583" y="207" class="lo">invert</text>
|
|
123
|
+
|
|
124
|
+
<rect x="618" y="160" width="62" height="55" class="key"/>
|
|
125
|
+
<text x="649" y="176" class="kl">O</text>
|
|
126
|
+
<text x="649" y="194" class="up">ls cmd</text>
|
|
127
|
+
<text x="649" y="207" class="lo">order</text>
|
|
128
|
+
|
|
129
|
+
<rect x="684" y="160" width="62" height="55" class="key"/>
|
|
130
|
+
<text x="715" y="176" class="kl">P</text>
|
|
131
|
+
<text x="715" y="194" class="up">Move here</text>
|
|
132
|
+
<text x="715" y="207" class="lo">copy here</text>
|
|
133
|
+
|
|
134
|
+
<rect x="750" y="160" width="62" height="55" class="key"/>
|
|
135
|
+
<text x="781" y="176" class="kl">[ {</text>
|
|
136
|
+
<text x="781" y="194" class="sp">{ ren tab</text>
|
|
137
|
+
<text x="781" y="207" class="sp">[ cls tab</text>
|
|
138
|
+
|
|
139
|
+
<rect x="816" y="160" width="62" height="55" class="key"/>
|
|
140
|
+
<text x="847" y="176" class="kl">] }</text>
|
|
141
|
+
<text x="847" y="194" class="sp">} dup tab</text>
|
|
142
|
+
<text x="847" y="207" class="sp">] new tab</text>
|
|
143
|
+
|
|
144
|
+
<rect x="882" y="160" width="58" height="55" class="key"/>
|
|
145
|
+
<text x="911" y="176" class="kl">\</text>
|
|
146
|
+
<text x="911" y="200" class="sp">clr srch</text>
|
|
147
|
+
|
|
148
|
+
<!-- Row 3: ASDF start x=10+90=100 offset -->
|
|
149
|
+
<rect x="10" y="223" width="86" height="55" class="kw"/>
|
|
150
|
+
<text x="53" y="255" class="nv">Ctrl</text>
|
|
151
|
+
|
|
152
|
+
<rect x="100" y="223" width="62" height="55" class="key"/>
|
|
153
|
+
<text x="131" y="239" class="kl">A</text>
|
|
154
|
+
<text x="131" y="257" class="up">Long list</text>
|
|
155
|
+
<text x="131" y="270" class="lo">all/none</text>
|
|
156
|
+
|
|
157
|
+
<rect x="166" y="223" width="62" height="55" class="key"/>
|
|
158
|
+
<text x="197" y="239" class="kl">S</text>
|
|
159
|
+
<text x="197" y="257" class="up">Sys info</text>
|
|
160
|
+
<text x="197" y="270" class="lo">symlink</text>
|
|
161
|
+
|
|
162
|
+
<rect x="232" y="223" width="62" height="55" class="key"/>
|
|
163
|
+
<text x="263" y="239" class="kl">D</text>
|
|
164
|
+
<text x="263" y="257" class="up">Emp trash</text>
|
|
165
|
+
<text x="263" y="270" class="lo">delete</text>
|
|
166
|
+
|
|
167
|
+
<rect x="298" y="223" width="62" height="55" class="key"/>
|
|
168
|
+
<text x="329" y="239" class="kl">F</text>
|
|
169
|
+
<text x="329" y="257" class="up">Filt regex</text>
|
|
170
|
+
<text x="329" y="270" class="lo">filt type</text>
|
|
171
|
+
|
|
172
|
+
<rect x="364" y="223" width="62" height="55" class="key"/>
|
|
173
|
+
<text x="395" y="239" class="kl">G</text>
|
|
174
|
+
<text x="395" y="257" class="up">Git status</text>
|
|
175
|
+
<text x="395" y="270" class="lo">grep</text>
|
|
176
|
+
|
|
177
|
+
<rect x="430" y="223" width="62" height="55" class="key"/>
|
|
178
|
+
<text x="461" y="239" class="kl">H</text>
|
|
179
|
+
<text x="461" y="257" class="up">Hash dir</text>
|
|
180
|
+
<text x="461" y="270" class="nv">h = LEFT</text>
|
|
181
|
+
|
|
182
|
+
<rect x="496" y="223" width="62" height="55" class="key"/>
|
|
183
|
+
<text x="527" y="239" class="kl">J</text>
|
|
184
|
+
<text x="527" y="257" class="up">Prev tab</text>
|
|
185
|
+
<text x="527" y="270" class="nv">j = DOWN</text>
|
|
186
|
+
|
|
187
|
+
<rect x="562" y="223" width="62" height="55" class="key"/>
|
|
188
|
+
<text x="593" y="239" class="kl">K</text>
|
|
189
|
+
<text x="593" y="257" class="up">Next tab</text>
|
|
190
|
+
<text x="593" y="270" class="nv">k = UP</text>
|
|
191
|
+
|
|
192
|
+
<rect x="628" y="223" width="62" height="55" class="key"/>
|
|
193
|
+
<text x="659" y="239" class="kl">L</text>
|
|
194
|
+
<text x="659" y="257" class="up">Locate</text>
|
|
195
|
+
<text x="659" y="270" class="nv">l = RIGHT</text>
|
|
196
|
+
|
|
197
|
+
<rect x="694" y="223" width="62" height="55" class="key"/>
|
|
198
|
+
<text x="725" y="239" class="kl">; :</text>
|
|
199
|
+
<text x="725" y="257" class="sp">: command</text>
|
|
200
|
+
<text x="725" y="270" class="sp">; history</text>
|
|
201
|
+
|
|
202
|
+
<rect x="760" y="223" width="62" height="55" class="key"/>
|
|
203
|
+
<text x="791" y="239" class="kl">'</text>
|
|
204
|
+
<text x="791" y="262" class="sp">jump mark</text>
|
|
205
|
+
|
|
206
|
+
<rect x="826" y="223" width="114" height="55" class="kw"/>
|
|
207
|
+
<text x="883" y="248" class="nv">Enter</text>
|
|
208
|
+
<text x="883" y="268" class="nv">open/refresh</text>
|
|
209
|
+
|
|
210
|
+
<!-- Row 4: ZXCV start x=10+100=110 offset -->
|
|
211
|
+
<rect x="10" y="286" width="96" height="55" class="kw"/>
|
|
212
|
+
<text x="58" y="318" class="nv">Shift</text>
|
|
213
|
+
|
|
214
|
+
<rect x="110" y="286" width="62" height="55" class="key"/>
|
|
215
|
+
<text x="141" y="302" class="kl">Z</text>
|
|
216
|
+
<text x="141" y="320" class="up">Zip</text>
|
|
217
|
+
<text x="141" y="333" class="lo">unzip</text>
|
|
218
|
+
|
|
219
|
+
<rect x="176" y="286" width="62" height="55" class="key"/>
|
|
220
|
+
<text x="207" y="302" class="kl">X</text>
|
|
221
|
+
<text x="207" y="320" class="up">Compare</text>
|
|
222
|
+
<text x="207" y="333" class="lo">open force</text>
|
|
223
|
+
|
|
224
|
+
<rect x="242" y="286" width="62" height="55" class="key"/>
|
|
225
|
+
<text x="273" y="302" class="kl">C</text>
|
|
226
|
+
<text x="273" y="320" class="up">Config</text>
|
|
227
|
+
<text x="273" y="333" class="lo">rename</text>
|
|
228
|
+
|
|
229
|
+
<rect x="308" y="286" width="62" height="55" class="key"/>
|
|
230
|
+
<text x="339" y="302" class="kl">V</text>
|
|
231
|
+
<text x="339" y="320" class="up">Plugins</text>
|
|
232
|
+
<text x="339" y="333" class="lo">version</text>
|
|
233
|
+
|
|
234
|
+
<rect x="374" y="286" width="62" height="55" class="key"/>
|
|
235
|
+
<text x="405" y="302" class="kl">B</text>
|
|
236
|
+
<text x="405" y="320" class="up">Border</text>
|
|
237
|
+
<text x="405" y="333" class="lo">syntax hl</text>
|
|
238
|
+
|
|
239
|
+
<rect x="440" y="286" width="62" height="55" class="key"/>
|
|
240
|
+
<text x="471" y="302" class="kl">N</text>
|
|
241
|
+
<text x="471" y="320" class="up">Srch prev</text>
|
|
242
|
+
<text x="471" y="333" class="lo">srch next</text>
|
|
243
|
+
|
|
244
|
+
<rect x="506" y="286" width="62" height="55" class="key"/>
|
|
245
|
+
<text x="537" y="302" class="kl">M</text>
|
|
246
|
+
<text x="537" y="320" class="up">Show mrks</text>
|
|
247
|
+
<text x="537" y="333" class="lo">set mark</text>
|
|
248
|
+
|
|
249
|
+
<rect x="572" y="286" width="62" height="55" class="key"/>
|
|
250
|
+
<text x="603" y="315" class="kl">, <</text>
|
|
251
|
+
|
|
252
|
+
<rect x="638" y="286" width="62" height="55" class="key"/>
|
|
253
|
+
<text x="669" y="302" class="kl">. ></text>
|
|
254
|
+
<text x="669" y="333" class="sp">> follow lnk</text>
|
|
255
|
+
|
|
256
|
+
<rect x="704" y="286" width="62" height="55" class="key"/>
|
|
257
|
+
<text x="735" y="302" class="kl">/ ?</text>
|
|
258
|
+
<text x="735" y="320" class="sp">? help</text>
|
|
259
|
+
<text x="735" y="333" class="sp">/ search</text>
|
|
260
|
+
|
|
261
|
+
<rect x="770" y="286" width="170" height="55" class="kw"/>
|
|
262
|
+
<text x="855" y="318" class="nv">Shift</text>
|
|
263
|
+
|
|
264
|
+
<!-- Row 5: Bottom -->
|
|
265
|
+
<rect x="10" y="349" width="70" height="50" class="kw"/>
|
|
266
|
+
<text x="45" y="378" class="nv">Ctrl</text>
|
|
267
|
+
|
|
268
|
+
<rect x="84" y="349" width="58" height="50" class="kw"/>
|
|
269
|
+
<text x="113" y="378" class="nv">Alt</text>
|
|
270
|
+
|
|
271
|
+
<rect x="146" y="349" width="330" height="50" class="key"/>
|
|
272
|
+
<text x="311" y="378" class="nv">Space</text>
|
|
273
|
+
|
|
274
|
+
<rect x="480" y="349" width="62" height="50" class="key"/>
|
|
275
|
+
<text x="511" y="366" class="kl"># @</text>
|
|
276
|
+
<text x="511" y="382" class="sp"># locate</text>
|
|
277
|
+
<text x="511" y="394" class="sp">@ ruby dbg</text>
|
|
278
|
+
|
|
279
|
+
<!-- Nav cluster -->
|
|
280
|
+
<rect x="990" y="97" width="64" height="55" class="key"/>
|
|
281
|
+
<text x="1022" y="120" class="nv">Home</text>
|
|
282
|
+
<text x="1022" y="143" class="nv">g first</text>
|
|
283
|
+
|
|
284
|
+
<rect x="1058" y="97" width="64" height="55" class="key"/>
|
|
285
|
+
<text x="1090" y="120" class="nv">End</text>
|
|
286
|
+
<text x="1090" y="143" class="nv">G last</text>
|
|
287
|
+
|
|
288
|
+
<rect x="990" y="160" width="64" height="55" class="key"/>
|
|
289
|
+
<text x="1022" y="183" class="nv">PgUp</text>
|
|
290
|
+
<text x="1022" y="206" class="nv">page up</text>
|
|
291
|
+
|
|
292
|
+
<rect x="1058" y="160" width="64" height="55" class="key"/>
|
|
293
|
+
<text x="1090" y="183" class="nv">PgDn</text>
|
|
294
|
+
<text x="1090" y="206" class="nv">page dn</text>
|
|
295
|
+
|
|
296
|
+
<rect x="1022" y="286" width="60" height="55" class="key"/>
|
|
297
|
+
<text x="1052" y="310" class="nv">UP</text>
|
|
298
|
+
<text x="1052" y="333" class="nv">k</text>
|
|
299
|
+
|
|
300
|
+
<rect x="958" y="349" width="60" height="50" class="key"/>
|
|
301
|
+
<text x="988" y="370" class="nv">LEFT</text>
|
|
302
|
+
<text x="988" y="390" class="nv">h</text>
|
|
303
|
+
|
|
304
|
+
<rect x="1022" y="349" width="60" height="50" class="key"/>
|
|
305
|
+
<text x="1052" y="370" class="nv">DOWN</text>
|
|
306
|
+
<text x="1052" y="390" class="nv">j</text>
|
|
307
|
+
|
|
308
|
+
<rect x="1086" y="349" width="60" height="50" class="key"/>
|
|
309
|
+
<text x="1116" y="370" class="nv">RIGHT</text>
|
|
310
|
+
<text x="1116" y="390" class="nv">l/enter</text>
|
|
311
|
+
|
|
312
|
+
<!-- Right panel: Ctrl combos -->
|
|
313
|
+
<rect x="1180" y="34" width="300" height="340" rx="6" fill="#1a2a1a" stroke="#4a6a4a" stroke-width="1"/>
|
|
314
|
+
<text x="1330" y="56" text-anchor="middle" font-size="13" font-weight="bold" fill="#88FF88">Ctrl Combos</text>
|
|
315
|
+
<text x="1194" y="80" class="ct">C-A AI chat mode</text>
|
|
316
|
+
<text x="1194" y="100" class="ct">C-D Toggle trash view</text>
|
|
317
|
+
<text x="1194" y="120" class="ct">C-E Browse remote</text>
|
|
318
|
+
<text x="1194" y="140" class="ct">C-F Clear filter</text>
|
|
319
|
+
<text x="1194" y="160" class="ct">C-L fzf jump</text>
|
|
320
|
+
<text x="1194" y="180" class="ct">C-N Navi cheatsheet</text>
|
|
321
|
+
<text x="1194" y="200" class="ct">C-O Change ownership</text>
|
|
322
|
+
<text x="1194" y="220" class="ct">C-P Change permissions</text>
|
|
323
|
+
<text x="1194" y="240" class="ct">C-R Recent files</text>
|
|
324
|
+
<text x="1194" y="260" class="ct">C-T Tag by pattern</text>
|
|
325
|
+
<text x="1194" y="280" class="ct">C-Y Copy pane to clipboard</text>
|
|
326
|
+
<text x="1194" y="300" class="ct">C-; SSH history</text>
|
|
327
|
+
<text x="1194" y="328" class="ct">C-Arrows Move/copy items</text>
|
|
328
|
+
<text x="1194" y="348" class="ct">S-Arrows Scroll right pane</text>
|
|
329
|
+
<text x="1194" y="368" class="ct">S-Tab Page up right pane</text>
|
|
330
|
+
|
|
331
|
+
<!-- Legend -->
|
|
332
|
+
<rect x="20" y="470" width="14" height="14" fill="#442222" rx="2" stroke="#663333" stroke-width="0.5"/>
|
|
333
|
+
<text x="40" y="482" font-size="10" fill="#FF8888">lowercase</text>
|
|
334
|
+
<rect x="120" y="470" width="14" height="14" fill="#222244" rx="2" stroke="#333366" stroke-width="0.5"/>
|
|
335
|
+
<text x="140" y="482" font-size="10" fill="#88BBFF">UPPERCASE</text>
|
|
336
|
+
<rect x="240" y="470" width="14" height="14" fill="#224422" rx="2" stroke="#336633" stroke-width="0.5"/>
|
|
337
|
+
<text x="260" y="482" font-size="10" fill="#88FF88">Ctrl+key</text>
|
|
338
|
+
<rect x="350" y="470" width="14" height="14" fill="#332244" rx="2" stroke="#553366" stroke-width="0.5"/>
|
|
339
|
+
<text x="370" y="482" font-size="10" fill="#DDAAFF">special</text>
|
|
340
|
+
<text x="460" y="482" font-size="10" fill="#bbb">gray = navigation</text>
|
|
341
|
+
</svg>
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rtfm-filemanager
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 8.2.
|
|
4
|
+
version: 8.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Geir Isene
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rcurses
|
|
@@ -97,7 +97,7 @@ files:
|
|
|
97
97
|
- examples/rtfm.conf
|
|
98
98
|
- examples/settings.rb
|
|
99
99
|
- img/logo.png
|
|
100
|
-
- img/rtfm-kb.
|
|
100
|
+
- img/rtfm-kb.svg
|
|
101
101
|
- man/rtfm.1
|
|
102
102
|
homepage: https://isene.com/
|
|
103
103
|
licenses:
|
data/img/rtfm-kb.png
DELETED
|
Binary file
|