rtfm-filemanager 2.0.1 → 2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +298 -0
- data/bin/rtfm +31 -11
- metadata +5 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1513671bf2225ce310f4da9d6456c24f9268b6adbbb295574f2251358bb1bc7d
|
4
|
+
data.tar.gz: 8018bd4e856182ae60a7957e9381c4109c28423710ed224276633b9763b4d075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84902969b49951e25999896cfb64e7712bb21032b6b5c1d43f239b3a926077faa7e5d7fb02c834587a004d5830b75517451c90ad84a82e230007802777703439
|
7
|
+
data.tar.gz: 23f9324a0382237e030d9e172495ec22329c679d98c16c1f3e6c3943b68bd5b5930072939e8798f72e8862ceba4396447c31b632a22fc47e70fc455c8af9d7d2
|
data/README.md
ADDED
@@ -0,0 +1,298 @@
|
|
1
|
+
# RTFM - Ruby Terminal File Manager
|
2
|
+
|
3
|
+
## What?
|
4
|
+
RTFM is a file manager for the terminal written in Ruby. It lets you browse
|
5
|
+
directories and view the content of directories and files. Files are syntax
|
6
|
+
highlighted, images are shown in the terminal, videos are thumbnailed, etc.
|
7
|
+
You can bookmark and jump around easily, delete, rename, copy, symlink and
|
8
|
+
move files. RTFM has a a wide range of other features. Read on for what it can
|
9
|
+
do.
|
10
|
+
|
11
|
+
Note: RTFM works best with the (u)rxvt, xterm and Eterm terminal emulators.
|
12
|
+
|
13
|
+
## Why?
|
14
|
+
RTFM parses your LS_COLORS to ensure color consistency with the terminal experience.
|
15
|
+
|
16
|
+
The idea came to mind as I was working on [a complete
|
17
|
+
LS_COLORS setup](https://github.com/isene/LS_COLORS) with a corresponding
|
18
|
+
ranger theme. But making a separate theme for ranger to mimic a massive
|
19
|
+
LS_COLOR setup is rather stupid. File managers should parse LS_COLORS as
|
20
|
+
default rather than implement their own themes. This became an itch that
|
21
|
+
I kept scratching until I could happily replace ranger two weeks later.
|
22
|
+
|
23
|
+
|
24
|
+
## How?
|
25
|
+
RTFM is a two-pane file manager. You navigate in the left pane and the content
|
26
|
+
of the selected item (directory or file) is shown in the right pane. The right
|
27
|
+
pane is also used to show information such as the currently tagged items, your
|
28
|
+
(book)marks, output from commands, etc.
|
29
|
+
|
30
|
+
You can run any command in the bottom "command line" and have the output
|
31
|
+
presented in the right pane. Use LEFT and RIGHT keys to go back and forth on
|
32
|
+
the command line, HOME to beginning of line, END to end of line, Backspace or
|
33
|
+
Ctrl-h to delete previous character, Ctrl-w to delete previous word, TAB to
|
34
|
+
complete directories and file names and ENTER to issue the command, while
|
35
|
+
Ctrl-u deletes the line. Issuing ENTER on a blank line has no effect.
|
36
|
+
|
37
|
+
## Installation
|
38
|
+
|
39
|
+
You can install RTFM by simply coloning this repo and put the file `rtfm` in
|
40
|
+
your "bin" directory. Or you can simply run `gem install rtfm-filemanager`.
|
41
|
+
|
42
|
+
There are two basic prerequisites needed: `x11-utils` and `xdotool`. On
|
43
|
+
Ubuntu these would be installed via `apt install x11-utils xdotool`.
|
44
|
+
|
45
|
+
In order to run RTFM (without generating [a bunch of
|
46
|
+
warnings](https://github.com/isene/RTFM/issues/1)), you need to do a `gem
|
47
|
+
install curses` (gets version 1.3.2) instead of installing via `apt install
|
48
|
+
ruby-curses` (gets version 1.2.4-1build1 on Ubuntu 20.04).
|
49
|
+
|
50
|
+
Content of text files are handled by `cat` - or by `bat` if you want beautiful
|
51
|
+
highlighting. Other files are shown via external programs. It is shown if you
|
52
|
+
have the program installed (Debian/Ubuntu family of Linux distros command in
|
53
|
+
last column):
|
54
|
+
|
55
|
+
File type | Requirements | Installation
|
56
|
+
----------------------------|----------------------------------|-------------------------------
|
57
|
+
Syntax highlighting of text | `bat` | `apt install bat`
|
58
|
+
PDFs | `pdftotext` | `apt install poppler-utils`
|
59
|
+
LibreOffice | `odt2txt` | `apt install odt2txt`
|
60
|
+
MS docx | `docx2txt` | `apt install docx2txt`
|
61
|
+
MS pptx | `unzip` | `apt install unzip`
|
62
|
+
MS xlsx | `ssconvert` | `apt install gnumeric`
|
63
|
+
MS doc/xls/ppt | `catdoc`, `xls2csv` and `catppt` | `apt install catdoc`
|
64
|
+
Images | `w3m` and `ImageMagick` | `apt install w3m imagemagick`
|
65
|
+
Video (thumbnails) | `ffmpegthumbnailer` | `apt install ffmpegthumbnailer`
|
66
|
+
|
67
|
+
Install rtfm from scratch with all of the above on Ubuntu:
|
68
|
+
```
|
69
|
+
sudo apt update
|
70
|
+
sudo apt install ruby-full git libncurses-dev x11-utils xdotool bat poppler-utils odt2txt docx2txt catdoc w3m imagemagick ffmpegthumbnailer
|
71
|
+
sudo gem install curses
|
72
|
+
git clone https://github.com/isene/RTFM
|
73
|
+
cd RTFM
|
74
|
+
sudo cp rtfm /usr/bin/
|
75
|
+
cp .rtfm.launch ~/
|
76
|
+
echo "source ~/.rtfm.launch" >> .zshrc # or .bashrc if you run bash as shell
|
77
|
+
```
|
78
|
+
|
79
|
+
## Screenshot
|
80
|
+
|
81
|
+

|
82
|
+
|
83
|
+
## Image preview in the terminal
|
84
|
+
|
85
|
+
RTFM uses w3mimgdisplay (part of the w3m package) to show images in the
|
86
|
+
terminal. Some terminals have an issue with this - either the images don't
|
87
|
+
show, the previous image is not cleared (new image overlaps the previous) or
|
88
|
+
they show for only a flash or a few seconds. The table below shows how the
|
89
|
+
most popular terminals fare with this. An "O" indicates that the terminal is
|
90
|
+
OK, while an "X" indicates that it fails:
|
91
|
+
|
92
|
+
Terminal |Images | No overlap | Images stay
|
93
|
+
--------------|-------|------------|-----------
|
94
|
+
(u)rxvt | O | O | O
|
95
|
+
xterm | O | O | O
|
96
|
+
Eterm | O | O | O
|
97
|
+
kitty | O | O | O
|
98
|
+
alacritty | O | O | X
|
99
|
+
terminology | O | O | X
|
100
|
+
stterm | O | O | X
|
101
|
+
gnome-terminal| O | X |
|
102
|
+
xfce4-terminal| O | X |
|
103
|
+
mate-terminal | O | X |
|
104
|
+
lilyterm | O | X |
|
105
|
+
termit | X | |
|
106
|
+
lxterminal | X | |
|
107
|
+
qterminal | X | |
|
108
|
+
|
109
|
+
|
110
|
+
## Keys
|
111
|
+
|
112
|
+
These are the set of keys to move around and do actions within RTFM:
|
113
|
+
|
114
|
+
### Basic keys
|
115
|
+
|
116
|
+
Key | Description
|
117
|
+
-------|------------------------------------------------------------------
|
118
|
+
? | Show this help text
|
119
|
+
r | Refresh RTFM (recreates all windows. Use on terminal resize or when there is garbage somewhere)
|
120
|
+
R | Reload configuration (~/.rtfm.conf)
|
121
|
+
W | Write parameters to ~/.rtfm.conf (@lsall, @lslong, @lsorder, @lsinvert, @border, @width, @preview, @tagged, @marks)
|
122
|
+
q | Quit
|
123
|
+
Q | QUIT (without writing changes to the config file)
|
124
|
+
|
125
|
+
### Motion
|
126
|
+
|
127
|
+
Key | Description
|
128
|
+
-----------|------------------------------------------------------------------
|
129
|
+
DOWN or j | Go one item down in left pane (rounds to top)
|
130
|
+
UP or k | Go one item up in left pane (rounds to bottom)
|
131
|
+
LEFT or h | Go up one directory level
|
132
|
+
RIGHT or l | Enter directory or open file (using xdg-open or run-mailcap). Use the key 'x' to force open using xdg-open (or run-mailcap). Use 'x' for opening html files in a browser rather than editing the file in your text editor.
|
133
|
+
PgDown | Go one page down in left pane
|
134
|
+
PgUp | Go one page up in left pane
|
135
|
+
END | Go to last item in left pane
|
136
|
+
HOME | Go to first item in left pane
|
137
|
+
|
138
|
+
### Jumping and marks
|
139
|
+
|
140
|
+
Key | Description
|
141
|
+
-------|------------------------------------------------------------------
|
142
|
+
m | Mark current dir (persistent). Next letter is the name of the mark [a-zA-Z'] The special mark "'" jumps to the last directory (makes toggling dirs easy) Press '-' and a letter to delete that mark
|
143
|
+
M | Show marked items in right pane
|
144
|
+
' | Jump to mark (next letter is the name of the mark [a-zA-Z']). The 5 latest directories visited are stored in marks 1-5 (1 being the very latest)
|
145
|
+
/ | Enter search string in bottom window to highlight matching items and jump to the first match
|
146
|
+
\\ | Remove search pattern
|
147
|
+
n | Jump to the next item matched by '/'
|
148
|
+
N | Jump to the previous item matched by '/'
|
149
|
+
~ | Jump to Home directory
|
150
|
+
f | Follow symlink to the directory where the target resides
|
151
|
+
L | Start 'locate' search for files, then use '#' to jump to desired line/directory
|
152
|
+
|
153
|
+
### Tagging
|
154
|
+
|
155
|
+
Key | Description
|
156
|
+
-------|------------------------------------------------------------------
|
157
|
+
t | Tag item (toggles)
|
158
|
+
Ctrl-t | Add items matching a pattern to list of tagged items (Ctrl-t and then . will tag all items)
|
159
|
+
T | Show currently tagged items in right pane
|
160
|
+
u | Untag all tagged items
|
161
|
+
|
162
|
+
### Manipulate items
|
163
|
+
|
164
|
+
Key | Description
|
165
|
+
-------|------------------------------------------------------------------
|
166
|
+
p | Put (copy) tagged items here
|
167
|
+
P | PUT (move) tagged items here
|
168
|
+
s | Create symlink to tagged items here
|
169
|
+
d | Delete selected item and tagged items. Press 'y' to confirm
|
170
|
+
c | Change/rename selected (adds command to bottom window)
|
171
|
+
|
172
|
+
### Directory views
|
173
|
+
|
174
|
+
Key | Description
|
175
|
+
-------|------------------------------------------------------------------
|
176
|
+
a | Show all (also hidden) items
|
177
|
+
A | Show All info per item (show item attributes)
|
178
|
+
o | Change the order/sorting of directories (circular toggle)
|
179
|
+
i | Invert/reverse the sorting
|
180
|
+
O | Show the Ordering in the bottom window (the full ls command)
|
181
|
+
G | Show git status for current directory
|
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
|
+
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
|
+
|
186
|
+
### Right pane
|
187
|
+
|
188
|
+
Key | Description
|
189
|
+
-------|------------------------------------------------------------------
|
190
|
+
ENTER | Refresh the right pane
|
191
|
+
TAB | Next page of the preview (if doc long and ∇ in the bottom right)
|
192
|
+
S-TAB | Previous page (if you have moved down the document first - ∆ in the top right)
|
193
|
+
w | Change the width of the left/right panes (left pane ⇒ ⅓ ⇒ ¼ ⇒ ⅕ ⇒ ⅙ ⇒ ½ ⇒ ⅓)
|
194
|
+
\- | Toggle preview in right pane (turn it off for faster traversing of directories)
|
195
|
+
_ | Toggle preview of images in right pane
|
196
|
+
|
197
|
+
### Additinal commands
|
198
|
+
|
199
|
+
Key | Description
|
200
|
+
-------|------------------------------------------------------------------
|
201
|
+
F | Show only files in the left pane matching extension(s) (e.g. "txt" or "pdf,png,jpg")
|
202
|
+
g | Run 'grep' to show files that contains the MATCH in current directory
|
203
|
+
: | Enter "command mode" in bottom window (press ENTER to execute, press Ctrl-G to escape)
|
204
|
+
; | Show command history in right pane
|
205
|
+
y | Copy path of selected item to primary selection (for pasting with middle mouse button)
|
206
|
+
Y | Copy path of selected item to clipboard
|
207
|
+
|
208
|
+
|
209
|
+
## A convenient shell function
|
210
|
+
Add this line to your `.bashrc` or `.zshrc` to make RTFM exit to the current
|
211
|
+
directory by launching the file manager via `r` in the terminal:
|
212
|
+
|
213
|
+
`source ~/.rtfm.launch`
|
214
|
+
|
215
|
+
... and place the file `.rtfm.launch` in your home directory.
|
216
|
+
|
217
|
+
With this, you can jump around in your directory structure via RTFM, exit to
|
218
|
+
the desired directory, do work in the terminal and go back into RTFM via `r`.
|
219
|
+
|
220
|
+
|
221
|
+
## Configuration file
|
222
|
+
When you first exit RTFM, it will write your (book)marks and the set of tagged
|
223
|
+
files to `.rtfm.conf`. This ensures your marks and tagged files are
|
224
|
+
persistent. It also means you can launch rtfm tag a bunch of dirs and files,
|
225
|
+
drop out back to the terminal to do some work, back into rtfm and resume to
|
226
|
+
work with your previously tagged items.
|
227
|
+
|
228
|
+
You can also set persistent variables in the config file manually. At the top
|
229
|
+
of `.rtfm.conf` you can set the following:
|
230
|
+
|
231
|
+
To have long info per item: `@lslong = true` (this is otherwise set to `false`)
|
232
|
+
|
233
|
+
To show hidden files: `@lsall = "-a"` (this is otherwise set to `""`)
|
234
|
+
|
235
|
+
To set any additional 'ls' switches, set the variable `@lsuser`. To not list
|
236
|
+
any files containg the word "test", you could do this:
|
237
|
+
```
|
238
|
+
@lsuser = "--ignore=test"
|
239
|
+
```
|
240
|
+
|
241
|
+
To change the default width of the left pane to something other than ⅓rd of
|
242
|
+
the terminal width: `@width = 5` (would set the left pane width to ⅕th).
|
243
|
+
|
244
|
+
To add borders in RTFM: `@border = true`
|
245
|
+
|
246
|
+
To have some commands already prepared for the command history, you can set:
|
247
|
+
```
|
248
|
+
@history = ["cat /home/me/MyTodo.txt", "neofetch --stdout"]
|
249
|
+
```
|
250
|
+
To open files with `run-mailcap` instead of `open-xdg` set:
|
251
|
+
```
|
252
|
+
@runmailcap = true
|
253
|
+
```
|
254
|
+
|
255
|
+
These variables that you manually add to the top of the config files are
|
256
|
+
undisturbed by launching and exiting RTFM.
|
257
|
+
|
258
|
+
You can also use `W` inside of RTFM to write all the parameters mentioned
|
259
|
+
above to the config file - instead of adding them manually.
|
260
|
+
|
261
|
+
To exit RTFM without writing any changes to you marks or list of tagged items,
|
262
|
+
exit with `Q`. They will then remain the same as when you launched RTFM for
|
263
|
+
that session.
|
264
|
+
|
265
|
+
|
266
|
+
## Extra info
|
267
|
+
The top line shows information about the currently item in the left pane. When
|
268
|
+
you are at a file, the information is pretty self explanatory:
|
269
|
+
|
270
|
+
`Path: /home/geir/RTFM/README.md (-rw-rw-r-- 6,0K)`
|
271
|
+
|
272
|
+
This shows the full path of the selected file as well as the permissions and
|
273
|
+
the size of the file. When you are at a directory in the left pane, you get
|
274
|
+
two numbers in brackets. The first number is the number of regular dirs/files
|
275
|
+
in that directory. The second shows the total number of entries, including the
|
276
|
+
hidden directories and files:
|
277
|
+
|
278
|
+
`Path: /home/geir/RTFM (drwxrwxr-x 4,0K) [4 8]`
|
279
|
+
|
280
|
+
Different file types may have extra self explanatory information included in
|
281
|
+
square brackets at the end of the top info line. Image files will have the
|
282
|
+
size of the image included while pdf files will have the number of pages. More
|
283
|
+
file specific information will be included when I feel like adding such.
|
284
|
+
|
285
|
+
## Screencast
|
286
|
+
[](https://youtu.be/ANUOlDryUng)
|
287
|
+
|
288
|
+
|
289
|
+
## Development
|
290
|
+
I don't expect this program to be used by others. I do this for my own
|
291
|
+
enjoyment and because I want a file manager that fits my needs better than any
|
292
|
+
others I have found. If you come up with a feature request I feel is cool, I
|
293
|
+
may include it. Bug reports are always welcome.
|
294
|
+
|
295
|
+
A note to developers: You can hit the "@" key to enter the Ruby debug mode
|
296
|
+
where anything you enter in the bottom command window will be sent to the Ruby
|
297
|
+
eval() function and output to the right pane. You can for instance issue
|
298
|
+
`puts @searched` to see the currently active search pattern.
|
data/bin/rtfm
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# encoding: utf-8
|
3
|
-
|
3
|
+
#
|
4
4
|
# SCRIPT INFO
|
5
5
|
# Name: RTFM - Ruby Terminal File Manager
|
6
6
|
# Language: Pure Ruby, best viewed in VIM
|
@@ -91,6 +91,7 @@ RIGHT PANE
|
|
91
91
|
_ = Toggle preview of images in right pane
|
92
92
|
|
93
93
|
ADDITINAL COMMANDS
|
94
|
+
F = Show only files in the left pane matching extension(s) (e.g. "txt" or "pdf,png,jpg")
|
94
95
|
g = Run 'grep' to show files that contains the MATCH in current directory
|
95
96
|
: = Enter "command mode" in bottom window (press ENTER to execute, press Ctrl-G to escape)
|
96
97
|
; = Show command history in right pane
|
@@ -99,7 +100,6 @@ ADDITINAL COMMANDS
|
|
99
100
|
|
100
101
|
COPYRIGHT: Geir Isene, 2020-3. No rights reserved. See http://isene.com for more.
|
101
102
|
HELPTEXT
|
102
|
-
|
103
103
|
@firstrun = <<FIRSTRUN
|
104
104
|
|
105
105
|
Welcome to RTFM - the Ruby Terminal File Manager. This help text is shown on the first run.
|
@@ -118,7 +118,6 @@ Viewing Images uses "w3m and ImageMagick": apt install w3m imagem
|
|
118
118
|
Viewing Video thumbnails uses "ffmpegthumbnailer" apt install ffmpegthumbnailer
|
119
119
|
|
120
120
|
FIRSTRUN
|
121
|
-
|
122
121
|
unless File.exist?(Dir.home+'/.rtfm.conf')
|
123
122
|
puts @firstrun
|
124
123
|
puts "... hit ENTER to show the RTFM help text."
|
@@ -127,7 +126,6 @@ unless File.exist?(Dir.home+'/.rtfm.conf')
|
|
127
126
|
puts "\n... hit ENTER to start RTFM. Enjoy :-)"
|
128
127
|
STDIN.gets
|
129
128
|
end
|
130
|
-
|
131
129
|
begin # BASIC SETUP
|
132
130
|
require 'fileutils'
|
133
131
|
require 'io/console'
|
@@ -181,6 +179,7 @@ begin # BASIC SETUP
|
|
181
179
|
## These should not be set by user in .rtfm.conf
|
182
180
|
@directory = {} # Initialize the directory hash for remembering directories visited
|
183
181
|
@searched = "" # Initialize the active searched for items
|
182
|
+
@lsfiles = "" # File types to show (initially set to all file types"
|
184
183
|
@index = 0 # Set chosen item to first on startup
|
185
184
|
@marks["'"] = Dir.pwd
|
186
185
|
## File type recognizers
|
@@ -683,6 +682,11 @@ def main_getkey # GET KEY FROM USER
|
|
683
682
|
getch
|
684
683
|
@break = true
|
685
684
|
# ADDITIONAL COMMANDS
|
685
|
+
when 'F' # Filter out filetypes not matching @lsfiles
|
686
|
+
loop do
|
687
|
+
@lsfiles = w_b_getstr("Filetype(s) to show: ", @lsfiles)
|
688
|
+
break if @lsfiles.match(/^$|\w+(,\w+)*$/)
|
689
|
+
end
|
686
690
|
when '/' # Get search string to mark items that match the input
|
687
691
|
@w_b.nohistory = true
|
688
692
|
@searched = w_b_getstr("/ ", "")
|
@@ -1000,7 +1004,7 @@ def w_r_show # SHOW CONTENTS IN THE RIGHT WINDOW
|
|
1000
1004
|
elsif File.directory?(@selected)
|
1001
1005
|
ls_cmd = "ls #{@selected_safe} #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}"
|
1002
1006
|
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
1003
|
-
ls_cmd += %q[ -lhgGH --time-style="long-iso" | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\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"}']
|
1004
1008
|
@fspes = `#{ls_cmd} 2>/dev/null`.split("\n").drop(1)
|
1005
1009
|
list_dir(false)
|
1006
1010
|
# TEXT
|
@@ -1076,7 +1080,7 @@ end
|
|
1076
1080
|
def w_r_info(info) # SHOW INFO IN THE RIGHT WINDOW
|
1077
1081
|
image_show("clear") if @image; @image = false
|
1078
1082
|
@w_r.clr
|
1079
|
-
@w_r.
|
1083
|
+
@w_r.refresh
|
1080
1084
|
w_r_width = Curses.cols - (Curses.cols/@width) - 2
|
1081
1085
|
info.gsub!(/(.{1,#{w_r_width}})( +|$\n?)|(.{1,#{w_r_width}})/, "\\1\\3\n")
|
1082
1086
|
@w_r.text = info
|
@@ -1205,7 +1209,11 @@ def openai # INTERFACE TO OPENAI
|
|
1205
1209
|
p += "Give a brief summary of its content: " + c unless File.directory?(@selected) and c == ""
|
1206
1210
|
|
1207
1211
|
response = client.completions( parameters: { model: "text-davinci-003", prompt: p, max_tokens: 200 })
|
1208
|
-
|
1212
|
+
begin
|
1213
|
+
text = "OpenAI description:\n" + response["choices"][0]["text"]
|
1214
|
+
rescue
|
1215
|
+
text = "No OpenAI response"
|
1216
|
+
end
|
1209
1217
|
|
1210
1218
|
@w_r.fg = 229
|
1211
1219
|
w_r_info(text)
|
@@ -1214,7 +1222,11 @@ end
|
|
1214
1222
|
# BOTTOM WINDOW FUNCTIONS
|
1215
1223
|
def w_b_info(info) # SHOW INFO IN @W_B
|
1216
1224
|
@w_b.clr
|
1217
|
-
|
1225
|
+
if info == nil
|
1226
|
+
info = ": for command (use @s for selected item, @t for tagged items) - press ? for help"
|
1227
|
+
info = "Showing only file type #{@lsfiles}" if @lsfiles != ""
|
1228
|
+
info = "Showing only file types #{@lsfiles}" if @lsfiles =~ /,/
|
1229
|
+
end
|
1218
1230
|
info = info[1..(@w_b.maxx - 3)] + "…" if info.length + 3 > @w_b.maxx
|
1219
1231
|
info += " " * (@w_b.maxx - info.length) if info.length < @w_b.maxx
|
1220
1232
|
@w_b.text = info
|
@@ -1404,7 +1416,6 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1404
1416
|
@w_p.refresh
|
1405
1417
|
@w_t.fg, @w_t.bg = 232, 249
|
1406
1418
|
@w_t.attr = Curses::A_BOLD
|
1407
|
-
@w_b.fg, @w_b.bg = 250, 238
|
1408
1419
|
@w_b.update = true
|
1409
1420
|
@w_r.update = true
|
1410
1421
|
@w_r.pager = 0
|
@@ -1418,16 +1429,25 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1418
1429
|
@change = true
|
1419
1430
|
@change_tag = true # For future need to force @change
|
1420
1431
|
loop do # INNER, CORE LOOP
|
1432
|
+
@w_b.fg, @w_b.bg = 250, 238
|
1433
|
+
@w_b.fg, @w_b.bg = 250, 88 if @lsfiles != ""
|
1421
1434
|
@w_r.text = ""
|
1422
1435
|
begin # Jump to home dir if current dir is externally removed
|
1423
1436
|
Dir.pwd
|
1424
1437
|
rescue
|
1425
1438
|
Dir.chdir
|
1426
1439
|
end
|
1427
|
-
|
1440
|
+
lsf = @lsfiles.split(",").map! {|e| "*." + e.strip }
|
1441
|
+
lsf = lsf.join(" ")
|
1442
|
+
ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser} #{lsf}" # Get files in current directory
|
1428
1443
|
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
1429
|
-
ls_cmd += %q[ -lhgG --time-style="long-iso" | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\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"}']
|
1430
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
|
1431
1451
|
if Dir.pwd != dir_old
|
1432
1452
|
if @directory.key?(Dir.pwd)
|
1433
1453
|
@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.1'
|
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-
|
11
|
+
date: 2023-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -31,15 +31,12 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.3.2
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: ruby-openai
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '3.0'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 3.0.3
|
43
40
|
type: :runtime
|
44
41
|
prerelease: false
|
45
42
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -47,14 +44,10 @@ dependencies:
|
|
47
44
|
- - "~>"
|
48
45
|
- !ruby/object:Gem::Version
|
49
46
|
version: '3.0'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 3.0.3
|
53
47
|
description: 'A full featured terminal browser with syntax highlighted files, images
|
54
48
|
shown in the terminal, videos thumbnailed, etc. You can bookmark and jump around
|
55
49
|
easily, delete, rename, copy, symlink and move files. RTFM has a a wide range of
|
56
|
-
other features. New in 2.
|
57
|
-
Read the doc/helpfile and use key ''I'' and enjoy!'
|
50
|
+
other features. New in 2.1: Added filter-by-extension via the key ''F'''
|
58
51
|
email: g@isene.com
|
59
52
|
executables:
|
60
53
|
- rtfm
|
@@ -62,6 +55,7 @@ extensions: []
|
|
62
55
|
extra_rdoc_files: []
|
63
56
|
files:
|
64
57
|
- ".rtfm.launch"
|
58
|
+
- README.md
|
65
59
|
- bin/rtfm
|
66
60
|
homepage: https://isene.com/
|
67
61
|
licenses:
|