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 +4 -4
- data/exe/termclock +17 -20
- data/lib/termclock.rb +2 -0
- data/lib/termclock/hex2rgb.rb +1 -1
- data/lib/termclock/parse_characters.rb +134 -134
- data/lib/termclock/start.rb +23 -11
- data/lib/termclock/string.rb +2 -1
- data/lib/termclock/system_info.rb +68 -29
- data/lib/termclock/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97954b7ee94050e29c1d43619a147275d89a731d8e317e84af0afa59e6958961
|
4
|
+
data.tar.gz: f5b29cef16329eb7db1442a0073b32cdaef8563fa21abc9dca4d36de28925441
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e707c28bb571a7f6fe4655d0b9f24217361b64ff2489ee0f23d1475ecda543d85186bd6b8b476ae7247d088428baa2f424b4d0fafa507d1057bced4f626e708d
|
7
|
+
data.tar.gz: bdb1086fbb90979c98084f0fdcd8c4a0cbdf4ff689dd623d39c61079166a29525e2c07881b080838c3b0535a1c98c8db966f987253a6e9e14837f0700120c274
|
data/exe/termclock
CHANGED
@@ -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
|
-
|
13
|
-
|
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
|
-
|
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
|
-
|
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"
|
data/lib/termclock.rb
CHANGED
data/lib/termclock/hex2rgb.rb
CHANGED
@@ -1,300 +1,300 @@
|
|
1
1
|
module Termclock
|
2
2
|
module ParseCharacters
|
3
3
|
CHARACTERS = <<~EOF.freeze
|
4
|
-
|
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
|
-
|
12
|
-
|
11
|
+
#\s1
|
12
|
+
\s\s\s``
|
13
13
|
`````
|
14
|
-
|
15
|
-
|
14
|
+
\s\s\s``
|
15
|
+
\s\s\s``
|
16
16
|
````````
|
17
17
|
|
18
|
-
|
18
|
+
#\s2
|
19
19
|
````````
|
20
|
-
|
20
|
+
\s\s\s\s\s\s``
|
21
21
|
````````
|
22
22
|
``
|
23
23
|
````````
|
24
24
|
|
25
|
-
|
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
|
-
|
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
|
-
|
39
|
+
#\s5
|
40
40
|
````````
|
41
41
|
``
|
42
42
|
````````
|
43
|
-
|
43
|
+
\s\s\s\s\s\s``
|
44
44
|
````````
|
45
45
|
|
46
|
-
|
46
|
+
#\s6
|
47
47
|
````````
|
48
48
|
``
|
49
49
|
````````
|
50
|
-
``
|
50
|
+
``\s\s\s\s``
|
51
51
|
````````
|
52
52
|
|
53
|
-
|
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
|
-
|
60
|
+
#\s8
|
61
61
|
````````
|
62
|
-
``
|
62
|
+
``\s\s\s\s``
|
63
63
|
````````
|
64
|
-
``
|
64
|
+
``\s\s\s\s``
|
65
65
|
````````
|
66
66
|
|
67
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
101
|
+
#\sC
|
102
102
|
````````
|
103
103
|
``
|
104
104
|
``
|
105
105
|
``
|
106
106
|
````````
|
107
107
|
|
108
|
-
|
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
|
-
|
115
|
+
#\sE
|
116
116
|
````````
|
117
117
|
``
|
118
118
|
````````
|
119
119
|
``
|
120
120
|
````````
|
121
121
|
|
122
|
-
|
122
|
+
#\sF
|
123
123
|
````````
|
124
124
|
``
|
125
125
|
````````
|
126
126
|
``
|
127
127
|
``
|
128
128
|
|
129
|
-
|
129
|
+
#\sG
|
130
130
|
````````
|
131
131
|
``
|
132
132
|
``
|
133
|
-
|
133
|
+
``\s\s````
|
134
134
|
````````
|
135
135
|
|
136
|
-
|
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
|
-
|
143
|
+
#\sI
|
144
144
|
````````
|
145
145
|
\s\s\s``
|
146
146
|
\s\s\s``
|
147
147
|
\s\s\s``
|
148
148
|
````````
|
149
149
|
|
150
|
-
|
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
|
-
|
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
|
-
|
164
|
+
#\sL
|
165
165
|
``
|
166
166
|
``
|
167
167
|
``
|
168
168
|
``
|
169
169
|
````````
|
170
170
|
|
171
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
192
|
+
#\sP
|
193
193
|
````````
|
194
|
-
``
|
194
|
+
``\s\s\s\s``
|
195
195
|
````````
|
196
196
|
``
|
197
197
|
``
|
198
198
|
|
199
|
-
|
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
|
-
|
206
|
+
#\sR
|
207
207
|
````````
|
208
|
-
``
|
208
|
+
``\s\s\s\s``
|
209
209
|
````````
|
210
210
|
`````
|
211
|
-
``
|
211
|
+
``\s\s\s``
|
212
212
|
|
213
|
-
|
213
|
+
#\sS
|
214
214
|
````````
|
215
215
|
``
|
216
216
|
````````
|
217
|
-
|
217
|
+
\s\s\s\s\s\s``
|
218
218
|
````````
|
219
219
|
|
220
|
-
|
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
|
-
|
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
|
-
|
235
|
-
``
|
236
|
-
``
|
237
|
-
``
|
238
|
-
\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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/termclock/start.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
module Termclock
|
2
2
|
def self.start(colour1, colour2, colour3, colour4,
|
3
3
|
textcolour1 = nil, textcolour2 = nil,
|
4
|
-
|
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 =
|
104
|
-
v_col2 =
|
105
|
-
v_col3 =
|
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(
|
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(
|
185
|
+
chomped = x.chomp(EMPTY).+(NEWLINE)
|
184
186
|
gr = chomped.gradient(*colours[i], bold: bold, italic: italic)
|
185
|
-
|
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
|
-
|
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
|
data/lib/termclock/string.rb
CHANGED
@@ -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!(
|
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 {
|
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.
|
19
|
-
_ul = LS::PrettifyBytes.
|
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 "%-
|
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 =
|
30
|
-
|
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
|
-
|
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 "%-
|
43
|
-
" | #{sprintf "%
|
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
|
-
|
47
|
-
|
48
|
-
"
|
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
|
-
|
52
|
-
|
53
|
-
"
|
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
|
-
|
56
|
-
|
57
|
-
"
|
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
|
-
|
86
|
+
EMPTY
|
72
87
|
end
|
73
88
|
|
74
89
|
os = "\u{1F427} Distrib: #{LS::OS.distribution} #{LS::OS.machine}#{os_v}"
|
75
90
|
|
76
|
-
|
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
|
-
|
79
|
-
\s#{
|
80
|
-
|
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
|
data/lib/termclock/version.rb
CHANGED
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
|
+
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-
|
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.
|
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.
|
26
|
+
version: 1.5.1
|
27
27
|
description: A clock for Linux VTE
|
28
28
|
email:
|
29
29
|
- souravgoswami@protonmail.com
|