Alsamixer хочет забрать меня?

Я не смог собрать правильное решение, чтобы alsamixer правильно управлял моим звуком.

Вот мое желаемое поведение:

  1. При перезагрузке, гибернации или сне, а затем после пробуждения я хочу, чтобы все уровни alsamixer и настройки отключения звука были сохранены.
  2. Клавиша отключения звука на моей клавиатуре должна включать и выключать звук, кнопки увеличения и уменьшения громкости должны увеличивать или уменьшать громкость и, если применимо, убирать отключение звука.
  3. Когда я подключаю наушники, у них должна быть другая настройка громкости, и уровни громкости должны автоматически настраиваться. Для меня не имеет значения, меняется ли мастер, или меняются уровни наушников / динамика. Просто нужно убедиться, что это работает с клавишами регулировки громкости {вверх, вниз}.

Я использую XMonad и xbindkeys для сопоставления клавиш громкости / отключения звука с действиями. В настоящее время:

"amixer set Master 2dB+"
  XF86AudioRaiseVolume

"amixer set Master 2dB-"
  XF86AudioLowerVolume

"/path/to/mute.sh"
  XF86AudioMute

где mute.sh

FILE=$HOME/.mute
if [ -f $FILE ]; then
  amixer set Master `cat $FILE`
  rm $FILE
else
  amixer get Master\
    | grep Mono\
    | grep -P -o '[\d]{1,3}'\
    | head -n 1\
    > $FILE
  amixer set Master 0
fi

В настоящее время, когда я перезагружаю компьютер, кажется, что случайные каналы отключены. И мой сценарий отключения фактически просто устанавливает уровень громкости на ноль, что не идеально. С другой стороны, подключение наушников регулирует уровень громкости.

Любые идеи, как я мог бы сделать приглушение и перезапустить поведение лучше?

----- РЕДАКТИРОВАТЬ 1 -----

Мастер переключает звук приглушения канала динамика также:

$ amixer get Speaker | tail -n 1
  Front Right: Playback 87 [100%] [0.00dB] [on]
$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 87 [100%] [0.00dB] [off]
$ amixer set Master unmute
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 87 [100%] [0.00dB] [on]
$ amixer get Speaker | tail -n 1
  Front Right: Playback 87 [100%] [0.00dB] [off]

----- РЕДАКТИРОВАТЬ 2 -----

Переключаться странно

$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
  Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
  Front Left: Playback 87 [100%] [0.00dB] [off]
  Front Right: Playback 87 [100%] [0.00dB] [off]

$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
  Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]

1 ответ

Ваше оборудование имеет главный выключатель звука; использование amixer set Master toggle,

Чтобы включить звук, бегите amixer set Master unmute,

Вы должны быть в состоянии установить Speaker а также Headphone контролирует по-разному, и использовать Master контроль, чтобы установить общую громкость.

Ваше оборудование может автоматически отключать динамики при подключении наушников, но ваш Auto-Mute Mode управление отключено. Видимо, у вас есть программное обеспечение, которое делает некоторые.

Другие вопросы по тегам