rtfm-filemanager 1.5.7 → 1.6.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/bin/rtfm +54 -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: eec58d3f67b9f90b410e19feb4c20b371b3c88848e8ae0f28714334d44073d0b
|
4
|
+
data.tar.gz: 8a8d00641beaf0ca58bc86d9f9a3f7b4cbde9e2a933db4b0475b363d1b01b82e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 973f0a7d88305a6a85b66e60a84dcb711b797dbc21f368b3291b8b280523cc907a75ab849bc1a3911092412df83c0fe73c872d34135f10a4a1d3e8885c39ea17
|
7
|
+
data.tar.gz: 4ab826f74b772840961507f3a6ab401e142c6eaa629016acecedf0efb87418187f34cb6153c7fd9c028614a321ce6b225ef7652e0a11da72246a7e8725e62064
|
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
|
@@ -564,11 +574,22 @@ def main_getkey # GET KEY FROM USER
|
|
564
574
|
when 'S' # Show comprehensive system info
|
565
575
|
begin
|
566
576
|
@w_r.pager_cmd = ""
|
567
|
-
uname = `uname -o`.
|
568
|
-
uname += `uname -r`.
|
569
|
-
uname += `uname -v`.
|
570
|
-
uname += `uname -p
|
577
|
+
uname = `uname -o`.chomp + " "
|
578
|
+
uname += `uname -r`.chomp + " "
|
579
|
+
uname += `uname -v`.chomp + " "
|
580
|
+
uname += `uname -p`.chomp + " "
|
581
|
+
uname += `awk -F '"' '/PRETTY/ {print $2}' /etc/os-release` + "\n"
|
571
582
|
text = [[253, 1, uname]]
|
583
|
+
system = "Shell & Terminal: " + `echo $SHELL`.sub(/.*\//, '').chomp + ", " + `echo $TERM`.chomp + " "
|
584
|
+
packages = `pacman -Q | wc -l`.chomp
|
585
|
+
packages = `dpkg-query -l | grep -c '^.i'`.chomp if packages == "0"
|
586
|
+
packages = "Unrecognized" if packages == "0"
|
587
|
+
system += "Packages: " + packages + "\n"
|
588
|
+
system += "Desktop: " + `awk '/^DesktopNames/' /usr/share/xsessions/* | sed 's/DesktopNames=//g' | \\
|
589
|
+
sed 's/\\;/\\n/g' | sed '/^$/d' | sort -u | sed ':a;N;$!ba;s/\\n/, /g'`.chomp + "/"
|
590
|
+
system += `grep 'gtk-theme-name' ~/.config/gtk-3.0/* | sed 's/gtk-theme-name=//g' | \\
|
591
|
+
sed 's/-/ /g'`.sub(/.*:/, '') + "\n"
|
592
|
+
text += [[251, 0, system]]
|
572
593
|
cpu = "CPUs = " + `nproc`.chop + " "
|
573
594
|
cpuinfo = `lscpu`
|
574
595
|
cpu += cpuinfo[/^.*Model name:\s*(.*)/, 1] + " "
|
@@ -594,7 +615,7 @@ def main_getkey # GET KEY FROM USER
|
|
594
615
|
image_show("clear") if @image; @image = false
|
595
616
|
@w_r.update = true
|
596
617
|
@w_b.update = true
|
597
|
-
when 'TAB' # Start paging
|
618
|
+
when 'TAB' # Start paging/Down one page
|
598
619
|
if @w_r.pager == 1 and @w_r.pager_cmd != ""
|
599
620
|
@w_r.text = `#{@w_r.pager_cmd} 2>/dev/null`
|
600
621
|
end
|
@@ -627,7 +648,7 @@ def main_getkey # GET KEY FROM USER
|
|
627
648
|
@index = m[0] unless m == []
|
628
649
|
@index = 0 if @searched == ""
|
629
650
|
@w_r.update = true
|
630
|
-
when 'n'
|
651
|
+
when 'n' # Jump to next occurence of search (after '/')
|
631
652
|
l = `ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}`.split
|
632
653
|
m = l.each_index.select{|n| l[n] =~ /#{@searched}/}
|
633
654
|
i = m.find { |n| n > @index }
|
@@ -637,7 +658,7 @@ def main_getkey # GET KEY FROM USER
|
|
637
658
|
@index = i
|
638
659
|
end
|
639
660
|
@w_r.update = true
|
640
|
-
when 'N'
|
661
|
+
when 'N' # Jump to previous occurence of search (after '/')
|
641
662
|
l = `ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}`.split
|
642
663
|
m = l.each_index.select{|n| l[n] =~ /#{@searched}/}.reverse
|
643
664
|
i = m.find { |n| n < @index }
|
@@ -654,7 +675,7 @@ def main_getkey # GET KEY FROM USER
|
|
654
675
|
when ';' # Show command history
|
655
676
|
w_r_info("Command history (latest on top):\n\n" + @history.join("\n"))
|
656
677
|
@w_b.update = true
|
657
|
-
when 'y', 'Y'
|
678
|
+
when 'y', 'Y' # Copy path of selected item
|
658
679
|
if @selected == nil
|
659
680
|
w_b_info(" No selected item path to copy")
|
660
681
|
else
|
@@ -1279,6 +1300,7 @@ def w_b_exec(cmd) # EXECUTE COMMAND FROM @W_B
|
|
1279
1300
|
pager_show
|
1280
1301
|
@w_r.update = false
|
1281
1302
|
end
|
1303
|
+
@change_tag = true
|
1282
1304
|
}
|
1283
1305
|
rescue
|
1284
1306
|
w_b_info(" Failed to execute command (#{cmd})")
|
@@ -1312,9 +1334,7 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1312
1334
|
@w_t.fg, @w_t.bg = 232, 249
|
1313
1335
|
@w_t.attr = Curses::A_BOLD
|
1314
1336
|
@w_b.fg, @w_b.bg = 250, 238
|
1315
|
-
@w_t.update = true
|
1316
1337
|
@w_b.update = true
|
1317
|
-
@w_l.update = true
|
1318
1338
|
@w_r.update = true
|
1319
1339
|
@w_r.pager = 0
|
1320
1340
|
@w_r.pager_more = false
|
@@ -1324,13 +1344,14 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1324
1344
|
tagged_info
|
1325
1345
|
@w_r.update = false
|
1326
1346
|
end
|
1347
|
+
@change = true
|
1348
|
+
@change_tag = true
|
1327
1349
|
loop do # INNER, CORE LOOP
|
1328
1350
|
begin # Jump to home dir if current dir is externally removed
|
1329
1351
|
Dir.pwd
|
1330
1352
|
rescue
|
1331
1353
|
Dir.chdir
|
1332
1354
|
end
|
1333
|
-
system("printf \"\033]0;RTFM: #{Dir.pwd}\007\"") # Set Window title to path
|
1334
1355
|
ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}" # Get files in current directory
|
1335
1356
|
@files = `#{ls_cmd} 2>/dev/null`.split("\n")
|
1336
1357
|
ls_cmd += %q[ -lhgG --time-style="long-iso" | awk '{printf "%s%12s%6s%6s%5s", $1,$4,$5,$3,$2 "\n"}']
|
@@ -1350,28 +1371,33 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
|
|
1350
1371
|
@index = @files.index(@selected)
|
1351
1372
|
@orderchange = false
|
1352
1373
|
end
|
1353
|
-
@index
|
1354
|
-
@index
|
1355
|
-
@min_index
|
1356
|
-
@max_index
|
1357
|
-
@index
|
1358
|
-
@index
|
1359
|
-
@selected
|
1360
|
-
|
1361
|
-
#
|
1362
|
-
|
1374
|
+
@index = @files.index(@selected) if @lsall != lsall_old # Change in showing all items must be handled
|
1375
|
+
@index = index_old if @files.index(@selected) == nil # If item no longer is shown
|
1376
|
+
@min_index = 0
|
1377
|
+
@max_index = @files.size - 1
|
1378
|
+
@index = @max_index if @index > @max_index # If deleted many items
|
1379
|
+
@index = 0 if @index < 0
|
1380
|
+
@selected = @files[@index] # Get text of selected item
|
1381
|
+
sel_old = @selected_safe
|
1382
|
+
@selected_safe = "\"#{@selected}\"" # Make it safe for commands
|
1383
|
+
@selected_safe == sel_old ? @change = false : @change = true
|
1384
|
+
@change = true if @change_tag; @change_tag = false
|
1385
|
+
if @change
|
1386
|
+
system("printf \"\033]0;RTFM: #{Dir.pwd}\007\"") # Set Window title to path
|
1387
|
+
# Top window (info line)
|
1388
|
+
w_t_info
|
1389
|
+
@w_l.setpos(0,0)
|
1390
|
+
list_dir(true)
|
1391
|
+
@w_l.refresh
|
1392
|
+
end
|
1363
1393
|
# Bottom window (command line) Before @w_r to avoid image dropping out on startup
|
1364
1394
|
w_b_info(nil) if @w_b.update
|
1365
1395
|
# Left and right windows (browser & content viewer)
|
1366
|
-
@w_l.setpos(0,0)
|
1367
|
-
list_dir(true)
|
1368
|
-
@w_l.refresh
|
1369
1396
|
if @w_r.update and @preview
|
1370
1397
|
w_r_show
|
1371
1398
|
@w_r.fg = 255
|
1372
1399
|
end
|
1373
|
-
Curses.curs_set(1) # Clear residual cursor
|
1374
|
-
Curses.curs_set(0) # ...from editing files
|
1400
|
+
Curses.curs_set(1); Curses.curs_set(0) # Clear residual cursor from editing files
|
1375
1401
|
@tag = false # Clear tag pattern
|
1376
1402
|
lsall_old = @lsall
|
1377
1403
|
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.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: 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
|
-
true.'
|
36
|
+
other features. New in 1.6.1: Minor bug fixes.'
|
38
37
|
email: g@isene.com
|
39
38
|
executables:
|
40
39
|
- rtfm
|