rtfm-filemanager 2.1 → 2.2
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/README.md +4 -3
- data/bin/rtfm +40 -24
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c410aa1b0b696236f9954263caa3d7e670d7ca45da0d45d2e8cb94fc52d895d1
|
|
4
|
+
data.tar.gz: 6832505f97d8b81010c50905782af9eb2a36709386ee616d06c8f1024d798a54
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7901006b50b618083589b017b66cb747d41c42d7bb170c95b00b19ddbdc0aa1d4921ddfe90ed2eebef10e040f0c15b7a1fa4b2557416d0d0d9b6201d34f8267f
|
|
7
|
+
data.tar.gz: d8666f8f471d72bc19fd27235e191604d09ef2dd7df58a51339fd9ec7c2cfa5ba7714d28a7aa5c8a2217dd5916cd31c3a473f2b31a397f336ba69ef15fce23a6
|
data/README.md
CHANGED
|
@@ -147,7 +147,7 @@ M | Show marked items in right pane
|
|
|
147
147
|
n | Jump to the next item matched by '/'
|
|
148
148
|
N | Jump to the previous item matched by '/'
|
|
149
149
|
~ | Jump to Home directory
|
|
150
|
-
|
|
150
|
+
\> | Follow symlink to the directory where the target resides
|
|
151
151
|
L | Start 'locate' search for files, then use '#' to jump to desired line/directory
|
|
152
152
|
|
|
153
153
|
### Tagging
|
|
@@ -180,7 +180,6 @@ i | Invert/reverse the sorting
|
|
|
180
180
|
O | Show the Ordering in the bottom window (the full ls command)
|
|
181
181
|
G | Show git status for current directory
|
|
182
182
|
H | Do a cryptographic hash of the current directory with subdirs. If a previous hash was made, compare and report if there has been any change
|
|
183
|
-
S | Show comprehensive system info (system, CPU, filesystem, latest dmesg messages)
|
|
184
183
|
I | Show OpenAI's description of the selected item and its content (if available). You must have installed the ruby-openai gem and added your openai secret key in the .rtfm.conf (add `@ai = "your-secret-openai-key") for this to work. If RTFM is installed as a gem, the ruby-openai gem is included in the installation
|
|
185
184
|
|
|
186
185
|
### Right pane
|
|
@@ -198,12 +197,14 @@ _ | Toggle preview of images in right pane
|
|
|
198
197
|
|
|
199
198
|
Key | Description
|
|
200
199
|
-------|------------------------------------------------------------------
|
|
201
|
-
|
|
200
|
+
f | Show only files in the left pane matching extension(s) (e.g. "txt" or "pdf,png,jpg")
|
|
201
|
+
F | Show only files matching a pattern (Ruby Regex) (e.g. "abc" or "ab.+12(\w3)*")
|
|
202
202
|
g | Run 'grep' to show files that contains the MATCH in current directory
|
|
203
203
|
: | Enter "command mode" in bottom window (press ENTER to execute, press Ctrl-G to escape)
|
|
204
204
|
; | Show command history in right pane
|
|
205
205
|
y | Copy path of selected item to primary selection (for pasting with middle mouse button)
|
|
206
206
|
Y | Copy path of selected item to clipboard
|
|
207
|
+
S | Show comprehensive system info (system, CPU, filesystem, latest dmesg messages)
|
|
207
208
|
|
|
208
209
|
|
|
209
210
|
## A convenient shell function
|
data/bin/rtfm
CHANGED
|
@@ -48,11 +48,11 @@ JUMPING AND MARKS
|
|
|
48
48
|
' = Jump to mark (next letter is the name of the mark [a-zA-Z'])
|
|
49
49
|
The 5 latest directories visited are stored in marks 1-5 (1 being the very latest)
|
|
50
50
|
/ = Enter search string in bottom window to highlight matching items and jump to the first match
|
|
51
|
-
|
|
51
|
+
\ = Remove search pattern
|
|
52
52
|
n = Jump to the next item matched by '/'
|
|
53
53
|
N = Jump to the previous item matched by '/'
|
|
54
54
|
~ = Jump to Home directory
|
|
55
|
-
|
|
55
|
+
> = Follow symlink to the directory where the target resides
|
|
56
56
|
L = Start 'locate' search for files, then use '#' to jump to desired line/directory
|
|
57
57
|
|
|
58
58
|
TAGGING
|
|
@@ -77,7 +77,6 @@ DIRECTORY VIEWS
|
|
|
77
77
|
G = Show git status for current directory
|
|
78
78
|
H = Do a cryptographic hash of the current directory with subdirs
|
|
79
79
|
If a previous hash was made, compare and report if there has been any change
|
|
80
|
-
S = Show comprehensive system info (system, CPU, filesystem, latest dmesg messages)
|
|
81
80
|
I = Show OpenAI's description of the selected item and its content (if available)
|
|
82
81
|
You must have installed the ruby-openai gem and added your openai secret key
|
|
83
82
|
in the .rtfm.conf (add `@ai = "your-secret-openai-key") for this to work.
|
|
@@ -87,16 +86,18 @@ RIGHT PANE
|
|
|
87
86
|
TAB = Next page of the preview (if doc long and ∇ in the bottom right)
|
|
88
87
|
S-TAB = Previous page (if you have moved down the document first - ∆ in the top right)
|
|
89
88
|
w = Change the width of the left/right panes (left pane ⇒ ⅓ ⇒ ¼ ⇒ ⅕ ⇒ ⅙ ⇒ ½ ⇒ ⅓)
|
|
90
|
-
- = Toggle preview in right pane (turn it off for faster traversing of directories)
|
|
91
|
-
_ = Toggle preview of images in right pane
|
|
89
|
+
- = (Minus sign) Toggle preview in right pane (turn it off for faster traversing of directories)
|
|
90
|
+
_ = (Underscore) Toggle preview of images in right pane
|
|
92
91
|
|
|
93
92
|
ADDITINAL COMMANDS
|
|
94
|
-
|
|
93
|
+
f = Show only files in the left pane matching extension(s) (e.g. "txt" or "pdf,png,jpg")
|
|
94
|
+
F = Show only files matching a pattern (Ruby Regex) (e.g. "abc" or "ab.+12(\w3)*")
|
|
95
95
|
g = Run 'grep' to show files that contains the MATCH in current directory
|
|
96
96
|
: = Enter "command mode" in bottom window (press ENTER to execute, press Ctrl-G to escape)
|
|
97
97
|
; = Show command history in right pane
|
|
98
98
|
y = Copy path of selected item to primary selection (for pasting with middle mouse button)
|
|
99
99
|
Y = Copy path of selected item to clipboard
|
|
100
|
+
S = Show comprehensive System info (system, CPU, filesystem, latest dmesg messages)
|
|
100
101
|
|
|
101
102
|
COPYRIGHT: Geir Isene, 2020-3. No rights reserved. See http://isene.com for more.
|
|
102
103
|
HELPTEXT
|
|
@@ -179,7 +180,8 @@ begin # BASIC SETUP
|
|
|
179
180
|
## These should not be set by user in .rtfm.conf
|
|
180
181
|
@directory = {} # Initialize the directory hash for remembering directories visited
|
|
181
182
|
@searched = "" # Initialize the active searched for items
|
|
182
|
-
@lsfiles = "" # File types to show (initially set to all file types
|
|
183
|
+
@lsfiles = "" # File types to show (initially set to all file types) - not saved on exit
|
|
184
|
+
@lsmatch = "" # Files to match (initially set to matching all files) - not saved on exit
|
|
183
185
|
@index = 0 # Set chosen item to first on startup
|
|
184
186
|
@marks["'"] = Dir.pwd
|
|
185
187
|
## File type recognizers
|
|
@@ -430,7 +432,7 @@ def main_getkey # GET KEY FROM USER
|
|
|
430
432
|
Dir.chdir
|
|
431
433
|
@w_r.update = true
|
|
432
434
|
@w_b.update = true
|
|
433
|
-
when '
|
|
435
|
+
when '>' # Follow symlink
|
|
434
436
|
@directory[Dir.pwd] = @selected # Store this directory before leaving
|
|
435
437
|
mark_latest
|
|
436
438
|
if File.symlink?(@selected)
|
|
@@ -682,11 +684,13 @@ def main_getkey # GET KEY FROM USER
|
|
|
682
684
|
getch
|
|
683
685
|
@break = true
|
|
684
686
|
# ADDITIONAL COMMANDS
|
|
685
|
-
when '
|
|
687
|
+
when 'f' # Filter out filetypes not matching @lsfiles
|
|
686
688
|
loop do
|
|
687
689
|
@lsfiles = w_b_getstr("Filetype(s) to show: ", @lsfiles)
|
|
688
690
|
break if @lsfiles.match(/^$|\w+(,\w+)*$/)
|
|
689
691
|
end
|
|
692
|
+
when 'F' # Filter out files not matching @lsmatch
|
|
693
|
+
@lsmatch = w_b_getstr("Files will match RegEx: ", @lsmatch)
|
|
690
694
|
when '/' # Get search string to mark items that match the input
|
|
691
695
|
@w_b.nohistory = true
|
|
692
696
|
@searched = w_b_getstr("/ ", "")
|
|
@@ -823,6 +827,31 @@ def mark_latest
|
|
|
823
827
|
@marks["1"] = @marks["'"]
|
|
824
828
|
@marks["'"] = Dir.pwd
|
|
825
829
|
end
|
|
830
|
+
def get_files(win) # The core of the directory listings
|
|
831
|
+
ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}" # Get files in current directory
|
|
832
|
+
ls_cmd += @selected_safe if win == "right"
|
|
833
|
+
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
|
834
|
+
ls_cmd += " -H " if win == "right"
|
|
835
|
+
ls_cmd += %q[ -lhgG --time-style="long-iso" 2>/dev/null | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\n"}']
|
|
836
|
+
@fspes = `#{ls_cmd} 2>/dev/null`.split("\n").drop(1)
|
|
837
|
+
if @lsfiles != "" or @lsmatch != ""
|
|
838
|
+
lsf = @lsfiles.split(",").map! {|e| e.strip}
|
|
839
|
+
dir_cmd = "ls -d "
|
|
840
|
+
dir_cmd += @selected_safe + "/" if win == "right"
|
|
841
|
+
dir_cmd += "*/"
|
|
842
|
+
dirs = `#{dir_cmd} 2>/dev/null`.split("/\n")
|
|
843
|
+
dirs.map!{|d| d.sub!(/.*\//, '')} if win == "right"
|
|
844
|
+
@files = @files - dirs
|
|
845
|
+
@fspes = @fspes - dirs
|
|
846
|
+
@files.select! {|f| lsf.any? {|l| File.extname(f) == ".#{l}"}} if @lsfiles != ""
|
|
847
|
+
@fspes.select! {|f| lsf.any? {|l| File.extname(f) == ".#{l}"}} if @lsfiles != ""
|
|
848
|
+
@files.select! {|f| f =~ /#{@lsmatch}/} if @lsmatch != ""
|
|
849
|
+
@fspes.select! {|f| f =~ /#{@lsmatch}/} if @lsmatch != ""
|
|
850
|
+
@files = dirs + @files
|
|
851
|
+
@fspes = dirs + @fspes
|
|
852
|
+
@w_r.update = true
|
|
853
|
+
end
|
|
854
|
+
end
|
|
826
855
|
# TOP WINDOW FUNCTIONS
|
|
827
856
|
def w_t_info # SHOW INFO IN @w_t
|
|
828
857
|
text = " " + ENV['USER'].to_s + "@" + `hostname 2>/dev/null`.to_s.chop + ": " + Dir.pwd + "/"
|
|
@@ -1002,10 +1031,7 @@ def w_r_show # SHOW CONTENTS IN THE RIGHT WINDOW
|
|
|
1002
1031
|
if @w_r.pager > 0
|
|
1003
1032
|
pager_show
|
|
1004
1033
|
elsif File.directory?(@selected)
|
|
1005
|
-
|
|
1006
|
-
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
|
1007
|
-
ls_cmd += %q[ -lhgGH --time-style="long-iso" 2>/dev/null | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\n"}']
|
|
1008
|
-
@fspes = `#{ls_cmd} 2>/dev/null`.split("\n").drop(1)
|
|
1034
|
+
get_files("right")
|
|
1009
1035
|
list_dir(false)
|
|
1010
1036
|
# TEXT
|
|
1011
1037
|
elsif File.read(@selected).force_encoding("UTF-8").valid_encoding? and @w_r.pager == 0
|
|
@@ -1437,17 +1463,7 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
|
1437
1463
|
rescue
|
|
1438
1464
|
Dir.chdir
|
|
1439
1465
|
end
|
|
1440
|
-
|
|
1441
|
-
lsf = lsf.join(" ")
|
|
1442
|
-
ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser} #{lsf}" # Get files in current directory
|
|
1443
|
-
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
|
1444
|
-
ls_cmd += %q[ -lhgG --time-style="long-iso" 2>/dev/null | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\n"}']
|
|
1445
|
-
@fspes = `#{ls_cmd} 2>/dev/null`.split("\n").drop(1)
|
|
1446
|
-
if @lsfiles != ""
|
|
1447
|
-
dirs = `ls -d */`.split("/\n")
|
|
1448
|
-
@files = dirs + @files
|
|
1449
|
-
@fspes = dirs + @fspes
|
|
1450
|
-
end
|
|
1466
|
+
get_files("left")
|
|
1451
1467
|
if Dir.pwd != dir_old
|
|
1452
1468
|
if @directory.key?(Dir.pwd)
|
|
1453
1469
|
@selected = @directory[Dir.pwd]
|
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: '2.
|
|
4
|
+
version: '2.2'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Geir Isene
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-03-
|
|
11
|
+
date: 2023-03-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: curses
|
|
@@ -47,7 +47,8 @@ dependencies:
|
|
|
47
47
|
description: 'A full featured terminal browser with syntax highlighted files, images
|
|
48
48
|
shown in the terminal, videos thumbnailed, etc. You can bookmark and jump around
|
|
49
49
|
easily, delete, rename, copy, symlink and move files. RTFM has a a wide range of
|
|
50
|
-
other features. New in 2.1: Added
|
|
50
|
+
other features. New in 2.1: Added keys ''f'' (show only file types) and ''F'' (show
|
|
51
|
+
only files matching a RegEx) and moved follow-symlink from ''f'' to ''>''.'
|
|
51
52
|
email: g@isene.com
|
|
52
53
|
executables:
|
|
53
54
|
- rtfm
|