rtfm-filemanager 2.0.1 → 2.1
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 +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:
|