#!/bin/bash set +x #trap read debug # v 1.0, built for yggdrasil-3 # This script handles a variety of different audio configurations, as requested by the window manager (Awesome) # Interfaces # These functions should automatically adjust the interface variable if the interface changes. # This is especially a problem with SPK_FACE is it will change when the monitor is swapped. MIC_VOL=6554 # This is 10%, also marked as base in Pavucontrol MIC_FACE=alsa_input.pci-0000_00_1b.0.`pactl list cards|awk -F ":" '/alsa_card.pci-0000_00_1b.0/{while (!match($0,"Active Profile")) getline;print $4;exit;}'` SPK_FACE=alsa_output.pci-0000_01_00.1.`pactl list cards|awk -F ":" '/alsa_card.pci-0000_01_00.1/{while (!match($0,"Active Profile")) getline;print $3;exit;}'` B326HK=alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2 B326HKS=output:hdmi-stereo-extra2 PG279Q=alsa_output.pci-0000_01_00.1.hdmi-stereo PG279QS=output:hdmi-stereo NVIDIA_CARD=alsa_card.pci-0000_01_00.1 # Functions MUTE_MIC() ( pactl set-source-mute $MIC_FACE toggle; IS_MUTED_MIC=`pactl list sources|awk '/'$MIC_FACE'/{while (!match($0,"Mute")) getline;print $2;exit;}'` if [ $IS_MUTED_MIC = no ] then notify-send "Microphone" "Is Unmuted" else notify-send "Microphone" "Is Muted" fi ) FIX_MIC() ( pactl set-source-volume $MIC_FACE $MIC_VOL; notify-send "Microphone" "Volume set to $(VOL_MIC)" ) MON_WHICH() ( echo $SPK_FACE|awk -F "." '{print $4}' ) SWAP_SPK() ( if [ $SPK_FACE == "$B326HK" ] then pactl set-card-profile $NVIDIA_CARD $PG279QS notify-send "Monitor Speakers" "Switched to PG279Q" elif [ $SPK_FACE == "$PG279Q" ] then pactl set-card-profile $NVIDIA_CARD $B326HKS notify-send "Monitor Speakers" "Switched to B326HK" else notify-send "Monitor Speakers" "Alternate output selected, ABORTING" fi #pactl # In progress notify-send "Monitor Speakers" "Switched output to: $SPK_FACE" ) LOWR_SPK() ( pactl set-sink-volume $SPK_FACE -5%; notify-send "Monitor Speakers" "Volume set to $(VOL_SPK)" ) RISE_SPK() ( pactl set-sink-volume $SPK_FACE +5%; notify-send "Monitor Speakers" "Volume set to $(VOL_SPK)" ) MUTE_SPK() ( pactl set-sink-mute $SPK_FACE toggle; IS_MUTED_SPK=`pactl list sinks|awk '/'$SPK_FACE'/{while (!match($0,"Mute")) getline;print $2;exit;}'` if [ $IS_MUTED_SPK = no ] then notify-send "Monitor Speakers" "Is Unmuted" else notify-send "Monitor Speakers" "Is Muted" fi ) # Volume tests VOL_MIC() ( pactl list sources|awk '/'$MIC_FACE'/{while (!match($0,"Volume")) getline; print $5; exit; }' ) VOL_SPK() ( pactl list sinks|awk '/'$SPK_FACE'/{while (!match($0,"Volume")) getline; print $5; exit; }' ) # Process input commands case $1 in micmute)MUTE_MIC;; miclkvl)FIX_MIC;; spkmute)MUTE_SPK;; spkvlup)RISE_SPK;; spkvldn)LOWR_SPK;; spkswap)SWAP_SPK;; *)echo "Audio Control: No valid command specified"; notify-send "Audio Control: Error" "No valid command specified";; esac