termclock 0.1.2 → 0.1.3
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 +8 -1
- data/lib/termclock.rb +0 -5
- data/lib/termclock/main.rb +46 -18
- data/lib/termclock/parse_characters.rb +8 -8
- data/lib/termclock/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 746cefa7bb14ad6ea4c2886b3631047a1d28eaf65a23709f69dd53a1af139929
|
|
4
|
+
data.tar.gz: 5f71dfabd6b0608b41f7707d89d09521b2d1121d8206f5279d67be242fd49850
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac18271d58739a9061f6c582d031f2bcd8e329259069681e8abb253a14af60307fb3253ff8468509afdc01057e2f802cbe1c32ba7d08a91c5df2ab944b65adc3
|
|
7
|
+
data.tar.gz: 83e4ebc5a42e09cc880bd11468730266d8807b8aee72a873b04e8acf1867bcc9ae6500e13909ed421a37b6888c6bcaea9e8764ab5b0d6c7f6f0c0e02374af75c
|
data/exe/termclock
CHANGED
|
@@ -26,7 +26,14 @@ begin
|
|
|
26
26
|
chars = ARGV.find { |x| x[/\A\-(\-character|char)=.*\z/] } &.split(?=) &.at(1)
|
|
27
27
|
Termclock::ParseCharacters.transform_characters!(chars[0]) if chars
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
_refresh_time = ARGV.find { |x| x[/\A\-(\-refresh|r)=.*\z/] } &.split(?=) &.at(1)
|
|
30
|
+
refresh_time = _refresh_time ? _refresh_time.to_f : 0.1
|
|
31
|
+
|
|
32
|
+
text_colours = ARGV.find { |x| x[/\A\-(\-text\-colour|tc)=.*\z/] } &.split(?=) &.at(1) &.split(?,)
|
|
33
|
+
|
|
34
|
+
abort("Text colours need 2 colours. Example: -tc=55f,3ce3b5") if text_colours && text_colours.length != 2
|
|
35
|
+
|
|
36
|
+
Termclock.start(*colours, *text_colours, sleep: refresh_time)
|
|
30
37
|
rescue Interrupt, SignalException
|
|
31
38
|
print "\e[H\e[2J\e[3J"
|
|
32
39
|
ensure
|
data/lib/termclock.rb
CHANGED
data/lib/termclock/main.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
module Termclock
|
|
2
|
-
|
|
2
|
+
COLOURTERM = ENV.key?('COLORTERM')
|
|
3
|
+
CLEAR = COLOURTERM ? "\e[H\e[2J\e[3J" : "\e[H"
|
|
4
|
+
|
|
5
|
+
def self.start(colour1, colour2, colour3, colour4, textcolour1 = nil, textcolour2 = nil, sleep: 0.1)
|
|
3
6
|
newline = ?\n.freeze
|
|
4
7
|
space = ?\s.freeze
|
|
5
8
|
|
|
@@ -44,8 +47,17 @@ module Termclock
|
|
|
44
47
|
colours = [rs1, gs1, bs1].transpose.zip([rs2, gs2, bs2].transpose)
|
|
45
48
|
colours.unshift(colours[0])
|
|
46
49
|
colours.push(colours[-1])
|
|
50
|
+
|
|
51
|
+
# Text colours
|
|
52
|
+
tc1 = textcolour1 ? hex2rgb(textcolour1) : hex2rgb('5555ff')
|
|
53
|
+
tc2 = textcolour2 ? hex2rgb(textcolour2) : hex2rgb('3ce3b5')
|
|
54
|
+
|
|
47
55
|
cpu_usage = 0
|
|
48
56
|
cpu_usage_t = Thread.new { }
|
|
57
|
+
|
|
58
|
+
current_net_usage = ''
|
|
59
|
+
current_net_usage_t = Thread.new { }
|
|
60
|
+
|
|
49
61
|
message_time = Time.now.to_i - 5
|
|
50
62
|
message = ''
|
|
51
63
|
message_temp = ''
|
|
@@ -69,7 +81,6 @@ module Termclock
|
|
|
69
81
|
}
|
|
70
82
|
|
|
71
83
|
i = -1
|
|
72
|
-
|
|
73
84
|
while true
|
|
74
85
|
i += 1
|
|
75
86
|
time_now = Time.now
|
|
@@ -99,34 +110,50 @@ module Termclock
|
|
|
99
110
|
end
|
|
100
111
|
|
|
101
112
|
time = time_now.strftime("%H %M %S %2N").split.join(splitter)
|
|
102
|
-
art = Termclock::ParseCharacters.display(time)
|
|
113
|
+
art = Termclock::ParseCharacters.display(time).lines
|
|
103
114
|
|
|
104
|
-
art_aligned = art.
|
|
115
|
+
art_aligned = art.each_with_index do |x, i|
|
|
105
116
|
chomped = x.chomp(''.freeze).+(newline)
|
|
106
117
|
gr = chomped.gradient(*colours[i])
|
|
107
118
|
x.replace(space.*(width./(2.0).-(chomped.length / 2.0).abs.to_i + 1) + gr)
|
|
108
119
|
end.join
|
|
109
120
|
|
|
110
|
-
|
|
121
|
+
vertical_gap = "\e[#{height./(2.0).-(art.length / 2.0).to_i + 1}H"
|
|
111
122
|
|
|
112
123
|
unless cpu_usage_t.alive?
|
|
113
124
|
cpu_usage_t = Thread.new { cpu_usage = LS::CPU.usage(0.25) }
|
|
114
125
|
end
|
|
115
126
|
|
|
116
|
-
|
|
127
|
+
unless current_net_usage_t.alive?
|
|
128
|
+
current_net_usage_t = Thread.new do
|
|
129
|
+
_m = LS::Net.current_usage(0.25)
|
|
130
|
+
|
|
131
|
+
_dl = LS::PrettifyBytes.convert_short_binary(_m[:received], precision: 0)
|
|
132
|
+
_ul = LS::PrettifyBytes.convert_short_binary(_m[:transmitted], precision: 0)
|
|
133
|
+
|
|
134
|
+
current_net_usage = "\u{1F4CA} Curr. DL/UL: #{sprintf "%-7s", _dl} | #{sprintf "%7s", _ul}"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
cpu = "\u{1F9E0} CPU: #{sprintf "%5s", cpu_usage}% (#{LS::CPU.count_online} / #{LS::CPU.count})"
|
|
117
139
|
|
|
118
140
|
battery = if LS::Battery.present?
|
|
119
141
|
stat = LS::Battery.stat
|
|
120
142
|
emoji = LS::Battery.charging? ? "\u{1F4A1}" : "\u{1F50B}"
|
|
121
|
-
"
|
|
143
|
+
plug = LS::Battery.charging? ? "\u{1F50C} " : ''.freeze
|
|
144
|
+
"#{emoji} Battery: #{stat[:charge].to_i}% (#{plug}#{stat[:status]})"
|
|
122
145
|
else
|
|
123
146
|
''.freeze
|
|
124
147
|
end
|
|
125
148
|
|
|
149
|
+
user = "\u{1F481} User: #{LS::User.get_current_user.capitalize}"
|
|
150
|
+
hostname = "\u{1F4BB} Hostname: #{LS::OS.hostname}"
|
|
151
|
+
|
|
126
152
|
_m = LS::Net.total_bytes
|
|
127
|
-
ip = "\u{1F30F} IP: #{LS::Net.ipv4_private}"
|
|
128
|
-
|
|
129
|
-
"
|
|
153
|
+
ip = "\u{1F30F} IP Addr: #{LS::Net.ipv4_private}"
|
|
154
|
+
|
|
155
|
+
net_usage = "\u{1F4C8} Totl. DL/UL: #{sprintf "%-7s", LS::PrettifyBytes.convert_short_binary(_m[:received], precision: 0)}"\
|
|
156
|
+
" | #{sprintf "%7s", LS::PrettifyBytes.convert_short_binary(_m[:transmitted], precision: 0)}"
|
|
130
157
|
|
|
131
158
|
_m = LS::Memory.stat
|
|
132
159
|
memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_binary(_m[:used].to_i * 1024)}"\
|
|
@@ -144,18 +171,19 @@ module Termclock
|
|
|
144
171
|
" (#{_m[:used].to_i*(100).fdiv(_m[:total].to_i).round(2)}%)"
|
|
145
172
|
|
|
146
173
|
process = "\u{1F9EE} Process: #{LS::Process.count}"
|
|
174
|
+
message_final = message.rjust(message_align).+(_caret).gradient(tc1, tc2, exclude_spaces: true)
|
|
147
175
|
|
|
148
|
-
max_l = [process, ip, battery, net_usage].map(&:length).max
|
|
176
|
+
max_l = [hostname, process, ip, battery, current_net_usage, net_usage].map(&:length).max + 4
|
|
149
177
|
|
|
150
|
-
info = <<~EOF.gradient(
|
|
151
|
-
\s#{
|
|
152
|
-
\s#{
|
|
153
|
-
\s#{
|
|
154
|
-
\s#{
|
|
178
|
+
info = <<~EOF.gradient(tc1, tc2, exclude_spaces: true)
|
|
179
|
+
\s#{user}#{?\s.*(width.-(user.length + max_l).abs)}#{hostname}
|
|
180
|
+
\s#{cpu}#{?\s.*(width.-(cpu.length + max_l).abs)}#{battery}
|
|
181
|
+
\s#{memory}#{?\s.*(width.-(memory.length + max_l).abs)}#{ip}
|
|
182
|
+
\s#{swap}#{?\s.*(width.-(swap.length + max_l).abs)}#{current_net_usage}
|
|
183
|
+
\s#{fs}#{?\s.*(width.-(fs.length + max_l).abs)}#{net_usage}
|
|
155
184
|
EOF
|
|
156
185
|
|
|
157
|
-
print "#{CLEAR}#{info}#{
|
|
158
|
-
"#{message.rjust(message_align).+(_caret).gradient(*colours[1], exclude_spaces: true)}"
|
|
186
|
+
print "#{CLEAR}#{info}#{vertical_gap}#{art_aligned}\n#{message_final}"
|
|
159
187
|
|
|
160
188
|
if gc_compact && time_now.to_i > gc_compacted
|
|
161
189
|
GC.compact
|
|
@@ -73,11 +73,11 @@ module Termclock
|
|
|
73
73
|
```````
|
|
74
74
|
|
|
75
75
|
# :
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
\u2B29\u2B29
|
|
77
|
+
\u2B29\u2B29
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
\u2B29\u2B29
|
|
80
|
+
\u2B29\u2B29
|
|
81
81
|
|
|
82
82
|
# $
|
|
83
83
|
\s\s
|
|
@@ -290,17 +290,17 @@ module Termclock
|
|
|
290
290
|
end
|
|
291
291
|
|
|
292
292
|
def display(c)
|
|
293
|
-
j = [
|
|
293
|
+
j = []
|
|
294
294
|
|
|
295
|
-
c.upcase.
|
|
296
|
-
@@characters.fetch(x, x).split(
|
|
295
|
+
c.upcase.each_char { |x|
|
|
296
|
+
@@characters.fetch(x, x).split(NEWLINE)
|
|
297
297
|
.each_with_index { |z, i|
|
|
298
298
|
_j = j[i]
|
|
299
299
|
_j && _j << z || j[i] = z
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
-
j.join(
|
|
303
|
+
j.join(NEWLINE)
|
|
304
304
|
end
|
|
305
305
|
end
|
|
306
306
|
end
|
data/lib/termclock/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: termclock
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
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-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: linux_stat
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.3.
|
|
19
|
+
version: 1.3.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.3.
|
|
26
|
+
version: 1.3.1
|
|
27
27
|
description: A clock for Linux VTE
|
|
28
28
|
email:
|
|
29
29
|
- souravgoswami@protonmail.com
|