Pulseaudio

Sources :

Connaître le nom de chaque entrées et sorties son du pc :

$ ls /proc/asound/card*/codec* | xargs grep "\[\(Jack\|Fixed\|Both\)"

/proc/asound/card0/codec#0:  Pin Default 0x99430130: [Fixed] SPDIF Out at Int ATAPI
/proc/asound/card0/codec#0:  Pin Default 0x01014010: [Jack] Line Out at Ext Rear
/proc/asound/card0/codec#0:  Pin Default 0x01a19040: [Jack] Mic at Ext Rear
/proc/asound/card0/codec#0:  Pin Default 0x02a19050: [Jack] Mic at Ext Front
/proc/asound/card0/codec#0:  Pin Default 0x0181304f: [Jack] Line In at Ext Rear
/proc/asound/card0/codec#0:  Pin Default 0x02214020: [Jack] HP Out at Ext Front
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI
/proc/asound/card1/codec#0:  Pin Default 0x185600f0: [Jack] Digital Out at Int HDMI

Une fois ceci fait, on modifie les fichiers (dans mon cas) /usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf et /usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf.

Pour information j’ai une configuration un peu atypique car mon casque est branché à l’arrière alors que meshHaut parleurs à l’avant. Pourquoi ? Tout simplement que les appareils USB, type clé USB, branché à l’avant de ma tour ne sont pas bien détéctés alors qu’alors à l’arrière suelement un peu mieu… oui un peu (c’est un autre mystère à élucider et ca serait pour une prochaine fois ;) )

Du coup dans mon fichier analog-output-lineout.conf j’ai rajouter, avant l’include la ligne suivante:

[Element Front]
switch = off
volume = off

Et dans le fichier analog-output-headphones.conf j’ai modifier selon les paramètres suivant :

[Jack Line Out Phantom]
state.plugged = yes // j'ai juste remplacé no par yes ici !
state.unplugged = unknow
required-any = any

Au passage on peut remarquer Line Out Phantom n’est pas dans la liste de nom des sorties du PC, c’est parcque j’ai jouée avec hdajackretask avant et ducoup des truc ont été modifié dans mon système… Encore un autre mystère à résoudre !

Et en bonus voici ma commande perso que je parramètre pour changer de sortie sur i3 (C’est la commande brut à copier coller dans votre terminal) :

if [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == "analog-output-lineout" ]]; then pacmd set-sink-port 0 analog-output-headphones; elif [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == "analog-output-headphones" ]]; then pacmd set-sink-port 0 analog-output-lineout; fi

Ou en format lisible, avec variables en bonus :

#/bin/sh

headphones="analog-output-headphones"
lineout="analog-output-lineout"

if [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == $lineout ]]
then
   pacmd set-sink-port 0 $headphones
elif [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == $headphones ]]
then
   pacmd set-sink-port 0 $lineout
fi