rtfm-filemanager 1.3.1 → 1.3.5

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rtfm +69 -18
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d57acc3fd855429b917e9bf15aa39bc49914145422bb04ab0ed1f78d5835f36e
4
- data.tar.gz: 4880805ff17008e773d8e77f88e92a4cab2d0b61ecf6da74f062f147f4551a42
3
+ metadata.gz: 2fdfba59295e424a39605d0501e0df29a7a37d9ad36429adb412d8d13c54c752
4
+ data.tar.gz: 2a5523150436439dbbcabf66a7e9c8505c7ad30c82fd827e2b198ab5f73361e9
5
5
  SHA512:
6
- metadata.gz: d4e7b23944de6af366b41d4b17494cfa679e0889a4e8155bf714540abab128d8bd81af78bc743eaebe89ae36a7bbd22f0702c481abeb913a27c0b249a46657d3
7
- data.tar.gz: 4ad1f7c88a038505e57c5cc07008e0b80d04a7529fbe7ce4b7ac2b8b5b60849609ad155ad2b7b3b7f1a6e3ddda72a4db3ccfe03307649a2f40a0702193ab2584
6
+ metadata.gz: 5e1cf39a6d5e205a7ea226bc8c70d885037077d1ed918450634a8fc9feb179dee05a03f58bcc174609c7419231b2d4df3b1f1b3bd7cb4cc89bd4a01d658124c6
7
+ data.tar.gz: 5a152abd6d7c54de6c116f6ecac690e939cd2d07b28a1e7b9d4261337f72e6b23a833162567ccd6fb6674d5e92882551d9f27e3d7167ac4d61c00d6eb894b492
data/bin/rtfm CHANGED
@@ -23,7 +23,8 @@ BASIC KEYS
23
23
  ? = Show this help text
24
24
  r = Refresh RTFM (recreates all windows. Use on terminal resize or when there is garbage somewhere)
25
25
  R = Reload configuration (~/.rtfm.conf)
26
- W = Write parameters to ~/.rtfm.conf (@lsall, @lslong, @lsorder, @border, @width, @preview, @tagged, @marks)
26
+ W = Write parameters to ~/.rtfm.conf
27
+ (@lsall, @lslong, @lsorder, @lsinvert, @border, @width, @preview, @tagged, @marks)
27
28
  q = Quit
28
29
  Q = QUIT (without writing changes to the config file)
29
30
 
@@ -71,6 +72,7 @@ DIRECTORY VIEWS
71
72
  G = Show git status for current directory
72
73
  H = Do a cryptographic hash of the current directory with subdirs
73
74
  If a previous hash was made, compare and report if there has been any change
75
+ S = Show comprehensive system info (system, CPU, filesystem, latest dmesg messages)
74
76
 
75
77
  RIGHT PANE
76
78
  ENTER = Refresh the right pane
@@ -122,6 +124,7 @@ begin # BASIC SETUP
122
124
  require 'fileutils'
123
125
  require 'io/console'
124
126
  require 'date'
127
+ require 'timeout'
125
128
  require 'curses'
126
129
  include Curses
127
130
 
@@ -273,6 +276,7 @@ def main_getkey # GET KEY FROM USER
273
276
  case chr
274
277
  # BASIC KEYS
275
278
  when '?' # Show helptext in right window
279
+ @w_r.fg = 249
276
280
  w_r_info(@help)
277
281
  @w_b.update = true
278
282
  when 'r' # Refresh all windows
@@ -364,6 +368,7 @@ def main_getkey # GET KEY FROM USER
364
368
  @w_b.update = true
365
369
  when 'M' # Show marks
366
370
  @marks = @marks.sort.to_h
371
+ @w_r.fg = 147
367
372
  marks_info
368
373
  @w_r.update = false
369
374
  @w_b.update = true
@@ -437,6 +442,7 @@ def main_getkey # GET KEY FROM USER
437
442
  @w_r.update = true
438
443
  @w_b.update = true
439
444
  when 'T' # Show tagged list
445
+ @w_r.fg = 196
440
446
  tagged_info
441
447
  @w_r.update = false
442
448
  @w_b.update = true
@@ -521,6 +527,7 @@ def main_getkey # GET KEY FROM USER
521
527
  when 'O' # Show the Ordering in the bottom window (the full ls command)
522
528
  w_b_info(" Full 'ls' command: ls <@s> #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}")
523
529
  when 'G' # Git status for selected item or current dir
530
+ @w_r.fg = 214
524
531
  if File.exist?(".git")
525
532
  w_r_info(`git status 2>/dev/null`)
526
533
  else
@@ -529,6 +536,7 @@ def main_getkey # GET KEY FROM USER
529
536
  @w_r.update = false
530
537
  @w_b.update = true
531
538
  when 'H' # Compare with previous hash status or write hash status if no existing hash
539
+ @w_r.fg = 213
532
540
  hashcmd = "\(find #{Dir.pwd} -type f -print0 | sort -z | xargs -0 sha1sum; find #{Dir.pwd}"\
533
541
  " \\( -type f -o -type d \\) -print0 | sort -z | xargs -0 stat -c '%n %a'\) | sha1sum | cut -c -40"
534
542
  begin
@@ -551,6 +559,25 @@ def main_getkey # GET KEY FROM USER
551
559
  end
552
560
  @w_r.update = true
553
561
  @w_b.update = false
562
+ when 'S' # Show comprehensive system info
563
+ @w_r.pager_cmd = ""
564
+ systext = `uname -o`.chop + " "
565
+ systext += `uname -r`.chop + " "
566
+ systext += `uname -v`.chop + " "
567
+ systext += `uname -p` + "\n"
568
+ systext += `free -h` + "\n"
569
+ systext += "CPUs = " + `nproc`.chop + " "
570
+ cpuinfo = `lscpu`
571
+ systext += cpuinfo[/^.*Model name:\s*(.*)/, 1] + " "
572
+ systext += "Max: " + cpuinfo[/^.*CPU max MHz:\s*(.*)/, 1][/(.*),.*/, 1] + "MHz "
573
+ systext += "Min: " + cpuinfo[/^.*CPU min MHz:\s*(.*)/, 1][/(.*),.*/, 1] + "MHz "
574
+ systext += "\n\n"
575
+ systext += `df -H`
576
+ systext += "\nDMESG:\n"
577
+ systext += `dmesg | tail -10`
578
+ @w_r.fg = 155
579
+ w_r_info(systext)
580
+ @w_r.update = false
554
581
  # RIGHT PANE
555
582
  when 'ENTER' # Refresh right pane
556
583
  @w_r.clr # First clear the window, then clear any previously showing image
@@ -625,7 +652,10 @@ def main_getkey # GET KEY FROM USER
625
652
  @w_r.pager = 0
626
653
  @w_r.pager_more = false
627
654
  end
628
- @w_r.update = true if dir != Dir.pwd
655
+ begin
656
+ @w_r.update = true if dir != Dir.pwd
657
+ rescue
658
+ end
629
659
  end
630
660
  def conf_write
631
661
  if File.exist?(Dir.home+'/.rtfm.conf')
@@ -646,6 +676,8 @@ def conf_write
646
676
  conf += "@lsall = \"#{@lsall}\"\n"
647
677
  conf.sub!(/^@lsorder.*\n/, "")
648
678
  conf += "@lsorder = \"#{@lsorder}\"\n"
679
+ conf.sub!(/^@lsinvert.*\n/, "")
680
+ conf += "@lsinvert = \"#{@lsinvert}\"\n"
649
681
  conf.sub!(/^@width.*\n/, "")
650
682
  conf += "@width = #{@width}\n"
651
683
  conf.sub!(/^@border.*\n/, "")
@@ -924,7 +956,7 @@ def w_r_info(info) # SHOW INFO IN THE RIGHT WINDOW
924
956
  image_show("clear") if @image; @image = false
925
957
  end
926
958
  def marks_info # SHOW MARKS IN RIGHT WINDOW
927
- info = "Marks:\n"
959
+ info = "MARKS:\n"
928
960
  unless @marks.empty?
929
961
  @marks.each do |mark, dir|
930
962
  info += "#{mark} = #{dir}\n"
@@ -935,7 +967,7 @@ def marks_info # SHOW MARKS IN RIGHT WINDOW
935
967
  w_r_info(info)
936
968
  end
937
969
  def tagged_info # SHOW THE LIST OF TAGGED ITEMS IN @w_r
938
- info = "Tagged:\n"
970
+ info = "TAGGED:\n"
939
971
  @tagged.empty? ? info += "(None)" : info += @tagged.join("\n")
940
972
  w_r_info(info)
941
973
  end
@@ -1004,7 +1036,13 @@ def pager_show # SHOW THE CURRENT PAGE CONTENT
1004
1036
  if @w_r.pager_cmd.match(/batcat/)
1005
1037
  syntax_highlight(input)
1006
1038
  else
1007
- @w_r << input
1039
+ if @w_r.fg == nil
1040
+ init_pair(255, 255, 0)
1041
+ @w_r.fg = 255
1042
+ else
1043
+ init_pair(@w_r.fg, @w_r.fg, 0)
1044
+ end
1045
+ @w_r.attron(color_pair(@w_r.fg)) { @w_r << input }
1008
1046
  end
1009
1047
  (@w_r.maxy - @w_r.cury).times {@w_r.deleteln()} # Clear to bottom of window
1010
1048
  pager_add_markers
@@ -1171,17 +1209,19 @@ def w_b_exec(cmd) # EXECUTE COMMAND FROM @W_B
1171
1209
  return
1172
1210
  end
1173
1211
  begin
1174
- begin
1175
- @w_r.pager_cmd = "#{cmd} | batcat -n --color=always 2>/dev/null"
1176
- @w_r.text = `#{@w_r.pager_cmd} 2>/dev/null`
1177
- rescue
1178
- @w_r.text = `#{cmd} 2>/dev/null`
1179
- end
1180
- unless @w_r.text == "" or @w_r.text == nil
1181
- pager_start
1182
- pager_show
1183
- @w_r.update = false
1184
- end
1212
+ status = Timeout::timeout(5) {
1213
+ begin
1214
+ @w_r.pager_cmd = "#{cmd} | batcat -n --color=always 2>/dev/null"
1215
+ @w_r.text = `#{@w_r.pager_cmd} 2>/dev/null`
1216
+ rescue
1217
+ @w_r.text = `#{cmd} 2>/dev/null`
1218
+ end
1219
+ unless @w_r.text == "" or @w_r.text == nil
1220
+ pager_start
1221
+ pager_show
1222
+ @w_r.update = false
1223
+ end
1224
+ }
1185
1225
  rescue
1186
1226
  w_b_info(" Failed to execute command (#{cmd})")
1187
1227
  end
@@ -1224,6 +1264,11 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
1224
1264
  @w_r.update = false
1225
1265
  end
1226
1266
  loop do # INNER, CORE LOOP
1267
+ begin # Jump to home dir if current dir is externally removed
1268
+ Dir.pwd
1269
+ rescue
1270
+ Dir.chdir
1271
+ end
1227
1272
  system("printf \"\033]0;RTFM: #{Dir.pwd}\007\"") # Set Window title to path
1228
1273
  ls_cmd = "ls #{@lsbase} #{@lsall} #{@lsorder} #{@lsinvert} #{@lsuser}" # Get files in current directory
1229
1274
  @files = `#{ls_cmd} 2>/dev/null`.split("\n")
@@ -1260,7 +1305,10 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
1260
1305
  @w_l.setpos(0,0)
1261
1306
  list_dir(true)
1262
1307
  @w_l.refresh
1263
- w_r_show if @w_r.update and @preview
1308
+ if @w_r.update and @preview
1309
+ w_r_show
1310
+ @w_r.fg = 255
1311
+ end
1264
1312
  Curses.curs_set(1) # Clear residual cursor
1265
1313
  Curses.curs_set(0) # ...from editing files
1266
1314
  @tag = false # Clear tag pattern
@@ -1275,7 +1323,10 @@ loop do # OUTER LOOP - CATCHING REFRESHES VIA 'r'
1275
1323
  image_show("clear")
1276
1324
  close_screen
1277
1325
  # If launched via the script "r", return current dir and "r" will cd to that
1278
- File.write(ARGV[0], Dir.pwd) if ARGV[0] and ARGV[0].match(/\/tmp\/tmp/)
1326
+ begin
1327
+ File.write(ARGV[0], Dir.pwd) if ARGV[0] and ARGV[0].match(/\/tmp\/tmp/)
1328
+ rescue
1329
+ end
1279
1330
  end
1280
1331
  end
1281
1332
 
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.3.1
4
+ version: 1.3.5
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-10-20 00:00:00.000000000 Z
11
+ date: 2021-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -33,8 +33,8 @@ 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.3.1: Added sort order to be written to .rtfm.conf via the
37
- W key.'
36
+ other features. New in 1.3.5: Sexify by color some of the info shown in right pane
37
+ (like Help, Tagged, Marks and System Info)'
38
38
  email: g@isene.com
39
39
  executables:
40
40
  - rtfm