Я використовую цей сценарій як вирішення:
#!/bin/bash
CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`
if [[ $CURRENT_STATE == '[on]' ]]; then
amixer set Master mute
else
amixer set Master unmute
amixer set Front unmute
amixer set Headphone unmute
fi
Я зробив різницю amixer scontents
перед тим, як зателефонувати amixer set Master mute
і після виклику, і вимкнути все, що використовує GUI, щоб зрозуміти, що потрібно вимкнути.
- Зі звуком на тип
amixer scontents > ~/before
(ви отримаєте файл зі статусом усіх звукових каналів)
- Потім перемкніть гучність за допомогою
amixer set Master toggle
- Створіть другий файл статусу шанелі за допомогою
amixer scontents > ~/after
- Знову перемкніть звук, за допомогою
amixer set Master toggle
якого слід повернути гучність до рівня перед першою командою перемикання
- Створіть третій файл за допомогою
amixer scontents > ~/afterafter
Тепер у вас є три файли, в яких повідомляється про стан звукових каналів, використовуваних для нормального звуку, які вимкнено amixer set Master toggle
і які не вмикаються знову, повторно відключивши звук з тією ж командою.
Щоб легко порівняти файли та побачити відмінності (канали, які вимкнено і після цього не ввімкнеться), ви можете скористатись meld
Центром програмного забезпечення. Почніть це, відкрийте три файли, і на панелі прокрутки ви побачите, де між файлами є відмінності. Використовуйте знайдені імена шанелю, щоб додати їх до описаного вище сценарію.