rtfm-filemanager 7.0.14 → 7.1.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -10
  3. data/bin/rtfm +22 -8
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e573fe0886eb3f338836fbf751fa2d24f4bb0ccdd6f8441dcfa8fb11e787a3c3
4
- data.tar.gz: 433cc84863d13ca956e0332f497b53a607f21204b95bcb4bccaabb9896523afc
3
+ metadata.gz: 3a39d2642135dedd764081bbacf9324552b2e398570d128da2447d8586b30b1d
4
+ data.tar.gz: e4619be8f3579ad2f2f26b1c2a84b14a8e3712a23f2a33c01225566124209f50
5
5
  SHA512:
6
- metadata.gz: '0785c69d762d6612833b71f8b86325dd042b9739481ca72f58f7593749f5e8f09baa7adc70bebb8af7139436c4a1004b8b3b41dc0db2844835b75fcaea8e9995'
7
- data.tar.gz: 32b6814c2ff6d0370f979896f457c92fa721d3961473a538cd97d4fa3a66f3f00edf30884927bcf94d8863c89118416d6fb82b78af559e80cbd97b3c94cf7cd3
6
+ metadata.gz: c576e346669cffe05991d30829c165f24af56435cde8e29906e8fe1aa2faddb8d1fbe0183a063700e4e6532d9b4e2773ebbbe3fb7d6c2c5608f9f479654a8205
7
+ data.tar.gz: 679467d5bdad962dc4a5e460336f6e3ae5f1b245e187b8d06f27eeeb101ca4980c2aef623be2d2c8078319d0c7fa83b7e6e97c24df19f7bda098658fd04cb6a2
data/README.md CHANGED
@@ -2,16 +2,15 @@
2
2
 
3
3
  ![Ruby](https://img.shields.io/badge/language-Ruby-red) [![Gem Version](https://badge.fury.io/rb/rtfm-filemanager.svg)](https://badge.fury.io/rb/rtfm-filemanager) ![Unlicense](https://img.shields.io/badge/license-Unlicense-green) ![Stay Amazing](https://img.shields.io/badge/Stay-Amazing-important)
4
4
 
5
- ## Version 6.0
5
+ ## Version 7.1
6
6
 
7
- Version 6.0 introduces comprehensive remote directory browsing capabilities and enhanced user experience improvements:
7
+ Version 7.1 adds comprehensive compressed archive viewing capabilities:
8
8
 
9
- - **Remote SSH/SFTP browsing** with seamless navigation and file operations
10
- - **SSH shell integration** for interactive remote sessions
11
- - **Enhanced help system** with color-coded sections and aligned formatting
12
- - **SSH connection comments** for better organization (user@host # comment)
13
- - **Comprehensive undo system** for file operations with safety checks
14
- - **Performance optimizations** and code cleanup for improved stability
9
+ - **Archive preview** for .zip, .tar, .gz, .tgz, .bz2, .tbz, .tbz2, .xz, .txz, .rar, .7z files
10
+ - **Smart fallback** for compressed archives vs standalone compressed files
11
+ - **Seamless integration** with existing preview system
12
+
13
+ Version 6.0 introduced comprehensive remote directory browsing capabilities and enhanced user experience improvements including remote SSH/SFTP browsing, SSH shell integration, enhanced help system, and comprehensive undo system.
15
14
 
16
15
  Version 5 was a complete rewrite using [rcurses](https://github.com/isene/rcurses) as the underlying library, providing stability, higher quality code and extensive features including optional trash bin, advanced OpenAI integrations, plugin architectures for keybindings, user defined features and file viewers.
17
16
 
@@ -168,11 +167,14 @@ MS xlsx | `ssconvert` | `apt install gn
168
167
  MS doc/xls/ppt | `catdoc`, `xls2csv` and `catppt` | `apt install catdoc`
169
168
  Images | `w3m` and `ImageMagick` | `apt install w3m imagemagick`
170
169
  Video (thumbnails) | `ffmpegthumbnailer` | `apt install ffmpegthumbnailer`
170
+ Compressed archives | `unzip`, `tar`, `gzip`, `bzip2`, `xz` | `apt install unzip tar gzip bzip2 xz-utils`
171
+ RAR archives | `unrar` | `apt install unrar`
172
+ 7-Zip archives | `7z` | `apt install p7zip-full`
171
173
 
172
174
  Install rtfm from scratch with all of the above on Ubuntu:
173
175
  ```
174
176
  sudo apt update
175
- sudo apt install ruby-full git libncurses-dev x11-utils xdotool bat pandoc poppler-utils odt2txt docx2txt unzip gnumeric catdoc w3m imagemagick ffmpegthumbnailer
177
+ sudo apt install ruby-full git libncurses-dev x11-utils xdotool bat pandoc poppler-utils odt2txt docx2txt unzip gnumeric catdoc w3m imagemagick ffmpegthumbnailer tar gzip bzip2 xz-utils unrar p7zip-full
176
178
  sudo gem install rcurses
177
179
  git clone https://github.com/isene/RTFM
178
180
  cd RTFM
@@ -181,7 +183,7 @@ sudo cp rtfm /usr/bin/
181
183
  Or with a simpler gem install:
182
184
  ```
183
185
  sudo apt update
184
- sudo apt install ruby-full git libncurses-dev x11-utils xdotool bat pandoc poppler-utils odt2txt docx2txt unzip gnumeric catdoc w3m imagemagick ffmpegthumbnailer
186
+ sudo apt install ruby-full git libncurses-dev x11-utils xdotool bat pandoc poppler-utils odt2txt docx2txt unzip gnumeric catdoc w3m imagemagick ffmpegthumbnailer tar gzip bzip2 xz-utils unrar p7zip-full
185
187
  gem install rtfm-filemanager
186
188
  ```
187
189
 
data/bin/rtfm CHANGED
@@ -839,6 +839,14 @@ preview_specs = {
839
839
  'doc' => "catdoc @s 2>/dev/null",
840
840
  'xls' => "xls2csv @s 2>/dev/null",
841
841
  'ppt' => "catppt @s 2>/dev/null",
842
+ # compressed archives
843
+ 'zip' => "unzip -l @s",
844
+ 'tar' => "tar -tvf @s",
845
+ 'gz, tgz' => "tar -tzvf @s 2>/dev/null || gunzip -l @s 2>/dev/null",
846
+ 'bz2, tbz, tbz2' => "tar -tjvf @s 2>/dev/null || bzip2 -l @s 2>/dev/null",
847
+ 'xz, txz' => "tar -tJvf @s 2>/dev/null || xz -l @s 2>/dev/null",
848
+ 'rar' => "unrar l @s 2>/dev/null",
849
+ '7z' => "7z l @s 2>/dev/null",
842
850
  # images ⇒ nil => call showimage
843
851
  'png, jpg, jpeg, bmp, gif, webp, tif, tiff, svg' => nil,
844
852
  # video ⇒ nil, but detected via pattern below
@@ -1474,7 +1482,8 @@ end
1474
1482
 
1475
1483
  def toggle_long # {{{3
1476
1484
  @lslong = @lslong.empty? ? (@is_macos_bsd ? '-lhT' : '-lh --time-style=long-iso') : ''
1477
- @pR.update = @pB.update = true
1485
+ @pB.say(@lslong.empty? ? ' Long info: Off' : ' Long info: On')
1486
+ @pL.update = @pR.update = true
1478
1487
  end
1479
1488
 
1480
1489
  def toggle_order # {{{3
@@ -4302,30 +4311,34 @@ def ruby_debug # {{{3
4302
4311
  end
4303
4312
 
4304
4313
  # GENERIC FUNCTIONS {{{1
4305
- def get_cached_dirlist(dir, ls_options) # {{{2
4314
+ def get_cached_dirlist(dir, ls_options, ls_options_with_long = nil) # {{{2
4315
+ # Use ls_options_with_long for display, or fall back to ls_options
4316
+ ls_options_with_long ||= ls_options
4317
+
4306
4318
  # Generate cache key with directory mtime for automatic invalidation
4319
+ # Include ls_options_with_long in cache key so toggling @lslong invalidates cache
4307
4320
  begin
4308
4321
  dir_mtime = File.mtime(dir).to_i
4309
- cache_key = "#{dir}:#{ls_options}:#{dir_mtime}"
4322
+ cache_key = "#{dir}:#{ls_options_with_long}:#{dir_mtime}"
4310
4323
  rescue
4311
4324
  return nil # Can't cache if we can't get mtime
4312
4325
  end
4313
-
4326
+
4314
4327
  # Return cached result if available and fresh
4315
4328
  cached = @dir_cache[cache_key]
4316
4329
  return cached if cached
4317
-
4330
+
4318
4331
  # Clean old cache entries if cache is getting too large
4319
4332
  if @dir_cache_size >= @max_cache_entries
4320
4333
  @dir_cache.clear
4321
4334
  @dir_cache_size = 0
4322
4335
  end
4323
-
4336
+
4324
4337
  # Generate new directory listing
4325
4338
  begin
4326
4339
  purels = command("ls #{Shellwords.escape(dir)} #{ls_options}").pure.split("\n")
4327
4340
  color_opt = @is_macos_bsd ? '-G' : '--color'
4328
- colorls = command("ls #{color_opt} #{Shellwords.escape(dir)} #{ls_options} #{@lslong}").split("\n")
4341
+ colorls = command("ls #{color_opt} #{Shellwords.escape(dir)} #{ls_options_with_long}").split("\n")
4329
4342
 
4330
4343
  result = { purels: purels, colorls: colorls }
4331
4344
  @dir_cache[cache_key] = result
@@ -4490,7 +4503,8 @@ def dirlist(left: true, directory: nil) # LIST DIRECTORIES {{{2
4490
4503
  end
4491
4504
  # Use cached directory listing
4492
4505
  ls_options = "#{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}"
4493
- cached = get_cached_dirlist(dir, ls_options)
4506
+ ls_options_with_long = "#{ls_options} #{@lslong}".strip
4507
+ cached = get_cached_dirlist(dir, ls_options, ls_options_with_long)
4494
4508
 
4495
4509
  if cached
4496
4510
  purels = cached[:purels]
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: 7.0.14
4
+ version: 7.1.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: 2025-09-26 00:00:00.000000000 Z
11
+ date: 2025-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rcurses
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '7.4'
55
55
  description: |-
56
- RTFM v7.0.14: Fixed regex error when using '*' to mark all files with C-T. Now properly converts '*' to '.*' regex pattern.
56
+ RTFM v7.1.1: Fixed 'A' key toggle for long file info display - now properly shows ls -l format with user feedback and correct cache invalidation.
57
57
  A full featured terminal browser with syntax highlighted files, images shown in the terminal, videos thumbnailed, etc. Features include remote SSH/SFTP browsing, interactive SSH shell, comprehensive undo system, bookmarks, and much more. You can bookmark and jump around easily, delete, rename, copy, symlink and move files. RTFM is one of the most feature-packed terminal file managers.
58
58
  email: g@isene.com
59
59
  executables: