rtfm-filemanager 1.5.8 → 1.6.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/bin/rtfm +55 -28
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9025b9871da578c238a2c28b3c9aa7d55ffe8d0065f5002c110c7f446dbfe3f
|
4
|
+
data.tar.gz: a817a49d43338f079a536a2e23eb1a35ce80331b11149b29c6c1afc1ac5e7fc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb32e4ecd39a4bb90f7c6aa43a300f4c81d6c743826eaf0f50aa7e65ce5dc34d5bd01b728156cc6a74710294b6a4e8c23feb1f4d4d9aa4e33092498a1f409333
|
7
|
+
data.tar.gz: 4ab0e07d49e807858f1adb2c93865f55b6199c6974c35490f7d457ef12dc278b0435e57f1196a3beb4b60a24fcd3d581ad2e28227b8606380e1a3ec25170b65c
|
data/bin/rtfm
CHANGED
@@ -242,7 +242,7 @@ def getchr # PROCESS KEY PRESSES
|
|
242
242
|
# Note: Curses.getch blanks out @w_t
|
243
243
|
# @w_l.getch makes Curses::KEY_DOWN etc not work
|
244
244
|
# Therefore resorting to the generic method
|
245
|
-
c = STDIN.getch(min: 0, time:
|
245
|
+
c = STDIN.getch(min: 0, time: 1)
|
246
246
|
case c
|
247
247
|
when "\e" # ANSI escape sequences
|
248
248
|
case $stdin.getc
|
@@ -324,6 +324,7 @@ def main_getkey # GET KEY FROM USER
|
|
324
324
|
@directory[Dir.pwd] = @selected # Store this directory before leaving
|
325
325
|
@marks["'"] = Dir.pwd
|
326
326
|
open_selected()
|
327
|
+
@change_tag = true
|
327
328
|
@w_r.update = true
|
328
329
|
@w_b.update = true
|
329
330
|
when 'x' # Force open with file opener (used to open HTML files in browser)
|
@@ -331,6 +332,7 @@ def main_getkey # GET KEY FROM USER
|
|
331
332
|
@directory[Dir.pwd] = @selected # Store this directory before leaving
|
332
333
|
@marks["'"] = Dir.pwd
|
333
334
|
open_selected(true)
|
335
|
+
@change_tag = true
|
334
336
|
@w_r.update = true
|
335
337
|
@w_b.update = true
|
336
338
|
when 'PgDOWN'
|
@@ -401,7 +403,10 @@ def main_getkey # GET KEY FROM USER
|
|
401
403
|
@directory[Dir.pwd] = @selected # Store this directory before leaving
|
402
404
|
@marks["'"] = Dir.pwd
|
403
405
|
if File.symlink?(@selected)
|
404
|
-
|
406
|
+
begin
|
407
|
+
Dir.chdir(File.dirname(File.readlink(@selected)))
|
408
|
+
rescue
|
409
|
+
end
|
405
410
|
end
|
406
411
|
@w_b.update = true
|
407
412
|
when 'g' # Run 'grep' in the current directory
|
@@ -458,14 +463,17 @@ def main_getkey # GET KEY FROM USER
|
|
458
463
|
copy_move_link("copy")
|
459
464
|
@w_r.update = true
|
460
465
|
@w_b.update = true
|
466
|
+
@change_tag = true
|
461
467
|
when 'P' # Move tagged items here
|
462
468
|
copy_move_link("move")
|
463
469
|
@w_r.update = true
|
464
470
|
@w_b.update = true
|
471
|
+
@change_tag = true
|
465
472
|
when 's' # Create symlink to tagged items here
|
466
473
|
copy_move_link("link")
|
467
474
|
@w_r.update = true
|
468
475
|
@w_b.update = true
|
476
|
+
@change_tag = true
|
469
477
|
when 'd' # Delete items tagged and @selected
|
470
478
|
tagged_info
|
471
479
|
w_b_info(" Delete selected and tagged? (press 'd' again to delete)")
|
@@ -515,6 +523,7 @@ def main_getkey # GET KEY FROM USER
|
|
515
523
|
end
|
516
524
|
@w_r.update = true
|
517
525
|
@orderchange = true
|
526
|
+
@change_tag = true
|
518
527
|
when 'i' # Invert the order/sorting of directory views
|
519
528
|
case @lsinvert
|
520
529
|
when ""
|
@@ -526,6 +535,7 @@ def main_getkey # GET KEY FROM USER
|
|
526
535
|
end
|
527
536
|
@w_r.update = true
|
528
537
|
@orderchange = true
|
538
|
+
@change_tag = true
|
529
539
|
when 'O' # Show the Ordering in the bottom window (the full ls command)
|
530
540
|
w_b_info(" Full 'ls' command: ls <@s> #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}")
|
531
541
|
when 'G' # Git status for selected item or current dir
|
@@ -563,12 +573,24 @@ def main_getkey # GET KEY FROM USER
|
|
563
573
|
@w_b.update = false
|
564
574
|
when 'S' # Show comprehensive system info
|
565
575
|
begin
|
576
|
+
@w_r.clr
|
566
577
|
@w_r.pager_cmd = ""
|
567
|
-
uname = `uname -o`.
|
568
|
-
uname += `uname -r`.
|
569
|
-
uname += `uname -v`.
|
570
|
-
uname += `uname -p
|
578
|
+
uname = `uname -o`.chomp + " "
|
579
|
+
uname += `uname -r`.chomp + " "
|
580
|
+
uname += `uname -v`.chomp + " "
|
581
|
+
uname += `uname -p`.chomp + " "
|
582
|
+
uname += `awk -F '"' '/PRETTY/ {print $2}' /etc/os-release` + "\n"
|
571
583
|
text = [[253, 1, uname]]
|
584
|
+
system = "Shell & Terminal: " + `echo $SHELL`.sub(/.*\//, '').chomp + ", " + `echo $TERM`.chomp + " "
|
585
|
+
packages = `pacman -Q 2>/dev/null | wc -l`.chomp
|
586
|
+
packages = `dpkg-query -l 2>/dev/null | grep -c '^.i'`.chomp if packages == "0"
|
587
|
+
packages = "Unrecognized" if packages == "0"
|
588
|
+
system += "Packages: " + packages + "\n"
|
589
|
+
system += "Desktop: " + `awk '/^DesktopNames/' /usr/share/xsessions/* | sed 's/DesktopNames=//g' | \\
|
590
|
+
sed 's/\\;/\\n/g' | sed '/^$/d' | sort -u | sed ':a;N;$!ba;s/\\n/, /g'`.chomp + "/"
|
591
|
+
system += `grep 'gtk-theme-name' ~/.config/gtk-3.0/* | sed 's/gtk-theme-name=//g' | \\
|
592
|
+
sed 's/-/ /g'`.sub(/.*:/, '') + "\n"
|
593
|
+
text += [[251, 0, system]]
|
572
594
|
cpu = "CPUs = " + `nproc`.chop + " "
|
573
595
|
cpuinfo = `lscpu`
|
574
596
|
cpu += cpuinfo[/^.*Model name:\s*(.*)/, 1] + " "
|
@@ -594,7 +616,7 @@ def main_getkey # GET KEY FROM USER
|
|
594
616
|
image_show("clear") if @image; @image = false
|
595
617
|
@w_r.update = true
|
596
618
|
@w_b.update = true
|
597
|
-
when 'TAB' # Start paging
|
619
|
+
when 'TAB' # Start paging/Down one page
|
598
620
|
if @w_r.pager == 1 and @w_r.pager_cmd != ""
|
599
621
|
@w_r.text = `#{@w_r.pager_cmd} 2>/dev/null`
|
600
622
|
end
|
@@ -627,7 +649,7 @@ def main_getkey # GET KEY FROM USER
|
|
627
649
|
@index = m[0] unless m == []
|
628
650
|
@index = 0 if @searched == ""
|
629
651
|
@w_r.update = true
|
630
|
-
when 'n'
|
652
|
+
when 'n' # Jump to next occurence of search (after '/')
|
631
653
|
l = `ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}`.split
|
632
654
|
m = l.each_index.select{|n| l[n] =~ /#{@searched}/}
|
633
655
|
i = m.find { |n| n > @index }
|
@@ -637,7 +659,7 @@ def main_getkey # GET KEY FROM USER
|
|
637
659
|
@index = i
|
638
660
|
end
|
639
661
|
@w_r.update = true
|
640
|
-
when 'N'
|
662
|
+
when 'N' # Jump to previous occurence of search (after '/')
|
641
663
|
l = `ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}`.split
|
642
664
|
m = l.each_index.select{|n| l[n] =~ /#{@searched}/}.reverse
|
643
665
|
i = m.find { |n| n < @index }
|
@@ -654,7 +676,7 @@ def main_getkey # GET KEY FROM USER
|
|
654
676
|
when ';' # Show command history
|
655
677
|
w_r_info("Command history (latest on top):\n\n" + @history.join("\n"))
|
656
678
|
@w_b.update = true
|
657
|
-
when 'y', 'Y'
|
679
|
+
when 'y', 'Y' # Copy path of selected item
|
658
680
|
if @selected == nil
|
659
681
|
w_b_info(" No selected item path to copy")
|
660
682
|
else
|
@@ -1279,6 +1301,7 @@ def w_b_exec(cmd) # EXECUTE COMMAND FROM @W_B
|
|
1279
1301
|
pager_show
|
1280
1302
|
@w_r.update = false
|
1281
1303
|
end
|
1304
|
+
@change_tag = true
|
1282
1305
|
}
|
1283
1306
|
rescue
|
1284
1307
|
w_b_info(" Failed to execute command (#{cmd})")
|
@@ -1312,9 +1335,7 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1312
1335
|
@w_t.fg, @w_t.bg = 232, 249
|
1313
1336
|
@w_t.attr = Curses::A_BOLD
|
1314
1337
|
@w_b.fg, @w_b.bg = 250, 238
|
1315
|
-
@w_t.update = true
|
1316
1338
|
@w_b.update = true
|
1317
|
-
@w_l.update = true
|
1318
1339
|
@w_r.update = true
|
1319
1340
|
@w_r.pager = 0
|
1320
1341
|
@w_r.pager_more = false
|
@@ -1324,13 +1345,14 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1324
1345
|
tagged_info
|
1325
1346
|
@w_r.update = false
|
1326
1347
|
end
|
1348
|
+
@change = true
|
1349
|
+
@change_tag = true
|
1327
1350
|
loop do # INNER, CORE LOOP
|
1328
1351
|
begin # Jump to home dir if current dir is externally removed
|
1329
1352
|
Dir.pwd
|
1330
1353
|
rescue
|
1331
1354
|
Dir.chdir
|
1332
1355
|
end
|
1333
|
-
system("printf \"\033]0;RTFM: #{Dir.pwd}\007\"") # Set Window title to path
|
1334
1356
|
ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}" # Get files in current directory
|
1335
1357
|
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
1336
1358
|
ls_cmd += %q[ -lhgG --time-style="long-iso" | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\n"}']
|
@@ -1350,28 +1372,33 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1350
1372
|
@index = @files.index(@selected)
|
1351
1373
|
@orderchange = false
|
1352
1374
|
end
|
1353
|
-
@index
|
1354
|
-
@index
|
1355
|
-
@min_index
|
1356
|
-
@max_index
|
1357
|
-
@index
|
1358
|
-
@index
|
1359
|
-
@selected
|
1360
|
-
|
1361
|
-
#
|
1362
|
-
|
1375
|
+
@index = @files.index(@selected) if @lsall != lsall_old # Change in showing all items must be handled
|
1376
|
+
@index = index_old if @files.index(@selected) == nil # If item no longer is shown
|
1377
|
+
@min_index = 0
|
1378
|
+
@max_index = @files.size - 1
|
1379
|
+
@index = @max_index if @index > @max_index # If deleted many items
|
1380
|
+
@index = 0 if @index < 0
|
1381
|
+
@selected = @files[@index] # Get text of selected item
|
1382
|
+
sel_old = @selected_safe
|
1383
|
+
@selected_safe = "\"#{@selected}\"" # Make it safe for commands
|
1384
|
+
@selected_safe == sel_old ? @change = false : @change = true
|
1385
|
+
@change = true if @change_tag; @change_tag = false
|
1386
|
+
if @change
|
1387
|
+
system("printf \"\033]0;RTFM: #{Dir.pwd}\007\"") # Set Window title to path
|
1388
|
+
# Top window (info line)
|
1389
|
+
w_t_info
|
1390
|
+
@w_l.setpos(0,0)
|
1391
|
+
list_dir(true)
|
1392
|
+
@w_l.refresh
|
1393
|
+
end
|
1363
1394
|
# Bottom window (command line) Before @w_r to avoid image dropping out on startup
|
1364
1395
|
w_b_info(nil) if @w_b.update
|
1365
1396
|
# Left and right windows (browser & content viewer)
|
1366
|
-
@w_l.setpos(0,0)
|
1367
|
-
list_dir(true)
|
1368
|
-
@w_l.refresh
|
1369
1397
|
if @w_r.update and @preview
|
1370
1398
|
w_r_show
|
1371
1399
|
@w_r.fg = 255
|
1372
1400
|
end
|
1373
|
-
Curses.curs_set(1) # Clear residual cursor
|
1374
|
-
Curses.curs_set(0) # ...from editing files
|
1401
|
+
Curses.curs_set(1); Curses.curs_set(0) # Clear residual cursor from editing files
|
1375
1402
|
@tag = false # Clear tag pattern
|
1376
1403
|
lsall_old = @lsall
|
1377
1404
|
main_getkey # Get key from user
|
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: 1.
|
4
|
+
version: 1.6.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: 2021-11-
|
11
|
+
date: 2021-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -33,8 +33,7 @@ dependencies:
|
|
33
33
|
description: 'A full featured terminal browser with syntax highlighted files, images
|
34
34
|
shown in the terminal, videos thumbnailed, etc. You can bookmark and jump around
|
35
35
|
easily, delete, rename, copy, symlink and move files. RTFM has a a wide range of
|
36
|
-
other features. New in 1.
|
37
|
-
changes.'
|
36
|
+
other features. New in 1.6.2: Bug fix in system info.'
|
38
37
|
email: g@isene.com
|
39
38
|
executables:
|
40
39
|
- rtfm
|