This file is indexed.

/usr/bin/kmixremote is in kmix 4:4.13.0-0ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
124
125
126
127
128
#!/bin/sh
#################################################################################
# kmixremote - control kmix from a script.
#
# Set volume
# Get volume
# Mute
#################################################################################

function usage
{
  echo "Usage:"
  echo "List mixers    #   $0 list"
  echo "List controls  #   $0 list <mixer>"
  echo "Get Volume     #   $0 get  [--master | <mixer> <control>]"
  echo "Set Volume     #   $0 set  [--master | <mixer> <control>] <0..100>"
  echo "Mute/Unmute    #   $0 mute [--master | <mixer> <control>] true|false"
  echo 
}

function exit_with_error
{
  echo "Error: $1"
  echo 
  usage
  exit 1
}

# Prints the mixer DBUS ID's on the console. leaving out the "/Mixers/" prefix
function listMixers
{
  qdbus org.kde.kmix /Mixers org.freedesktop.DBus.Properties.Get org.kde.KMix.MixSet mixers | cut -f3 -d/
  errorCode=$?
  if test $errorCode != 0; then
    echo "Error $errorCode listing mixers. KMix is not running."
  fi
}

# Prints the mixer control DBUS ID's of the given mixer on the console. leaving out the "/Mixers/" prefix
function listControls
{
  qdbus org.kde.kmix $1 org.freedesktop.DBus.Properties.Get org.kde.KMix.Mixer controls  | cut -f4 -d/
  errorCode=$?
  if test $errorCode != 0; then
    echo "Error $errorCode listing controls. KMix is not running."
  fi
}

command=""

if ! type qdbus >/dev/null  2>&1 ; then
  exit_with_error "$0 requires qdbus, but it cannot be found. Please install or check \$PATH"
fi

# Read args
while true; do
  arg=$1
  shift
  if test -z "$arg"; then
    break
  elif test "x--master" = "x$arg"; then
    mixer=`qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterMixer`
    control=`qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl`
  elif test "x--help" = "x$arg" -o "x-h" = "x$arg"; then
    usage
    exit 0
  else
    # If not a specific option, then interpret as standad args, in this order: command, mixer, control and genericArg
    if test -z "$command"; then
      command=$arg
    elif test -z "$mixer"; then
      mixer="${arg}"
    elif test -z "$control"; then
      control=$arg
    elif test -z "$genericArg"; then
      genericArg=$arg
    else
      exit_with_error "Too many aguments"
    fi
  fi
  #echo $arg
done


if test -z "$command"; then
  usage
  echo "<mixer>   - The mixer to use. Select one from the following list:"
  echo "-----------------------------------------------------------------"
  listMixers
  exit 0
elif test "xlist" = "x$command"; then
  if test -z "$mixer"; then
    listMixers
  else
    # List controls
    listControls "/Mixers/${mixer}"
  fi
  exit 0
fi

# All following commands require a mixer
if test -z "$mixer"; then
  exit_with_error "<mixer> argument missing"
fi
if test -z "$control"; then
    exit_with_error "<control> argument missing"
fi

# All following commands require a mixer and a control

targetControl="/Mixers/${mixer}/${control}"
#echo "ARGS: $command $targetControl $genericArg"

# --- EXECUTE PHASE --------------------------------------------------------------------------------------------------
if test "xget" = "x$command"; then
  # GET
  qdbus org.kde.kmix $targetControl org.freedesktop.DBus.Properties.Get org.kde.KMix.Control volume
elif test "xset" = "x$command"; then
  # SET
  qdbus org.kde.kmix $targetControl org.freedesktop.DBus.Properties.Set org.kde.KMix.Control volume $genericArg
elif test "xmute" = "x$command"; then
  # MUTE
  qdbus org.kde.kmix $targetControl org.freedesktop.DBus.Properties.Set org.kde.KMix.Control mute $genericArg
else
  exit_with_error "No such command '$command'"
fi

exit 0