1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/usr/bin/env perl
use strict;
use warnings;
use Term::ANSIColor;
use Capture::Tiny qw(capture);
sub main {
my $argc = $#ARGV + 1;
if ($argc == 0) {
print "Argument needed - ["
. colored("lower", 'bold')
. " - "
. colored("raise", 'bold')
. " - "
. colored("toggle", 'bold')
. "]\n";
exit 1;
}
elsif ($argc > 1) {
print "Too many arguments, only one needed\n";
exit 2;
}
my $curr_vol = 0;
my $curr_vol_cmd = "/usr/sbin/mixer vol | /usr/bin/awk -F ':' '{print \$2}'";
if ($ARGV[0] eq "lower" || $ARGV[0] eq "raise") {
if ($ARGV[0] eq "lower") {
capture {
system('/usr/sbin/mixer', 'vol', '-5');
};
}
else {
capture {
system('/usr/sbin/mixer', 'vol', '+5');
};
}
$curr_vol = `$curr_vol_cmd`;
chomp $curr_vol;
system(
'/usr/local/bin/notify-send',
'-h',
'int:value:' . $curr_vol,
'-u',
'low',
'-t',
'1000',
'mixer-set',
'墳 Volume'
);
system('kill -68 $(pidof dwmblocks)');
exit;
}
elsif ($ARGV[0] eq "toggle") {
my $tmp_file = '/tmp/mixervol';
$curr_vol = `$curr_vol_cmd`;
chomp $curr_vol;
if ($curr_vol > 0) {
open(my $fh, '>:encoding(UTF-8)', $tmp_file);
print $fh $curr_vol;
close($fh);
capture {
system(
'/usr/sbin/mixer',
'vol',
'0'
);
};
system(
'/usr/local/bin/notify-send',
'-u',
'low',
'-t',
'1750',
'mixer-set',
'婢 Volume muted'
);
system('kill -68 $(pidof dwmblocks)');
}
else {
open(my $fh, '<:encoding(UTF-8)', $tmp_file);
$curr_vol = <$fh>;
close($fh);
capture {
system(
'/usr/sbin/mixer',
'vol',
$curr_vol
);
};
my $icon;
if ($curr_vol <= 33) {
$icon = '奄 ';
}
elsif ($curr_vol <= 66) {
$icon = '奔 ';
}
else {
$icon = '墳 ';
}
system(
'/usr/local/bin/notify-send',
'-h',
'int:value:' . $curr_vol,
'-u',
'low',
'-t',
'1750',
'mixer-set',
$icon . ' Volume restored'
);
system('kill -68 $(pidof dwmblocks)');
}
exit;
}
else {
print "Unrecognized argument: " . $ARGV[0] . "\n";
}
exit;
}
main();
__END__
|