Estou escrevendo meu próprio status personalizado para o i3/Sway que mostra um indicador de volume, e me deparei com um problema.
Gostaria de saber se há uma maneira padrão, usando ferramentas Linux padrão -- talvez ALSA ou sysfs -- para detectar se os fones de ouvido estão conectados ou não? Eu preferiria fazer dessa forma, caso eu queira mudar do Pipewire para o JACK normal em algum momento, ou algo assim.
Vou postar um segmento dessa solução "meio funcional" que consegui encontrar online (desculpe, mas não lembro quem postou isso, então posso dar os créditos a essa pessoa).
has_headset() { grep -A4 -ri "Headphone Playback Switch" /proc/asound/card*/* | grep "Amp-Out vals.*\[0x00\]*" }
Essa função has_headset()
meio que funciona, mas o problema é que se os fones de ouvido estiverem conectados E silenciados, então não funcionará. Não tenho certeza do que os valores de "Amp-Out vals" significam. Parece ser [0x80] [0x80]
quando os fones de ouvido estão desconectados, e então [0x00] [0x00]
quando os fones de ouvido estão conectados e não silenciados.
Estou usando POSIX sh, mas soluções escritas especificamente para Bash também são mais que bem-vindas!