rtfm-filemanager 2.0.2 → 2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +298 -0
  3. data/bin/rtfm +31 -11
  4. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dddef7180c16901442304eb4525ece982a16a3d6f96ce39258c4acd44db2783b
4
- data.tar.gz: cb7411ed3d9c8abf5654893cc4eb5dcad6e1786ccbb15fbc5f3486a75ba9d154
3
+ metadata.gz: 1513671bf2225ce310f4da9d6456c24f9268b6adbbb295574f2251358bb1bc7d
4
+ data.tar.gz: 8018bd4e856182ae60a7957e9381c4109c28423710ed224276633b9763b4d075
5
5
  SHA512:
6
- metadata.gz: 756f154772d46ebc46e31cca1e9e44af4cf1ef73a5a136a64e891990bedf1ab8c4708fdc08da8283bb088920c182dc6e7fc24de2a2b757eeedc517d02cb51f26
7
- data.tar.gz: d8679cde6f8c897d206c0c489349c5e83636c018ba8a0f599df478e699cd2e0c87eeb07a53ed55492ce914cb3a55308e0ab498de4e1e6ff9aa86871aed732175
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
+ ![](img/screenshot.png)
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
+ [![RTFM screencast](/img/screenshot-logo.png)](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. refresh
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
- text = "OpenAI description:\n" + response["choices"][0]["text"]
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
- info = ": for command (use @s for selected item, @t for tagged items)" if info == nil
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
- ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}" # Get files in current directory
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.0.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-01-25 00:00:00.000000000 Z
11
+ date: 2023-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -47,7 +47,7 @@ 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.0.2: Fixed ruby-openai dependency.'
50
+ other features. New in 2.1: Added filter-by-extension via the key ''F'''
51
51
  email: g@isene.com
52
52
  executables:
53
53
  - rtfm
@@ -55,6 +55,7 @@ extensions: []
55
55
  extra_rdoc_files: []
56
56
  files:
57
57
  - ".rtfm.launch"
58
+ - README.md
58
59
  - bin/rtfm
59
60
  homepage: https://isene.com/
60
61
  licenses: