termclock 0.3.0 → 0.4.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: ec9759a77ce797b7110a4d5427cf56ca1e7c7188558a84220d233b873d2db1b6
4
- data.tar.gz: 6262c03faf908cdf536aa461181ed8564408e838f2df4a016da5f90817d25135
3
+ metadata.gz: 97954b7ee94050e29c1d43619a147275d89a731d8e317e84af0afa59e6958961
4
+ data.tar.gz: f5b29cef16329eb7db1442a0073b32cdaef8563fa21abc9dca4d36de28925441
5
5
  SHA512:
6
- metadata.gz: be6ba479d498ea9155a16e950e8c5f6a240ec3556f3a5a0bccb7120ab48142f9084ea01c0c17c81c229172c9cbd2ac61fd8234063fe9c537d36e1e20ee23e524
7
- data.tar.gz: 4d17f5be9b2d8b8c61800173c4fc7fb09294d10f17c2d69e35b78d24d1b1ffd758484525594a91bbf627052cfefe6bb0f96d02c9d304f0f94d7429a803abebd8
6
+ metadata.gz: e707c28bb571a7f6fe4655d0b9f24217361b64ff2489ee0f23d1475ecda543d85186bd6b8b476ae7247d088428baa2f424b4d0fafa507d1057bced4f626e708d
7
+ data.tar.gz: bdb1086fbb90979c98084f0fdcd8c4a0cbdf4ff689dd623d39c61079166a29525e2c07881b080838c3b0535a1c98c8db966f987253a6e9e14837f0700120c274
@@ -1,22 +1,25 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'termclock'
3
3
  $-v = nil
4
+ STDOUT.sync = true
4
5
 
5
- def version
6
+ def version(logo_colour)
6
7
  emoji = ?🕐.ord.-(1).chr('utf-8')
7
8
  Time.now.strftime('%I').to_i.times { emoji.next! }
8
9
 
9
10
  _v = "#{emoji} This is Termclock v#{Termclock::VERSION}"
10
11
  vl_2 = _v.length / 2
11
12
 
12
- v_col1 = Termclock.hex2rgb('ff0')
13
- v_col2 = Termclock.hex2rgb('f55')
14
- v_col3 = Termclock.hex2rgb('55f')
15
-
16
- _v[0...vl_2].gradient(v_col1, v_col2, underline: true, bold: true) <<
17
- _v[vl_2..-1].gradient(v_col2, v_col3, underline: true, bold: true)
13
+ _v[0...vl_2].gradient(logo_colour[0], logo_colour[1], underline: true, bold: true) <<
14
+ _v[vl_2..-1].gradient(logo_colour[1], logo_colour[2], underline: true, bold: true)
18
15
  end
19
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))
22
+
20
23
  if ARGV.any? { |x| x[/\A\-(\-help|h)\z/] }
21
24
  puts <<~EOF
22
25
  TermClock: A clock that runs on the LinuxTerminal!
@@ -34,13 +37,14 @@ if ARGV.any? { |x| x[/\A\-(\-help|h)\z/] }
34
37
  --clean\t\t\t\tJust run the clean bare clock
35
38
  --colour=|-c=\t\t\tSpecify hex colour (4 colours)
36
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 # ]
37
42
 
38
43
  \e[1m3. Information:\e[0m
39
44
  --no-date|-nd\t\t\tShows no date
40
45
  --no-message|-nm\t\tShows no messages
41
46
  --no-sysinfo|-ni\t\tShows no system info
42
47
  --refresh|r\t\t\tSpecify delay or refresh time
43
- --text-colour|-tc\t\tSpecify text colour (2 colours)
44
48
  --no-logo|-nl\t\t\tDon't show the logo at the bottom
45
49
 
46
50
  \e[1m4. Formats:\e[0m
@@ -54,22 +58,14 @@ if ARGV.any? { |x| x[/\A\-(\-help|h)\z/] }
54
58
 
55
59
  Supported characters are 0 - 9, a - z, /, \\, !, %, and |.
56
60
 
57
- #{version}
61
+ #{version(logo_colour)}
58
62
  EOF
59
63
 
60
64
  exit 0
61
65
  end
62
66
 
63
67
  if ARGV.any? { |x| x[/\A\-(-version|v)\z/] }
64
- colour = [
65
- [[255, 100, 100], [100, 100, 255]],
66
- [[60, 230, 180], [100, 100, 255]],
67
- [[255, 255, 0], [100, 100, 255]],
68
- [[255, 80, 170], [255, 200, 0]],
69
- ].sample
70
-
71
- colour.reverse! if rand < 0.5
72
- puts version
68
+ puts version(logo_colour)
73
69
  exit 0
74
70
  end
75
71
 
@@ -132,7 +128,7 @@ begin
132
128
  Termclock.start(
133
129
  *colours,
134
130
  *text_colours,
135
- sleep: refresh_time,
131
+ refresh: refresh_time,
136
132
  bold: bold,
137
133
  italic: italic,
138
134
  print_info: !no_print_info,
@@ -140,7 +136,8 @@ begin
140
136
  print_date: !no_print_date,
141
137
  no_logo: no_logo,
142
138
  time_format: time_format,
143
- date_format: date_format
139
+ date_format: date_format,
140
+ logo_colour: logo_colour
144
141
  )
145
142
  rescue Interrupt, SignalException
146
143
  print "\e[H\e[2J\e[3J"
@@ -7,6 +7,8 @@ module Termclock
7
7
  NEWLINE = ?\n.freeze
8
8
  SPACE = ?\s.freeze
9
9
  TAB = ?\t.freeze
10
+ EMPTY = ''.freeze
11
+ EPSILON = 5.0e-07
10
12
  end
11
13
 
12
14
  require_relative "termclock/string"
@@ -3,7 +3,7 @@ module Termclock
3
3
  colour = hex.dup.to_s
4
4
  colour.strip!
5
5
  colour.downcase!
6
- colour[0] = ''.freeze if colour[0] == ?#.freeze
6
+ colour[0] = EMPTY if colour[0] == ?#.freeze
7
7
 
8
8
  # out of range
9
9
  oor = colour.scan(/[^a-f0-9]/)
@@ -1,300 +1,300 @@
1
1
  module Termclock
2
2
  module ParseCharacters
3
3
  CHARACTERS = <<~EOF.freeze
4
- # 0
4
+ #\s0
5
5
  ````````
6
- `` ``
7
- `` ``
8
- `` ``
6
+ ``\s\s\s\s``
7
+ ``\s\s\s\s``
8
+ ``\s\s\s\s``
9
9
  ````````
10
10
 
11
- # 1
12
- ``
11
+ #\s1
12
+ \s\s\s``
13
13
  `````
14
- ``
15
- ``
14
+ \s\s\s``
15
+ \s\s\s``
16
16
  ````````
17
17
 
18
- # 2
18
+ #\s2
19
19
  ````````
20
- ``
20
+ \s\s\s\s\s\s``
21
21
  ````````
22
22
  ``
23
23
  ````````
24
24
 
25
- # 3
25
+ #\s3
26
26
  ````````
27
- ``
27
+ \s\s\s\s\s\s``
28
28
  ````````
29
- ``
29
+ \s\s\s\s\s\s``
30
30
  ````````
31
31
 
32
- # 4
33
- `` ``
34
- `` ``
32
+ #\s4
33
+ ``\s\s\s\s``
34
+ ``\s\s\s\s``
35
35
  ````````
36
- ``
37
- ``
36
+ \s\s\s\s\s\s``
37
+ \s\s\s\s\s\s``
38
38
 
39
- # 5
39
+ #\s5
40
40
  ````````
41
41
  ``
42
42
  ````````
43
- ``
43
+ \s\s\s\s\s\s``
44
44
  ````````
45
45
 
46
- # 6
46
+ #\s6
47
47
  ````````
48
48
  ``
49
49
  ````````
50
- `` ``
50
+ ``\s\s\s\s``
51
51
  ````````
52
52
 
53
- # 7
53
+ #\s7
54
54
  ````````
55
- ``
56
- ``
57
- ``
58
- ``
55
+ \s\s\s\s\s\s``
56
+ \s\s\s\s\s\s``
57
+ \s\s\s\s\s\s``
58
+ \s\s\s\s\s\s``
59
59
 
60
- # 8
60
+ #\s8
61
61
  ````````
62
- `` ``
62
+ ``\s\s\s\s``
63
63
  ````````
64
- `` ``
64
+ ``\s\s\s\s``
65
65
  ````````
66
66
 
67
- # 9
67
+ #\s9
68
68
  ````````
69
- `` ``
69
+ ``\s\s\s\s``
70
70
  ````````
71
- ``
71
+ \s\s\s\s\s\s``
72
72
  ````````
73
73
 
74
- # :
74
+ #\s:
75
75
  \u2B29\u2B29
76
76
  \u2B29\u2B29
77
77
 
78
78
  \u2B29\u2B29
79
79
  \u2B29\u2B29
80
80
 
81
- # $
81
+ #\s$
82
82
  \s\s
83
83
  \s\s
84
84
 
85
85
  \s\s
86
86
  \s\s
87
- # A
87
+ #\sA
88
88
  ````````
89
- `` ``
89
+ ``\s\s\s\s``
90
90
  ````````
91
- `` ``
92
- `` ``
91
+ ``\s\s\s\s``
92
+ ``\s\s\s\s``
93
93
 
94
- # B
94
+ #\sB
95
95
  ````````
96
- `` ``
96
+ ``\s\s\s\s\s``
97
97
  ````````
98
- `` ``
98
+ ``\s\s\s\s\s``
99
99
  ````````
100
100
 
101
- # C
101
+ #\sC
102
102
  ````````
103
103
  ``
104
104
  ``
105
105
  ``
106
106
  ````````
107
107
 
108
- # D
108
+ #\sD
109
109
  ````````
110
- `` ``
111
- `` ``
112
- `` ``
110
+ ``\s\s\s\s\s``
111
+ ``\s\s\s\s\s\s``
112
+ ``\s\s\s\s\s``
113
113
  ````````
114
114
 
115
- # E
115
+ #\sE
116
116
  ````````
117
117
  ``
118
118
  ````````
119
119
  ``
120
120
  ````````
121
121
 
122
- # F
122
+ #\sF
123
123
  ````````
124
124
  ``
125
125
  ````````
126
126
  ``
127
127
  ``
128
128
 
129
- # G
129
+ #\sG
130
130
  ````````
131
131
  ``
132
132
  ``
133
- `` ````
133
+ ``\s\s````
134
134
  ````````
135
135
 
136
- # H
137
- `` ``
138
- `` ``
136
+ #\sH
137
+ ``\s\s\s\s``
138
+ ``\s\s\s\s``
139
139
  ````````
140
- `` ``
141
- `` ``
140
+ ``\s\s\s\s``
141
+ ``\s\s\s\s``
142
142
 
143
- # I
143
+ #\sI
144
144
  ````````
145
145
  \s\s\s``
146
146
  \s\s\s``
147
147
  \s\s\s``
148
148
  ````````
149
149
 
150
- # J
150
+ #\sJ
151
151
  ````````
152
- ``
153
- ``
154
- `` ``
155
- ```````
152
+ \s\s\s\s\s\s``
153
+ \s\s\s\s\s\s``
154
+ \s``\s\s\s``
155
+ \s```````
156
156
 
157
- # K
158
- `` ``
159
- `` ``
157
+ #\sK
158
+ ``\s\s\s\s``
159
+ ``\s\s``
160
160
  `````
161
- `` ``
162
- `` ``
161
+ ``\s\s``
162
+ ``\s\s\s\s``
163
163
 
164
- # L
164
+ #\sL
165
165
  ``
166
166
  ``
167
167
  ``
168
168
  ``
169
169
  ````````
170
170
 
171
- # M
172
- ``` ```
173
- `` `` ``
174
- `` ``
175
- `` ``
176
- `` ``
171
+ #\sM
172
+ ```\s\s```
173
+ ``\s``\s``
174
+ ``\s\s\s\s``
175
+ ``\s\s\s\s``
176
+ ``\s\s\s\s``
177
177
 
178
- # N
179
- ```` ``
180
- `` `` ``
181
- `` `` ``
182
- `` `` ``
183
- `` ````
178
+ #\sN
179
+ ````\s\s``
180
+ ``\s``\s``
181
+ ``\s``\s``
182
+ ``\s``\s``
183
+ ``\s\s````
184
184
 
185
- # O
185
+ #\sO
186
186
  ````````
187
- `` ``
188
- `` ``
189
- `` ``
187
+ ``\s\s\s\s``
188
+ ``\s\s\s\s``
189
+ ``\s\s\s\s``
190
190
  ````````
191
191
 
192
- # P
192
+ #\sP
193
193
  ````````
194
- `` ``
194
+ ``\s\s\s\s``
195
195
  ````````
196
196
  ``
197
197
  ``
198
198
 
199
- # Q
199
+ #\sQ
200
200
  ````````
201
- `` ``
201
+ ``\s\s\s\s``
202
202
  ````````
203
- ``
204
- ``
203
+ \s\s\s\s\s\s``
204
+ \s\s\s\s\s\s``
205
205
 
206
- # R
206
+ #\sR
207
207
  ````````
208
- `` ``
208
+ ``\s\s\s\s``
209
209
  ````````
210
210
  `````
211
- `` ``
211
+ ``\s\s\s``
212
212
 
213
- # S
213
+ #\sS
214
214
  ````````
215
215
  ``
216
216
  ````````
217
- ``
217
+ \s\s\s\s\s\s``
218
218
  ````````
219
219
 
220
- # T
220
+ #\sT
221
221
  ````````
222
- ``
223
- ``
224
- ``
225
- ``
222
+ \s\s\s``
223
+ \s\s\s``
224
+ \s\s\s``
225
+ \s\s\s``
226
226
 
227
- # U
228
- `` ``
229
- `` ``
230
- `` ``
231
- `` ``
227
+ #\sU
228
+ ``\s\s\s\s``
229
+ ``\s\s\s\s``
230
+ ``\s\s\s\s``
231
+ ``\s\s\s\s``
232
232
  ````````
233
233
 
234
- # V
235
- `` ``
236
- `` ``
237
- `` ``
238
- \s`` ``\s
234
+ #\sV
235
+ ``\s\s\s\s``
236
+ ``\s\s\s\s``
237
+ ``\s\s\s\s``
238
+ \s``\s\s``\s
239
239
  \s\s\s``
240
240
 
241
- # W
242
- `` ``
243
- `` ``
244
- `` ``
245
- `` ` ``
241
+ #\sW
242
+ ``\s\s\s\s``
243
+ ``\s\s\s\s``
244
+ ``\s\s\s\s``
245
+ ``\s`\s\s``
246
246
  ````````
247
247
 
248
- # X
249
- `` ``
250
- \s`` ``
248
+ #\sX
249
+ ``\s\s\s\s``
250
+ \s``\s\s``
251
251
  \s\s\s``
252
- \s`` ``
253
- `` ``
252
+ \s``\s\s``
253
+ ``\s\s\s\s``
254
254
 
255
- # Y
256
- `` ``
257
- `` ``
255
+ #\sY
256
+ ``\s\s\s\s``
257
+ ``\s\s\s\s``
258
258
  ````````
259
- ``
260
- ``
259
+ \s\s\s``
260
+ \s\s\s``
261
261
 
262
- # Z
262
+ #\sZ
263
263
  ````````
264
- ``
265
- ``
266
- ``
264
+ \s\s\s\s\s``
265
+ \s\s\s``
266
+ \s``
267
267
  ````````
268
268
 
269
- # /
269
+ #\s/
270
270
  \s\s\s\s\s``\s
271
271
  \s\s\s\s``\s\s
272
272
  \s\s\s``\s\s\s
273
273
  \s\s``\s\s\s\s
274
274
  \s``\s\s\s\s\s
275
275
 
276
- # \\
276
+ #\s\\
277
277
  \s``\s\s\s\s\s
278
278
  \s\s``\s\s\s\s
279
279
  \s\s\s``\s\s\s
280
280
  \s\s\s\s``\s\s
281
281
  \s\s\s\s\s``\s
282
282
 
283
- # %
283
+ #\s%
284
284
  \s\s\s\s\s``\s
285
285
  ``\s\s``\s\s
286
286
  \s\s\s``\s\s\s
287
287
  \s\s``\s\s``
288
288
  \s``\s\s\s\s\s
289
289
 
290
- # |
290
+ #\s|
291
291
  \s\s\s``\s\s\s
292
292
  \s\s\s``\s\s\s
293
293
  \s\s\s``\s\s\s
294
294
  \s\s\s``\s\s\s
295
295
  \s\s\s``\s\s\s
296
296
 
297
- # !
297
+ #\s!
298
298
  \s\s\s``\s\s\s
299
299
  \s\s\s``\s\s\s
300
300
  \s\s\s``\s\s\s
@@ -1,14 +1,15 @@
1
1
  module Termclock
2
2
  def self.start(colour1, colour2, colour3, colour4,
3
3
  textcolour1 = nil, textcolour2 = nil,
4
- sleep: 0.1,
4
+ refresh: 0.1,
5
5
  bold: false,
6
6
  italic: false,
7
7
  print_info: true, print_message: true,
8
8
  print_date: true,
9
9
  time_format: "%H %M %S %2N",
10
10
  date_format: '%a, %d %B %Y',
11
- no_logo: false
11
+ no_logo: false,
12
+ logo_colour: [Termclock.hex2rgb('ff0'), Termclock.hex2rgb('f55'), Termclock.hex2rgb('55f')]
12
13
  )
13
14
 
14
15
  generate = proc do |start, stop, n = 5|
@@ -100,20 +101,21 @@ module Termclock
100
101
 
101
102
  version = "Termclock v#{Termclock::VERSION}"
102
103
 
103
- v_col1 = hex2rgb('ff0')
104
- v_col2 = hex2rgb('f55')
105
- v_col3 = hex2rgb('f55')
106
- v_col4 = hex2rgb('55f')
104
+ v_col1 = logo_colour[0]
105
+ v_col2 = logo_colour[1]
106
+ v_col3 = logo_colour[2]
107
107
 
108
108
  vl_2 = version.length / 2
109
109
  _term_clock_v = version[0...vl_2].gradient(v_col1, v_col2, underline: true, bold: bold, italic: italic) <<
110
- version[vl_2..-1].gradient(v_col3, v_col4, underline: true, bold: bold, italic: italic)
110
+ version[vl_2..-1].gradient(v_col2, v_col3, underline: true, bold: bold, italic: italic)
111
111
 
112
112
  term_clock_v = ''
113
113
 
114
114
  chop_message = 0
115
+ deviation = 0
115
116
 
116
117
  while true
118
+ monotonic_time_1 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
117
119
  time_now = Time.now
118
120
  height, width = *STDOUT.winsize
119
121
 
@@ -173,16 +175,20 @@ module Termclock
173
175
 
174
176
  if print_date
175
177
  date = time_now.strftime(date_format).center(width)
176
- .gradient(tc1, tc2, bold: bold, italic: italic)
178
+ .gradient(tc1, tc2, bold: bold, italic: italic, exclude_spaces: true)
177
179
  end
178
180
 
179
181
  time = time_now.strftime(time_format).split.join(splitter)
180
182
  art = Termclock::ParseCharacters.display(time).lines
181
183
 
182
184
  art_aligned = art.each_with_index do |x, i|
183
- chomped = x.chomp(''.freeze).+(NEWLINE)
185
+ chomped = x.chomp(EMPTY).+(NEWLINE)
184
186
  gr = chomped.gradient(*colours[i], bold: bold, italic: italic)
185
- x.replace(SPACE.*(width./(2.0).-(chomped.length / 2.0).abs.to_i + 1) + gr)
187
+
188
+ w = width./(2.0).-(chomped.length / 2.0) + 2
189
+ w = 0 if w < 0
190
+
191
+ x.replace(SPACE.*(w) + gr)
186
192
  end.join
187
193
 
188
194
  vertical_gap = "\e[#{height./(2.0).-(art.length / 2.0).to_i + 1}H"
@@ -194,7 +200,13 @@ module Termclock
194
200
  gc_compacted = time_now.to_i + 7200
195
201
  end
196
202
 
197
- sleep(sleep)
203
+ monotonic_time_2 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
204
+ time_diff = monotonic_time_2 - monotonic_time_1
205
+ sleep_time = refresh.-(time_diff + EPSILON + deviation)
206
+ sleep_time = 0 if sleep_time < 0
207
+
208
+ deviation = Process.clock_gettime(Process::CLOCK_MONOTONIC) - monotonic_time_2
209
+ sleep(sleep_time)
198
210
  end
199
211
  end
200
212
  end
@@ -2,6 +2,7 @@ class String
2
2
  NEWLINE = ?\n.freeze
3
3
  SPACE = ?\s.freeze
4
4
  TAB = ?\t.freeze
5
+ EMPTY = ''.freeze
5
6
 
6
7
  def gradient(*all_rgbs,
7
8
  bg: false,
@@ -31,7 +32,7 @@ class String
31
32
  temp << style if style
32
33
 
33
34
  _r, _g, _b = r, g, b
34
- chomped = !!c.chomp!(''.freeze)
35
+ chomped = !!c.chomp!(EMPTY)
35
36
 
36
37
  len = c.length
37
38
  n_variable = exclude_spaces ? c.delete("\t\s".freeze).length : len
@@ -8,17 +8,22 @@ module Termclock
8
8
  class << self
9
9
  def system_info(width)
10
10
  unless @@cpu_usage_t.alive?
11
- @@cpu_usage_t = Thread.new { @@cpu_usage = LS::CPU.usage(0.25) }
11
+ @@cpu_usage_t = Thread.new {
12
+ _cpu_usage = LS::CPU.usage(0.25)
13
+ _cpu_usage_i = _cpu_usage.to_i
14
+
15
+ @@cpu_usage = "%0.2f" % _cpu_usage
16
+ }
12
17
  end
13
18
 
14
19
  unless @@current_net_usage_t.alive?
15
20
  @@current_net_usage_t = Thread.new do
16
21
  _m = LS::Net.current_usage(0.25)
17
22
 
18
- _dl = LS::PrettifyBytes.convert_short_binary(_m[:received], precision: 0)
19
- _ul = LS::PrettifyBytes.convert_short_binary(_m[:transmitted], precision: 0)
23
+ _dl = LS::PrettifyBytes.convert_short_decimal(_m[:received], precision: 1)
24
+ _ul = LS::PrettifyBytes.convert_short_decimal(_m[:transmitted], precision: 1)
20
25
 
21
- @@current_net_usage = "\u{1F4CA} Curr. DL/UL: #{sprintf "%-7s", _dl} | #{sprintf "%7s", _ul}"
26
+ @@current_net_usage = "\u{1F4CA} Curr. DL/UL: #{sprintf "%-8s", _dl} | #{sprintf "%8s", _ul}"
22
27
  end
23
28
  end
24
29
 
@@ -26,11 +31,15 @@ module Termclock
26
31
 
27
32
  battery = if LS::Battery.present?
28
33
  stat = LS::Battery.stat
29
- emoji = LS::Battery.charging? ? "\u{1F4A1}" : "\u{1F50B}"
30
- plug = LS::Battery.charging? ? "\u{1F50C} " : ''.freeze
34
+ emoji, plug = "\u{1F50B}".freeze, EMPTY
35
+
36
+ if LS::Battery.charging?
37
+ emoji, plug = "\u{1F4A1}".freeze, "\u{1F50C} ".freeze
38
+ end
39
+
31
40
  "#{emoji} Battery: #{stat[:charge].to_i}% (#{plug}#{stat[:status]})"
32
41
  else
33
- ''.freeze
42
+ EMPTY
34
43
  end
35
44
 
36
45
  user = "\u{1F481} User: #{LS::User.get_current_user.capitalize}"
@@ -39,23 +48,29 @@ module Termclock
39
48
  _m = LS::Net.total_bytes
40
49
  ip = "\u{1F30F} IP Addr: #{LS::Net.ipv4_private}"
41
50
 
42
- net_usage = "\u{1F4C8} Totl. DL/UL: #{sprintf "%-7s", LS::PrettifyBytes.convert_short_binary(_m[:received], precision: 0)}"\
43
- " | #{sprintf "%7s", LS::PrettifyBytes.convert_short_binary(_m[:transmitted], precision: 0)}"
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)}"
44
53
 
45
54
  _m = LS::Memory.stat
46
- memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_binary(_m[:used].to_i * 1024)}"\
47
- " / #{LS::PrettifyBytes.convert_short_binary(_m[:total].to_i * 1024)}"\
48
- " (#{_m[:percent_used].to_i}%)"
55
+ _m.default = 0
56
+
57
+ memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
58
+ " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
59
+ " (#{_m[:percent_used]}%)"
49
60
 
50
61
  _m = LS::Swap.stat
51
- swap = "\u{1F300} Swap: #{LS::PrettifyBytes.convert_short_binary(_m[:used].to_i * 1024)}"\
52
- " / #{LS::PrettifyBytes.convert_short_binary(_m[:total].to_i * 1024)}"\
53
- " (#{_m[:percent_used].to_i}%)"
62
+ _m.default = 0
63
+
64
+ swap = "\u{1F300} Swap: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
65
+ " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
66
+ " (#{_m[:percent_used]}%)"
67
+
68
+ _m = LS::Filesystem.stat('/')
69
+ _m.default = 0
54
70
 
55
- _m = LS::Filesystem.stat
56
- fs = "\u{1F4BD} FS: #{LS::PrettifyBytes.convert_short_binary(_m[:used].to_i)}"\
57
- " / #{LS::PrettifyBytes.convert_short_binary(_m[:total].to_i)}"\
58
- " (#{_m[:used].to_i.*(100).fdiv(_m[:total].to_i).round(2)}%)"
71
+ fs = "\u{1F4BD} FS: #{LS::PrettifyBytes.convert_short_decimal(_m[:used])}"\
72
+ " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total])}"\
73
+ " (#{_m[:used].*(100).fdiv(_m[:total]).round(2)}%)"
59
74
 
60
75
  pt = LS::Process.types.values
61
76
 
@@ -68,21 +83,45 @@ module Termclock
68
83
  os_v = unless _os_v.empty?
69
84
  " (#{_os_v})"
70
85
  else
71
- ''.freeze
86
+ EMPTY
72
87
  end
73
88
 
74
89
  os = "\u{1F427} Distrib: #{LS::OS.distribution} #{LS::OS.machine}#{os_v}"
75
90
 
76
- max_l = [hostname, process, ip, battery, @@current_net_usage, net_usage].map(&:length).max + 4
91
+ _uptime = LS::OS.uptime
92
+ _second = _uptime[:second]
93
+ _second_i = _second.to_i
94
+
95
+ hour = "%02d" % _uptime[:hour]
96
+ minute = "%02d" % _uptime[:minute]
97
+ second = "%02d" % _second_i
98
+ ms = "%02d" % _second.-(_second_i).*(100)
99
+
100
+ uptime = "\u{1F3A1} Uptime: #{hour}:#{minute}:#{second}:#{ms} (#{LS::OS.uptime_i}s)"
101
+
102
+ _loadavg = LS::Sysinfo.loads.map! { |x| sprintf("%.2f", x) }
103
+ loadavg = "\u{1F9FA} LoadAvg: 1m #{_loadavg[0]}|5m #{_loadavg[1]}|15m #{_loadavg[2]}"
104
+
105
+ all_info = [
106
+ user, hostname,
107
+ os, battery,
108
+ cpu, ip,
109
+ memory, @@current_net_usage,
110
+ swap, net_usage,
111
+ fs, process,
112
+ 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
118
+ }
119
+
120
+ max_l += 4
77
121
 
78
- <<~STR
79
- \s#{user}#{SPACE.*(width.-(user.length + max_l).abs)}#{hostname}
80
- \s#{os}#{SPACE.*(width.-(os.length + max_l).abs)}#{battery}
81
- \s#{cpu}#{SPACE.*(width.-(cpu.length + max_l).abs)}#{ip}
82
- \s#{memory}#{SPACE.*(width.-(memory.length + max_l).abs)}#{@@current_net_usage}
83
- \s#{swap}#{SPACE.*(width.-(swap.length + max_l).abs)}#{net_usage}
84
- \s#{fs}#{SPACE.*(width.-(fs.length + max_l).abs)}#{process}
85
- STR
122
+ all_info.each_slice(2).map { |x, y|
123
+ "\s#{x}#{SPACE.*(width.-(x.length + max_l).abs)}#{y}"
124
+ }.join(NEWLINE)
86
125
  end
87
126
  end
88
127
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Termclock
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.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.3.0
4
+ version: 0.4.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-21 00:00:00.000000000 Z
11
+ date: 2021-01-24 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.4.0
19
+ version: 1.5.1
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.4.0
26
+ version: 1.5.1
27
27
  description: A clock for Linux VTE
28
28
  email:
29
29
  - souravgoswami@protonmail.com