Как упоминалось в комментариях, Alsa, похоже, не может прозрачно переключать запущенные программы с одного устройства воспроизведения на другое, поскольку это особенность PulseAudio. Более того, выбор устройства в микшере Alsa будет определять только элементы управления микшером, отображаемые в микшере , и не имеет никакого отношения к звуковой карте по умолчанию, используемой медиаплеерами.
Существует минималистичный графический интерфейс Python, который позволяет обнаруживать подключенные USB-ЦАП и устанавливать устройство воспроизведения по умолчанию для новых программ: asouncdconf-gtk
(изначально написано для Ubuntu с учетом Xfce). Эта утилита использует скрипт Python asoundconf . Даже если он не поддерживался в течение нескольких лет (последнее обновление в 2011 году), похоже, он все еще нормально работает в современных дистрибутивах (например, Ubuntu 14.04).
Пользователи Ubuntu могут устанавливать пакеты из asoundconf PPA (официально Ubuntu имеет достойную поддержку только для PulseAudio). Для Arch Linux см. Есть ли простой способ переключить звуковые карты воспроизведения? . Но поскольку это код Python, он может работать практически в любом дистрибутиве: возьмите Ubuntu .deb
, распакуйте его с помощью диспетчера архивов и поместите сценарии в / usr / bin
.
В официальных документах Alsa указывается только ручной способ установки звуковой карты по умолчанию :
Найдите соответствующую карту:
cat /proc/asound/cards
и затем вставьте / etc / asound.conf
:
defaults.pcm.card 1
defaults.ctl.card 1
Замена «1» на номер соответствующей карты. Вряд ли вы хотели бы делать что-то часто, например с USB-ЦАП.
Дополнительная литература:
Напрямую сjq
:
jq '{ starts: [ { attributeList: (.starts[].attributeList
| map(select(.name == "Command"))) }] }' file.json
Выход:
{
"starts": [
{
"attributeList": [
{
"name": "Command",
"value": "bash"
}
]
}
]
}
Вот два варианта получения желаемого результата.
Вы можете удалить ненужные ключи:
jq 'del(.attributes,.name) |
.starts[].attributeList = map(.[].attributeList[] | select(.name == "Command"))'
Или вы можете выбрать только те клавиши (и ), которые вам нужны:
jq 'to_entries | map(select(.key == "starts")) | from_entries |
.starts[].attributeList = map(.[].attributeList[] | select(.name == "Command"))'
Оба дают один и тот же результат. Также, если вам нужны starts
и ends
в последнем случае,вы можете просто добавить дополнительные операторы or
:map(select((.key == "starts") or (.key == "ends")))
.