Объём командной строки для каждого приложения (возможно, amixer или pactl?)

Я могу изменить главный том с помощью этих команд (из командной строки), и он затрагивает все приложения, но как изменить громкость только для одного приложения (например, XMMS )?

 amixer -q set Master toggle # or pactl set-sink-mute 0 toggle amixer -q sset Master 5%+ unmute # or pactl set-sink-volume 0 -- -5% amixer -q sset Master 5%- unmute # or pactl set-sink-volume 0 -- +5% 

pacmd dump # интересен, и есть приложения GUI, которые могут это сделать: gnome-control-center sound , pavucontrol

Вы можете получить количество входов с командой pactl.

 $ pactl list sink-inputs ... Sink Input #7119 Driver: protocol-native.c Owner Module: 12 Client: 6298 Sink: 0 ... Properties: application.icon_name = "google-chrome" media.name = "Playback" application.name = "Chromium" ... 

Используя это число (# 7119), вы указываете входной сигнал приемника.

 $ pactl set-sink-input-mute 7119 toggle 

Он идентифицирует приложение с свойством application.icon_name . Ниже приводится случай, чтобы указать Chromium.

 #!/bin/sh LANGUAGE="en_US" app_name="Chromium" current_sink_num='' sink_num_check='' app_name_check='' pactl list sink-inputs |while read line; do \ sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p') if [ "$sink_num_check" != "" ]; then current_sink_num="$sink_num_check" else app_name_check=$(echo "$line" \ |sed -rn 's/application.name = "([^"]*)"/\1/p') if [ "$app_name_check" = "$app_name" ]; then echo "$current_sink_num" "$app_name_check" pactl set-sink-input-mute "$current_sink_num" toggle fi fi done