#!/bin/bash
sink=$(pacmd list-sinks | grep '* index:')
if [[ "${sink:11:11}" -eq "1" ]]
then
echo 'usb'
else
echo 'mic'
fi
Cela revient à faire beaucoup de suppositions, car vous n'avez pas donné beaucoup d'explications sur le script ruby que vous avez collé et sur l'objectif réel.
Ce script bash script effectue un grep sur la sortie de la liste des puits de pulseaudo, où l'index est précédé d'un *. Ensuite, à partir de cette ligne, le 11ème caractère est vérifié. S'il s'agit d'un 1, l'USB s'affiche, sinon MIC.
Comme nous l'avons dit, cela suppose beaucoup de choses et ce type de programmation peut tourner mal s'il y a d'autres index en jeu, ou si vous voulez le nom de l'appareil...
Je ne connais pas i3bar ou i3blocks, mais il est possible que vous deviez définir un intervalle dans i3blocks ou envelopper le script dans une boucle while, parce qu'un script s'exécute, produit quelque chose et se termine, donc quelque chose doit continuellement le déclencher. La façon dont vous le faites est spécifique à l'i3, dont je ne sais rien. En me basant sur les pages de manuel, voici ce que j'essaierais de faire en premier lieu
[pulse]
command=/usr/local/bin/check_pulse.sh
interval=15
http://manpages.ubuntu.com/manpages/bionic/man1/i3blocks.1.html