termclock 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97954b7ee94050e29c1d43619a147275d89a731d8e317e84af0afa59e6958961
4
- data.tar.gz: f5b29cef16329eb7db1442a0073b32cdaef8563fa21abc9dca4d36de28925441
3
+ metadata.gz: 3fcea2cc01afe31bc00a62ed5438657612e909bb4db2510b56a2371a5fa4ecd1
4
+ data.tar.gz: 662d05beb745b1e3fc046f6ddfc2b53f3781dd8dc06efd74228321390bdc5d1f
5
5
  SHA512:
6
- metadata.gz: e707c28bb571a7f6fe4655d0b9f24217361b64ff2489ee0f23d1475ecda543d85186bd6b8b476ae7247d088428baa2f424b4d0fafa507d1057bced4f626e708d
7
- data.tar.gz: bdb1086fbb90979c98084f0fdcd8c4a0cbdf4ff689dd623d39c61079166a29525e2c07881b080838c3b0535a1c98c8db966f987253a6e9e14837f0700120c274
6
+ metadata.gz: d57447038d164806c56090fd13716100612bc04d946fd5be2cdefc7ee32d683ff06171af1ef33df73541d207b9244c6e47e93a4b674b82b40165b78d2ca114e0
7
+ data.tar.gz: e9044dd6e002d119c260119ac2e74d2ed770371448eca3100d88f147f7c0246b6f8cdd075736058f72dc843ae5ca78d7d10b64f834c86ba5e56d313b447aac9f
data/exe/termclock CHANGED
@@ -14,11 +14,12 @@ def version(logo_colour)
14
14
  _v[vl_2..-1].gradient(logo_colour[1], logo_colour[2], underline: true, bold: true)
15
15
  end
16
16
 
17
- logo_colour = [
18
- %w(ff0 f55 55f),
19
- %w(fa0 f5a 55f),
20
- %w(3eb 55f 55f),
21
- ].sample.map(&Termclock.method(:hex2rgb))
17
+ unless STDOUT.tty?
18
+ IO.undef_method(:winsize)
19
+ IO.define_method(:winsize) { [100, 100] }
20
+ end
21
+
22
+ LOGO_COLOUR = %w(ff0 f55 55f).map(&Termclock.method(:hex2rgb))
22
23
 
23
24
  if ARGV.any? { |x| x[/\A\-(\-help|h)\z/] }
24
25
  puts <<~EOF
@@ -36,36 +37,42 @@ if ARGV.any? { |x| x[/\A\-(\-help|h)\z/] }
36
37
  --character=|char=\t\tDraws specified character
37
38
  --clean\t\t\t\tJust run the clean bare clock
38
39
  --colour=|-c=\t\t\tSpecify hex colour (4 colours)
39
- \t\t\t\t[ with or without # ]
40
- --text-colour|-tc\t\tSpecify text colour (2 colours)
41
- \t\t\t\t[ with or without # ]
40
+ --text-colour=|-tc=\t\tSpecify text colour (2 colours)
41
+
42
+ \u2B22 \e[3mColours has to be hex, 3 or 6 characters with or
43
+ without the leading # in front\e[0m
42
44
 
43
45
  \e[1m3. Information:\e[0m
44
46
  --no-date|-nd\t\t\tShows no date
45
47
  --no-message|-nm\t\tShows no messages
46
48
  --no-sysinfo|-ni\t\tShows no system info
47
- --refresh|r\t\t\tSpecify delay or refresh time
49
+ --refresh=|r=\t\t\tSpecify delay or refresh time
48
50
  --no-logo|-nl\t\t\tDon't show the logo at the bottom
49
51
 
50
- \e[1m4. Formats:\e[0m
52
+ \e[1m4. Antiflicker:\e[0m
53
+ --antiflicker|-af\t\tDon't flicker terminal
54
+
55
+ \u2B22 \e[3mIf refresh time is low or terminal is slow, use this option\e[0m
56
+
57
+ \e[1m5. Formats:\e[0m
51
58
  --date-format=|-df=\t\tSpecify the date format
52
59
  --time-format=|-tf=\t\tSpecify the time format
53
60
 
54
61
  Usually the format looks like this:
55
62
  %H:%M:%S:%2N or %d %B, %Y
56
63
 
57
- \e[3mRun `date --help` to know more formats\e[0m
64
+ \u2B22 \e[3mRun `date --help` to know more formats\e[0m
58
65
 
59
66
  Supported characters are 0 - 9, a - z, /, \\, !, %, and |.
60
67
 
61
- #{version(logo_colour)}
68
+ #{version(LOGO_COLOUR)}
62
69
  EOF
63
70
 
64
71
  exit 0
65
72
  end
66
73
 
67
74
  if ARGV.any? { |x| x[/\A\-(-version|v)\z/] }
68
- puts version(logo_colour)
75
+ puts version(LOGO_COLOUR)
69
76
  exit 0
70
77
  end
71
78
 
@@ -106,6 +113,7 @@ begin
106
113
 
107
114
  bold = ARGV.any? { |x| x[/\A\-(\-bold|b)\z/] }
108
115
  italic = ARGV.any? { |x| x[/\A\-(\-italic|i)\z/] }
116
+ anti_flicker = ARGV.any? { |x| x[/\A\-(\-antiflicker|af)\z/] }
109
117
 
110
118
  no_print_info = ARGV.any? { |x| x[/\A\-(\-no\-sysinfo|ni)\z/] }
111
119
  no_logo = ARGV.any? { |x| x[/\A\-(\-no\-logo|nl)\z/] }
@@ -137,10 +145,13 @@ begin
137
145
  no_logo: no_logo,
138
146
  time_format: time_format,
139
147
  date_format: date_format,
140
- logo_colour: logo_colour
148
+ logo_colour: LOGO_COLOUR,
149
+ anti_flicker: anti_flicker
141
150
  )
142
151
  rescue Interrupt, SignalException
143
152
  print "\e[H\e[2J\e[3J"
153
+ # rescue Errno::ENOTTY
154
+ # abort "This should be run on a TTY! Also please don't pipe or redirect the output!"
144
155
  ensure
145
156
  print "\e[?25h"
146
157
  end
data/lib/termclock.rb CHANGED
@@ -3,7 +3,9 @@ require 'io/console'
3
3
  require_relative "termclock/version"
4
4
 
5
5
  module Termclock
6
+ GC_COMPACT_TIME = 7200
6
7
  CLEAR = "\e[H\e[2J\e[3J".freeze
8
+ ANTIFLICKER = "\e[J\e[1;1H".freeze
7
9
  NEWLINE = ?\n.freeze
8
10
  SPACE = ?\s.freeze
9
11
  TAB = ?\t.freeze
@@ -9,9 +9,12 @@ module Termclock
9
9
  time_format: "%H %M %S %2N",
10
10
  date_format: '%a, %d %B %Y',
11
11
  no_logo: false,
12
+ anti_flicker: false,
12
13
  logo_colour: [Termclock.hex2rgb('ff0'), Termclock.hex2rgb('f55'), Termclock.hex2rgb('55f')]
13
14
  )
14
15
 
16
+ clear_character = anti_flicker ? ANTIFLICKER : CLEAR
17
+
15
18
  generate = proc do |start, stop, n = 5|
16
19
  r_op = r_val = nil
17
20
  ary = []
@@ -31,8 +34,7 @@ module Termclock
31
34
  ary
32
35
  end
33
36
 
34
- gc_compact, gc_compacted = GC.respond_to?(:compact), Time.now.to_i + 7200
35
- print CLEAR
37
+ gc_compact, gc_compacted = GC.respond_to?(:compact), Time.now.to_i + GC_COMPACT_TIME
36
38
 
37
39
  r1, g1, b1 = *colour1
38
40
  r2, g2, b2 = *colour2
@@ -58,19 +60,11 @@ module Termclock
58
60
  tc1 = textcolour1 ? hex2rgb(textcolour1) : hex2rgb('5555ff')
59
61
  tc2 = textcolour2 ? hex2rgb(textcolour2) : hex2rgb('3ce3b5')
60
62
 
61
- cpu_usage = 0
62
- cpu_usage_t = Thread.new { }
63
-
64
- current_net_usage = ''
65
- current_net_usage_t = Thread.new { }
66
-
67
- message_time = Time.now.to_i - 5
68
63
  message_counter = -1
69
64
  message = ''
70
65
  message_final = ''
71
66
  message_align = 0
72
67
  message_temp = ''
73
- point_five_tick = 0
74
68
 
75
69
  date, info = '', ''
76
70
 
@@ -114,22 +108,25 @@ module Termclock
114
108
  chop_message = 0
115
109
  deviation = 0
116
110
 
111
+ time_seperators = [?:, ?$]
112
+ time_seperator = time_seperators[0]
113
+ point_five_tick = -0.5
114
+
115
+ height, width = *STDOUT.winsize
116
+ height2, width2 = *STDOUT.winsize
117
+
118
+ print CLEAR
119
+
117
120
  while true
118
121
  monotonic_time_1 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
119
122
  time_now = Time.now
120
123
  height, width = *STDOUT.winsize
121
124
 
122
- if time_now.to_f./(0.5).to_i.even?
123
- unless point_five_tick == 1
124
- point_five_tick = 1
125
- splitter = ?:.freeze
126
- clock_emoji.rotate!
127
- end
128
- else
129
- unless point_five_tick == 0
130
- point_five_tick = 0
131
- splitter = ?$.freeze
132
- end
125
+ if time_now.to_f > point_five_tick
126
+ point_five_tick = time_now.to_f + 0.5
127
+ time_seperators.rotate!
128
+ clock_emoji.rotate!
129
+ time_seperator = time_seperators[0]
133
130
  end
134
131
 
135
132
  unless no_logo
@@ -167,18 +164,14 @@ module Termclock
167
164
  )
168
165
  end
169
166
 
170
- if print_info
171
- info = system_info(width).gradient(
172
- tc1, tc2, bold: bold, italic: italic
173
- )
174
- end
167
+ info = system_info(width, tc1, tc2, bold, italic) if print_info
175
168
 
176
169
  if print_date
177
170
  date = time_now.strftime(date_format).center(width)
178
171
  .gradient(tc1, tc2, bold: bold, italic: italic, exclude_spaces: true)
179
172
  end
180
173
 
181
- time = time_now.strftime(time_format).split.join(splitter)
174
+ time = time_now.strftime(time_format).split.join(time_seperator)
182
175
  art = Termclock::ParseCharacters.display(time).lines
183
176
 
184
177
  art_aligned = art.each_with_index do |x, i|
@@ -192,21 +185,27 @@ module Termclock
192
185
  end.join
193
186
 
194
187
  vertical_gap = "\e[#{height./(2.0).-(art.length / 2.0).to_i + 1}H"
188
+ final_output = "#{info}#{vertical_gap}#{art_aligned}\n#{date}\n\n\e[K#{message_final}#{term_clock_v}"
189
+
190
+ if anti_flicker && (height != height2 || width != width2)
191
+ height2, width2 = *STDOUT.winsize
192
+ print CLEAR
193
+ end
195
194
 
196
- print "#{CLEAR}#{info}#{vertical_gap}#{art_aligned}\n#{date}\n\n#{message_final}#{term_clock_v}"
195
+ print "#{clear_character}#{final_output}"
197
196
 
198
197
  if gc_compact && time_now.to_i > gc_compacted
199
198
  GC.compact
200
- gc_compacted = time_now.to_i + 7200
199
+ gc_compacted = time_now.to_i + GC_COMPACT_TIME
201
200
  end
202
201
 
203
202
  monotonic_time_2 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
204
203
  time_diff = monotonic_time_2 - monotonic_time_1
205
- sleep_time = refresh.-(time_diff + EPSILON + deviation)
204
+ sleep_time = refresh.-(time_diff + deviation)
206
205
  sleep_time = 0 if sleep_time < 0
207
206
 
208
- deviation = Process.clock_gettime(Process::CLOCK_MONOTONIC) - monotonic_time_2
209
207
  sleep(sleep_time)
208
+ deviation = Process.clock_gettime(Process::CLOCK_MONOTONIC).-(monotonic_time_2 + sleep_time + EPSILON)
210
209
  end
211
210
  end
212
211
  end
@@ -1,4 +1,12 @@
1
1
  module Termclock
2
+ FILESYSTEM, FILESYSTEM_LABEL = if LS::FS.stat('/')[:blocks].to_i == 0
3
+ _pwd = Dir.pwd
4
+ pwd = _pwd.length > 8 ? _pwd[0..5] + '...' : _pwd
5
+ [?..freeze, pwd]
6
+ else
7
+ [?/.freeze, ?/.freeze]
8
+ end.freeze
9
+
2
10
  @@cpu_usage = 0
3
11
  @@cpu_usage_t = Thread.new { }.join
4
12
 
@@ -6,13 +14,11 @@ module Termclock
6
14
  @@current_net_usage_t = Thread.new { }.join
7
15
 
8
16
  class << self
9
- def system_info(width)
17
+ def system_info(width, tc1, tc2, bold, italic)
10
18
  unless @@cpu_usage_t.alive?
11
19
  @@cpu_usage_t = Thread.new {
12
20
  _cpu_usage = LS::CPU.usage(0.25)
13
- _cpu_usage_i = _cpu_usage.to_i
14
-
15
- @@cpu_usage = "%0.2f" % _cpu_usage
21
+ @@cpu_usage = _cpu_usage ? "%0.2f".freeze % _cpu_usage : nil
16
22
  }
17
23
  end
18
24
 
@@ -20,24 +26,39 @@ module Termclock
20
26
  @@current_net_usage_t = Thread.new do
21
27
  _m = LS::Net.current_usage(0.25)
22
28
 
23
- _dl = LS::PrettifyBytes.convert_short_decimal(_m[:received], precision: 1)
24
- _ul = LS::PrettifyBytes.convert_short_decimal(_m[:transmitted], precision: 1)
29
+ _dl = _m[:received]
30
+ _ul = _m[:transmitted]
25
31
 
26
- @@current_net_usage = "\u{1F4CA} Curr. DL/UL: #{sprintf "%-8s", _dl} | #{sprintf "%8s", _ul}"
32
+ @@current_net_usage = if _dl && _ul
33
+ dl = LS::PrettifyBytes.convert_short_decimal(_dl)
34
+ ul = LS::PrettifyBytes.convert_short_decimal(_ul)
35
+
36
+ "\u{1F4CA} Curr. DL/UL: #{"%-9s" % dl} | #{ "%9s" % ul}"
37
+ else
38
+ EMPTY
39
+ end
27
40
  end
28
41
  end
29
42
 
30
- cpu = "\u{1F9E0} CPU: #{sprintf "%5s", @@cpu_usage}% (#{LS::CPU.count_online} / #{LS::CPU.count})"
43
+ cpu = if @@cpu_usage
44
+ "\u{1F9E0} CPU: #{"%6s" % @@cpu_usage}% (#{LS::CPU.count_online}/#{LS::CPU.count})"
45
+ else
46
+ EMPTY
47
+ end
31
48
 
32
49
  battery = if LS::Battery.present?
33
50
  stat = LS::Battery.stat
51
+ charge = stat[:charge].to_i
52
+
34
53
  emoji, plug = "\u{1F50B}".freeze, EMPTY
35
54
 
36
55
  if LS::Battery.charging?
37
56
  emoji, plug = "\u{1F4A1}".freeze, "\u{1F50C} ".freeze
38
57
  end
39
58
 
40
- "#{emoji} Battery: #{stat[:charge].to_i}% (#{plug}#{stat[:status]})"
59
+ lives = "\u2665 ".freeze.*(charge.fdiv(20).ceil).chop
60
+
61
+ "#{emoji} Battery: #{charge}% #{lives} (#{plug}#{stat[:status]})"
41
62
  else
42
63
  EMPTY
43
64
  end
@@ -48,79 +69,131 @@ module Termclock
48
69
  _m = LS::Net.total_bytes
49
70
  ip = "\u{1F30F} IP Addr: #{LS::Net.ipv4_private}"
50
71
 
51
- net_usage = "\u{1F4C8} Totl. DL/UL: #{sprintf "%-8s", LS::PrettifyBytes.convert_short_decimal(_m[:received], precision: 1)}"\
52
- " | #{sprintf "%8s", LS::PrettifyBytes.convert_short_decimal(_m[:transmitted], precision: 1)}"
72
+ _received = _m[:received]
73
+ _transmitted = _m[:transmitted]
74
+
75
+ tot_received = _received ? "\u{1F4C8} Totl. DL/UL: #{'%-9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_m[:received])}" : nil
76
+ tot_transmitted = _transmitted ? " | #{'%9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_transmitted)}" : nil
77
+
78
+ net_usage = if tot_received && tot_transmitted
79
+ tot_received + tot_transmitted
80
+ else
81
+ EMPTY
82
+ end
53
83
 
54
84
  _m = LS::Memory.stat
55
85
  _m.default = 0
56
86
 
57
87
  memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
58
88
  " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
59
- " (#{_m[:percent_used]}%)"
89
+ " (#{"%.2f" % _m[:percent_used]}%)"
60
90
 
61
91
  _m = LS::Swap.stat
62
92
  _m.default = 0
63
93
 
64
94
  swap = "\u{1F300} Swap: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
65
95
  " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
66
- " (#{_m[:percent_used]}%)"
96
+ " (#{"%.2f" % _m[:percent_used]}%)"
67
97
 
68
- _m = LS::Filesystem.stat('/')
98
+ _m = LS::Filesystem.stat(FILESYSTEM)
69
99
  _m.default = 0
70
100
 
71
- fs = "\u{1F4BD} FS: #{LS::PrettifyBytes.convert_short_decimal(_m[:used])}"\
101
+ fs = "\u{1F4BD} FS (#{FILESYSTEM_LABEL}): #{LS::PrettifyBytes.convert_short_decimal(_m[:used])}"\
72
102
  " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total])}"\
73
- " (#{_m[:used].*(100).fdiv(_m[:total]).round(2)}%)"
103
+ " (#{"%.2f" % _m[:used].*(100).fdiv(_m[:total]).round(2)}%)"
74
104
 
75
105
  pt = LS::Process.types.values
76
106
 
77
- process = "\u{1F9EE} Process: T:#{sprintf "%4s", LS::Process.count}|"\
78
- "R:#{sprintf "%3s", pt.count(:running)}|"\
79
- "S:#{sprintf "%3s", pt.count(:sleeping)}|"\
80
- "I:#{sprintf "%3s", pt.count(:idle)}"
107
+ process = if pt.length > 0
108
+ "\u{1F3ED} Process: T:#{"%4s" % pt.length}|"\
109
+ "R:#{"%3s" % pt.count(:running)}|"\
110
+ "S:#{"%3s" % pt.count(:sleeping)}|"\
111
+ "I:#{"%3s" % pt.count(:idle)}"
112
+ else
113
+ EMPTY
114
+ end
81
115
 
82
- _os_v = LS::OS.version
83
- os_v = unless _os_v.empty?
84
- " (#{_os_v})"
116
+ @@os_v ||= unless LS::OS.version.empty?
117
+ " (#{LS::OS.version})"
85
118
  else
86
119
  EMPTY
87
120
  end
88
121
 
89
- os = "\u{1F427} Distrib: #{LS::OS.distribution} #{LS::OS.machine}#{os_v}"
122
+ @@os ||= "\u{1F427} Distrib: #{LS::OS.distribution} #{LS::OS.machine}#{@@os_v}"
123
+
124
+ _temp_uptime = LS::OS.uptime
125
+
126
+ _uptime = unless _temp_uptime.empty?
127
+ _temp_uptime
128
+ else
129
+ _u = LS::OS.uptime_i
130
+ {
131
+ hour: _u / 3600,
132
+ minute: _u % 3600 / 60,
133
+ second: _u % 3600 % 60,
134
+ jiffy: 0
135
+ }
136
+ end
90
137
 
91
- _uptime = LS::OS.uptime
92
138
  _second = _uptime[:second]
93
139
  _second_i = _second.to_i
94
140
 
95
141
  hour = "%02d" % _uptime[:hour]
96
142
  minute = "%02d" % _uptime[:minute]
97
- second = "%02d" % _second_i
98
- ms = "%02d" % _second.-(_second_i).*(100)
143
+ second = "%02d" % _uptime[:second]
144
+ jiffy = "%02d" % _uptime[:jiffy]
145
+
146
+ uptime = "\u{1F3A1} Uptime: #{hour}:#{minute}:#{second}:#{jiffy} (#{LS::OS.uptime_i}s)"
99
147
 
100
- uptime = "\u{1F3A1} Uptime: #{hour}:#{minute}:#{second}:#{ms} (#{LS::OS.uptime_i}s)"
148
+ _loadavg = LS::Sysinfo.loads.map! { |x| "%.2f" % x }
149
+ loadavg = "\u{1F525} LoadAvg: 1m #{_loadavg[0]}|5m #{_loadavg[1]}|15m #{_loadavg[2]}"
101
150
 
102
- _loadavg = LS::Sysinfo.loads.map! { |x| sprintf("%.2f", x) }
103
- loadavg = "\u{1F9FA} LoadAvg: 1m #{_loadavg[0]}|5m #{_loadavg[1]}|15m #{_loadavg[2]}"
151
+ all_info = []
152
+ max_l = 0
153
+ i = -1
104
154
 
105
- all_info = [
155
+ [
106
156
  user, hostname,
107
- os, battery,
157
+ @@os, battery,
108
158
  cpu, ip,
109
159
  memory, @@current_net_usage,
110
160
  swap, net_usage,
111
161
  fs, process,
112
162
  uptime, loadavg
113
- ].map(&:to_s).reject(&:empty?)
114
- max_l = 0
115
-
116
- all_info.each_with_index { |x, i|
117
- max_l = x.length if i.odd? && x.length > max_l
163
+ ].each { |x|
164
+ unless x.empty?
165
+ all_info << x
166
+ i += 1
167
+
168
+ if i.odd?
169
+ _x_len = x.length
170
+ max_l = _x_len if max_l < _x_len
171
+ end
172
+ end
118
173
  }
119
174
 
120
175
  max_l += 4
121
176
 
122
177
  all_info.each_slice(2).map { |x, y|
123
- "\s#{x}#{SPACE.*(width.-(x.length + max_l).abs)}#{y}"
178
+ _diff = width.-(x.length + max_l)
179
+ _diff = 0 if _diff < 1
180
+ y_to_s = y.to_s
181
+
182
+ padding = "#{SPACE * _diff}"
183
+ str = SPACE + x + padding + y_to_s
184
+
185
+ grads = SPACE + x.gradient(tc1, tc2, bold: bold, italic: italic) +
186
+ padding +
187
+ y_to_s.gradient(tc1, tc2, bold: bold, italic: italic)
188
+
189
+ len = str.chars.map { |x|
190
+ _x = x.bytesize./(2)
191
+ _x == 0 ? 1 : _x
192
+ }.sum
193
+
194
+ w = width - 2
195
+
196
+ len < w ? grads.+(SPACE.*(w - len)) : grads
124
197
  }.join(NEWLINE)
125
198
  end
126
199
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Termclock
4
- VERSION = "0.4.0"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: termclock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Goswami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-24 00:00:00.000000000 Z
11
+ date: 2021-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: linux_stat
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.1
19
+ version: 2.2.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.1
26
+ version: 2.2.2
27
27
  description: A clock for Linux VTE
28
28
  email:
29
29
  - souravgoswami@protonmail.com
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  requirements: []
62
- rubygems_version: 3.1.4
62
+ rubygems_version: 3.2.13
63
63
  signing_key:
64
64
  specification_version: 4
65
65
  summary: A clock for Linux VTE