KMix's DCOP interface is documented in its manual. Here is the shell script in its entirety. It's also available as a downloadable file to save you some typing.
#!/bin/bash
#
# Adjusts speaker volume in KDE. Does so by sending DCOP commands to KMix.
set -e
function get_volume {
dcop kmix Mixer0 masterVolume
}
function set_volume {
dcop kmix Mixer0 setMasterVolume "$1"
}
if [[ "$1" == "" ]]; then
get_volume
exit 0
fi
old_volume=$(get_volume)
operator="$1"
shift
case "$operator" in
+)
set_volume $(expr $(get_volume) + 5)
;;
-)
set_volume $(expr $(get_volume) - 3)
;;
*)
echo >&2 Unrecognized operator "$operator". Use + to increase and - to decrease volume.
exit 1
esac
I have saved this file with the name speaker-volume. When this script is run without any arguments, it prints the current volume level. When passed "+" as the argument it increases the volume by a small amount, and decreases it when "-" is passed as the argument.
$ ./speaker-volume
58
$ ./speaker-volume +
$ ./speaker-volume
61
$ ./speaker-volume -
$ ./speaker-volume
57
(You may notice that the increase and decrease in the volume is not accurate; I don't know why it is so. +5 and -3 work reasonably well on my T60p laptop running Kubuntu Hardy. You may have to tweak these numbers to suit your computer/taste.)
Tip: To make it easy to adjust volume, you can define global shortcut keys as described in my post about adjusting screen brightness.