termclock 0.3.0 → 0.4.0

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 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