amixer2019 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/amixer2019.rb +70 -0
- metadata +70 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5dfdb9a4e50a13b93c71f65cf4d3c76a616d508dafa0c422c5b918a2b24d20e9
|
4
|
+
data.tar.gz: c9de4099a34ec821f4a6bc9c738031997a07a340cbab679a2fd8001131e3d1b7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 26d66f01e2b2f8e39b4419bfcff9c1b72524500eebd519aac153161d707a97f141439bc97330a3cc73fd0f284c97195beee20905435d7801e20b359180801fc7
|
7
|
+
data.tar.gz: '085ab40ef1498ca606d51f05f73ac563169a88bfdf00380c4422a643250546d04bcc86596ddbb5ed88adff495a4296b6eb0a29291051309e7c7608cb82535484'
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/lib/amixer2019.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: amixer2019.rb
|
4
|
+
# description: A wrapper around the command-line program amixer.
|
5
|
+
|
6
|
+
|
7
|
+
class AMixer2019
|
8
|
+
|
9
|
+
def initialize(notch: 5, fade_interval: 0.15)
|
10
|
+
|
11
|
+
@notch, @fade_interval = notch, fade_interval
|
12
|
+
@control = `amixer scontrols`[/(?<=')[^']+/]
|
13
|
+
query(`amixer get '#{@control}'`)
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
# fades the volume up or down to the volume percentage
|
18
|
+
|
19
|
+
def fade(raw_val, interval: @fade_interval)
|
20
|
+
|
21
|
+
val = raw_val.to_i
|
22
|
+
return 'volume must be between 0 and 100' if val < 0 or val > 100
|
23
|
+
|
24
|
+
@volume.method(val > @volume ? :upto : :downto).call(val.to_i).each do |x|
|
25
|
+
sleep interval; setvol(x.to_s + '%')
|
26
|
+
end
|
27
|
+
|
28
|
+
@volume
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def mute() sset 'mute' end
|
33
|
+
def muted?() @muted end
|
34
|
+
def unmute() sset 'unmute' end
|
35
|
+
def vol_down() setvol(-@notch) end
|
36
|
+
def vol_up() setvol(+@notch) end
|
37
|
+
def volume() @volume end
|
38
|
+
def volume=(val) setvol(val) end
|
39
|
+
|
40
|
+
alias vol volume
|
41
|
+
alias vol= volume=
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def sset(switch)
|
46
|
+
query(`amixer sset '#{@control}' #{switch}`)
|
47
|
+
end
|
48
|
+
|
49
|
+
def setvol(val)
|
50
|
+
|
51
|
+
return sset(val) if val.is_a?(String) and val =~ /%$/
|
52
|
+
|
53
|
+
if val.to_i + @volume >= 0 and val.to_i + @volume <= 100 then
|
54
|
+
sset("%s%%" % [@volume + val.to_i])
|
55
|
+
else
|
56
|
+
@volume
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def query(r)
|
62
|
+
|
63
|
+
h = r.match(/(?<volume>\d+)%\] \[(?<toggle>on|off)\]/)
|
64
|
+
@volume = h[:volume].to_i
|
65
|
+
@muted = h[:toggle] == 'off'
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: amixer2019
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMjEyMjA1NjQxWhcN
|
15
|
+
MjAwMjEyMjA1NjQxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCj2ebI
|
17
|
+
aXA2kNyU35wvUgvRDbPtlFB6wUi5z0NBjLh9RsLZlQ17XygDRRNP6RVA8KD5q/Te
|
18
|
+
x2hMhG4LQure4O2bzDJFceC2H4m5GsucgskbAbs+iNevWC4acbTFcq4FUoL5ZfWD
|
19
|
+
pud2dltQWEXEpQr9nLCAfnM0l8LnXhmH3jG3/ufzo7bLZePeCHswrOWQz9ZyyBXr
|
20
|
+
zToeKT8tJ9irfEfLO8KTD9NGI7k/MXb80WZ3OJRMbw8UIFC6KfA6sYHXY7i0ILe+
|
21
|
+
mMVZiC9Ph2WtHOnRabV5jov2mf2sDGkqAHOPvxMBjOIaxOJkPHAl0eB7yRV8cqPK
|
22
|
+
iEwTaA85Y/+EkwWVtxRp3MdQVWP/yAP/IlBySrnZJbqYqHLypd60v5HhqNRiNR+E
|
23
|
+
aveP8TdP+UKAAqnUpntx6yC9BcYMWLyY+y4CvIzoY0sByvJaq/1xvDWM0iK6r9rW
|
24
|
+
93FbUziElVORatR+LB4icRQilSoX24DsVqUObS+SLlqdP60B5jY3GgDvEWkCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU0aZMYevC
|
26
|
+
r0Yc+lJx+fwvW5loQL0wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAcJ5PMyass59t81ILbmjN4UUvCFzXNvDxBTWBB4jB
|
29
|
+
PMoAqUdMqUf2F/FGLXnJf5GQOvR5dBmJs6XeLlkjda2gMM/iAgwZKCc8HQblFDM3
|
30
|
+
LHOVdlC1btwrcnsCtLBnLkxhF4z55zl+dyNl7nbLpf61MOyaaXr5DmPNtIjT4jzO
|
31
|
+
4i83tLB2jb3+N3zXz62agkuc17Anis3q+RU1NnjRvVCcsQv+P2Fq21ND+6OBLc1a
|
32
|
+
mfpKqMSV6J9PcI/apADAympcQOmG500hHZH8baeq9AmE71WNd2S42EaGTspil+hX
|
33
|
+
o5jSpZbUmiIF9bZ1ystEK3YybOTaaqiWTITmy1onwGE3bXyTod0hRjgCanDwux/b
|
34
|
+
Duf82k9CokSrSxNXNCiLCTH/pOn7vx2bijOdeCrfRYswMZ8mUCaVnXeOIVEVUn43
|
35
|
+
xrnDkXQ5UbsMkpilAR42JzG+WOWh62UFBl2t20injcEiEa+yyKBuBqK8JRjUfoZi
|
36
|
+
YQVkc3AYB+yLRWF745GX8hKx
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2019-02-12 00:00:00.000000000 Z
|
39
|
+
dependencies: []
|
40
|
+
description:
|
41
|
+
email: james@jamesrobertson.eu
|
42
|
+
executables: []
|
43
|
+
extensions: []
|
44
|
+
extra_rdoc_files: []
|
45
|
+
files:
|
46
|
+
- lib/amixer2019.rb
|
47
|
+
homepage: https://github.com/jrobertson/amixer2019
|
48
|
+
licenses:
|
49
|
+
- MIT
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubygems_version: 3.0.2
|
67
|
+
signing_key:
|
68
|
+
specification_version: 4
|
69
|
+
summary: 'A wrapper around the command-line program amixer. #amixer #alsamixer #raspberrypi'
|
70
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|