#!/usr/bin/perl

use strict;
use constant INC => 5;

$ENV{PATH} = '/bin:/usr/bin:/usr/local/bin';
my $mixer = 'mixer';

my $action = shift;
$action =~ /^(up|down|mute|unmute)$/ or die "usage: $0 [up|down|mute]";

my ($current) = `$mixer vol` =~ /(\d+):\d+/;
die "Can't get current volume" unless defined $current;

if ($action eq 'up') {
  $current += INC;
  $current = 100 if $current > 100;
} elsif ($action eq 'down') {
  $current -= INC;
  $current = 0 if $current < 0;
} elsif ($action eq 'mute') {
  my ($speaker) = `$mixer speaker` =~ /(\d+):\d+/;
  $speaker      = $speaker ? 0 : 100;
  system "$mixer speaker $speaker:$speaker";
}

# unmute all
if ($action =~ /^(up|down)$/) {
  system "$mixer speaker 100:100";
  system "$mixer pcm     100:100";
  system "$mixer vol      $current:$current";
  system "play /opt/kde/share/sounds/KDE_Beep_ShortBeep.wav";
}

