状況に応じて、音声出力にスピーカーまたはヘッドセットを使用します。私のヘッドセットはUSBヘッドセットであるため、独自のオーディオデバイスとして動作します。
現在、右上のトレイにあるスピーカーアイコンをクリックしてオーディオ出力デバイスを切り替えます。サウンド設定を選択し、[出力]タブに移動して、必要なデバイスを選択します。
私が思うのは、USBヘッドセットを簡単に切り替えられる方法があるかどうかです。おそらく、専用のトレイアイコン、キーマッピングなどですか?
デフォルトのGnomeデスクトップでUbuntu 10.04を実行しています。
コマンドラインからデフォルトのオーディオ出力デバイスを変更するには、pacmd
Pulse Audioコマンドラインユーティリティを使用できます。
今日も同様に行う必要があり、ヘッドフォンとスピーカーを切り替えて、両方を別々のオーディオカードに接続する必要がありました。これを行うために書いたシェルスクリプトを次に示します。
#!/usr/bin/env bash
sinks=($(pacmd list-sinks | grep index | \
awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}
pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done
ノート:
pacmd
ユーティリティがリストする最初の2つのオーディオ出力デバイスが交換されます。 3つ以上のオーディオデバイスがあり、別のオーディオデバイスに交換する場合は、7行目のロジックをいくつかの条件に置き換える必要があります。さて、pavucontrol
をインストールできます。最初のタブにサウンドデバイスが選択されたアプリが表示され、手間が省けます。しかし、あなたが本当に望むのは、USBヘッドセットをデフォルトデバイスとしてマークすることです。それを接続するたびにすべてのサウンドがリダイレクトされ、プラグインするときにスピーカーに戻ります。本当に楽です。
もちろん、アプレットを使用したデバイスの切り替えも正常に機能しています。しかし、スクリプトを書くことの素晴らしい点は、それが超高速であることです。たとえば、キーボードショートカットのalt + sに配置します。したがって、ヘッドフォンからスピーカーに切り替えたいときは、Alt + sを押すだけです。
とにかく。アンドリューは言った:
3つ以上のオーディオデバイスがあり、別のオーディオデバイスに交換する場合は、7行目のロジックをいくつかの条件に置き換える必要があります。
それが私がしたことです。誰かが問題を抱えている場合に備えて、私はそれを共有します:
#!/usr/bin/env bash
#sinks=($(pacmd list-sinks | grep index | \
# awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
sinks=($(pacmd list-sinks | grep index | \
awk '{ if ($1 == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
#find active sink
active=0
for i in ${sinks[*]}
do
if [ $i -eq 0 ]
then active=$((active+1))
else break
fi
done
#switch to next sink
swap=$(((active+1)%${#sinks[@]}))
pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done
私が異なってやったことは、a)forループでアクティブなシンクを見つけることです。 b)インデックスを1増やして次のシンクに切り替えます。その後、結果をシンクの数でモジュロします。これにより、たとえば3つのシンクがある場合、(2 + 1)%3 = 0。したがって、シンクインデックス2からシンクインデックス0に切り替えます。
このようにして、スイッチは使用可能なシンクを上に移動できます。
質問はかなり古いですが、私の答えはまだGNOME 2ユーザーにとって有用かもしれません。ここで説明した正確な問題に PulseAudio Mixer Applet を使用しました。入力および出力デバイスは、パネルメニューで直接変更できます。それは私が見つけた最も便利な方法です。
スクリプトをありがとう!誰かが使用したい場合のために、入力用の部分(マイク)も追加しました。
while read line ; do
case $line in
*\*\ index*) x=1 ;;
index*) x=0 ;;
name*)
source=$(echo $line | sed -e "s/.*<//;s/>.*//")
if [[ $x = "0" ]] ; then
pacmd set-default-source $source &> /dev/null
fi ;;
esac
done < <(pacmd list-sources | grep -e alsa_input -e index)
サウンドデバイスのリストを循環するには、次のスクリプトを使用します。
#!/bin/bash
declare -i sinks=(`pacmd list-sinks | sed -n -e 's/\**[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`)
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i next_sink_index=${sinks[0]}
#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
next_sink_index=${sinks[$ord]}
break
fi
let ord++
done
#change the default sink
pacmd "set-default-sink ${next_sink_index}"
#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done
#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
notify-send -i notification-audio-volume-high --hint=string:x-canonical-private- synchronous: "Sound output switched to" "$line"
exit
fi
let ndx++
done;
すべてのクレジットは buntuフォーラム からtsvetanに送られます。
Andrewsスクリプトに基づいて作成し、notify-osdを使用して実行内容をアナウンスしました。必要に応じて、名前の付いた行を編集します。
#!/usr/bin/env bash
sinks=($(pacmd list-sinks | grep index | \
awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}
pacmd set-default-sink $swap
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done
if [ "$swap" = "0" ]; then
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Corsair 2.1 Speakers!"
else
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Logitech G930 Headset!"
fi
ラップトップの内蔵スピーカーと、ステレオに接続されているApple空港ベースステーション を切り替える方法を探していました。スイッチにホットキーを割り当てることにしました。スイッチを視覚的に確認するために、オーディオ設定ウィンドウを1秒間ポップアップし、その後wmctrlを使用してウィンドウを閉じるようにしました。
(ラップトップのこれらのキーのFn機能は音量を増減するため、ctrl + F8およびctrl + F9をホットキーとして使用したため、ctrl機能でオーディオ出力を変更するのは明らかでした。)
次の2つの(ほぼ同一の)スクリプトを使用しました。
#! /bin/bash
gnome-volume-control -p output &
sleep .7
pacmd set-default-sink 1
sleep .8
wmctrl -c "Sound Preferences"
exit
#! /bin/bash
gnome-volume-control -p output &
sleep .7
pacmd set-default-sink 0
sleep .8
wmctrl -c "Sound Preferences"
exit
最初の変更はAppleベースステーション(ctrl + F9に割り当てた)に変更され、2番目の変更は内部スピーカー(ctrl + F8)に戻ります。これは、これらがインストールされている唯一の2つの出力デバイスであると想定しています。
以下は、現在フォーカスされているウィンドウのオーディオシンクを循環させる小さなスクリプトです。 https://Gist.github.com/rif/01ffb5e3eb45d2e4e6ebb4652b3b19ce
Pacmdとxdotoolが必要です
私は同じ問題を抱えており、Ubuntu Unityデスクトップ用の小さなインジケーターアプレットを作成しました。