50 lines
1.3 KiB
Perl
Executable File
50 lines
1.3 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use Time::HiRes qw(usleep);
|
|
sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
|
|
|
|
$maxvolume = 32768;
|
|
|
|
if ( $ARGV[0] eq "-show" ) {
|
|
$showmute = 1;
|
|
} else {
|
|
$showmute = 0;
|
|
}
|
|
|
|
$sound = `/usr/bin/amixer sget Master`;
|
|
$mute = trim(`/usr/bin/amixer sget Master | grep "Front Left:" | awk '{print \$6}'`);
|
|
$curvol = int(`cat /tmp/curvol`);
|
|
$stepval = int($maxvolume * 0.1);
|
|
@mixer = split(/\n/, $sound);
|
|
#if ( index($mixer[@mixer-1], "[on]") > 0 ) {
|
|
if ( $mute eq "[on]" ) {
|
|
if ( $showmute ) {
|
|
exit 0;
|
|
} else {
|
|
$newvol = 0;
|
|
for ( $i=$curvol; $i>=0; $i-=$stepval ) {
|
|
usleep(65*1000);
|
|
if ( $i < 0 ) { $newvol = 0; } else { $newvol = $i; }
|
|
system("/usr/bin/amixer -q sset Master $newvol");
|
|
}
|
|
if ( $newvol != 0 ) { system("/usr/bin/amixer -q sset Master 0"); }
|
|
system("/usr/bin/amixer -q sset Master mute");
|
|
exit 1;
|
|
}
|
|
} else {
|
|
if ( $showmute ) {
|
|
exit 1;
|
|
} else {
|
|
system("/usr/bin/amixer -q sset Master 0");
|
|
system("/usr/bin/amixer -q sset Master unmute");
|
|
$newvol = 0;
|
|
for ( $i=$stepval; $i<=$curvol; $i+=$stepval ) {
|
|
usleep(65*1000);
|
|
$newvol = $i;
|
|
system("/usr/bin/amixer -q sset Master $i");
|
|
}
|
|
if ( $newvol != $curvol ) { system("/usr/bin/amixer -q sset Master $curvol"); }
|
|
exit 0;
|
|
}
|
|
}
|