Le Stream Deck sur Linux: tout le potentiel révélé

Très convoité des streamers, le Stream Deck n’est malheureusement pas supporté sur Linux. Une solution plutôt limitée existe pour le rendre compatible, mais c’est grâce aux commandes de terminal qu’on peut en tirer un bon potentiel sur Linux.

Le Stream Deck, du fabricant Elgato, c’est un appareil vous offrant des boutons faciles d’accès afin de faciliter le déclenchement de certaines actions durant votre diffusion. Non seulement il permet d’actionner plus rapidement des raccourcis-clavier, mais il peut aussi faire jouer des effets sonores, interagir avec votre salle de discussion sur Twitch ou même envoyer des messages sur votre compte Twitter. Chaque bouton contient un écran LCD afin de présenter du texte et/ou une image. Une belle pièce de technologie!

Mais, comme de raison, Linux n’intéresse pas Elgato. L’appareil n’ayant pas de mémoire interne, il dépend du logiciel qui l’accompagne pour accomplir sa mission. Sans ça, il ne sert à rien. Mais alors, on fait quoi? On évite le Stream Deck? Si vous n’avez pas peur de bidouiller et d’utiliser des commandes terminal, vous verrez que le Stream Deck sait trouver sa pertinence sur Linux. 🙂

Streamdeck-UI: un pas en avant dans notre quête

Si vous avez déjà recherché sur la compatibilité du Stream Deck sur Linux, vous avez sans doute pris connaissance du logiciel Streamdeck-UI, sorti en octobre dernier. Développé par Timothy Crosley, il ajoute une interface graphique à un pilote libre, python-elgato-streamdeck. Ainsi on peut facilement configurer et utiliser notre Stream Deck en associant aux boutons un raccourci-clavier, une commande de terminal ou une entrée de texte.

C’est peu comparé aux possibilités offertes par l’application maison d’Elgato, mais je vous présenterai comment contourner une partie de ces limitations. C’est parti!

Installation de Streamdeck-UI

Timothy Crosley a mis en ligne des instructions très claires à suivre pour installer Streamdeck-UI sur les distributions Ubuntu et Fedora. Les directives pour Ubuntu fonctionneront probablement aussi sur Mint et Pop_OS; sous toutes réserves. Pour les distributions Manjaro et Arch, le logiciel est dans les dépôts AUR sous le nom streamdeck-ui-git.

Configuration de Streamdeck-UI

Assurez-vous que votre Stream Deck soit bien branché et lancez le logiciel streamdeck.

Les pages, ce sont comme des dossiers. Vous pouvez tout rassembler sur la page 1, mais vous pouvez aussi organiser en plusieurs pages, en prévoyant des boutons pour le déplacement d’une page à l’autre. Pour configurer un bouton, cliquez dessus et utilisez les champs à droite. Chaque champ est optionnel.

  • Image: l’image qui apparaîtra sur le bouton.
  • Text: le texte qui apparaîtra sur le bouton.
  • Command: la commande terminal qui sera exécutée par le bouton.
  • Press Keys: le raccourci-clavier à associer au bouton. Le raccourci doit être tapé à la main (par exemple: ctrl+shift+h).
  • Switch Page: la page à atteindre si on appuie sur le bouton.
  • Brightness +/-: pour changer la luminosité du Stream Deck à partir d’un bouton.
  • Write Text: pour entrer un bloc de texte (utile pour un copier-coller fréquent, par exemple).

Les raccourcis-clavier

Votre premier réflexe sera sans doute de vouloir entrer des raccourcis-clavier correspondant à ceux utilisés dans OBS Studio… mais je vous arrête tout de suite. Car voyez-vous, Streamdeck-UI a un très gros défaut: les raccourcis-clavier qu’il émet ne peuvent pas être entendus par un logiciel qui n’est pas en focus (par exemple, OBS Studio pendant que vous êtes dans votre jeu). Pas très pratique! Il y a moyen d’assigner à un bouton une commande pour donner le focus à un autre logiciel (OBS, par exemple) pour lui envoyer ensuite des raccourcis, mais selon le jeu joué, ça pourrait être un aller très rapide vers un game over! 😛

Ce que nous utiliserons, plutôt, c’est la commande xdotool. Cette commande sert, à partir du terminal, à faire exécuter une action par l’interface graphique de l’ordinateur. Nous l’utiliserons pour simuler des touches de clavier. Voici la commande telle que je l’utilise:

xdotool key -delay 50 alt+shift+3

qui enverra les touches ALT + SHIFT + 3 avec un délai de 50 millisecondes. Le délai est nécessaire pour que ça fonctionne, ne me demandez pas pourquoi. Mais le raccourci-clavier ainsi envoyé pourra être récupéré par n’importe quel logiciel, qu’il soit en focus ou non.

Les effets sonores

Contrairement à l’application maison d’Elgato, Streamdeck-UI ne prévoit aucune fonction pour jouer des fichiers sonores. Deux choix s’offrent à nous: une commande de terminal ou un raccourci-clavier.

Via une commande de terminal

La commande ffplay permet de faire jouer un fichier audio dans un terminal. Nous allons donc l’appeler depuis Streamdeck-UI.

ffplay -nodisp -autoexit /home/utilisateur/dossier/fichier.ogg

Très important, aucun espace ne peut figurer dans le chemin vers le fichier audio. Ni les guillemets ni les barres obliques inversées ne vous aideront. Nommez donc vos fichiers et dossiers impliqués en conséquence.

Le volume des fichiers audio joués via ffplay sera régi par celui de l’audio du bureau dans OBS Studio. Je rédigerai d’ailleurs un autre billet prochainement pour vous donner quelques astuces afin de gagner en flexibilité à cet égard.

Via un raccourci-clavier et une source audio dans OBS

OBS Studio prévoit la possibilité d’insérer une source audio dans votre scène et de la faire lire à chaque fois qu’elle est rendue visible. Assignez un raccourci-clavier à la visibilité de cette source, puis envoyer ce raccourci avec xdotool tel que décrit plus haut.

Ça aussi, ça fera l’objet d’un prochain billet, très bientôt.

Instructions directes vers OBS Studio

Si Streamdeck-UI ne s’intègre pas directement à OBS Studio pour le contrôler, ce dernier dispose d’une interface réseau lui permettant de recevoir des directives de l’extérieur. Et devinez quoi? Un logiciel pour terminal est disponible pour envoyer de telles requêtes! 🙂

Installez tout d’abord le plugin OBS-WebSocket. Lorsque vous l’activerez, ne mettez pas de mot de passe. Installez ensuite le logiciel obs-cli. Ce sera le nom de la commande à utiliser.

Son auteur propose ici une liste des paramètres possibles, à lire sans faute avant d’utiliser obs-cli. Par défaut, la commande sera dirigée vers l’ordinateur sur lequel vous êtes. Pour vous donner un exemple d’utilisation de cette commande:

obs-cli toggle-sceneitem Jeu « Image de victoire »

ici je change la visibilité de la source Image de victoire sur la scène Jeu.

Si votre Stream Deck est sur le même ordinateur que OBS Studio, l’utilisation d’obs-cli et d’OBS-WebSocket ne présente toutefois pas vraiment d’avantage par rapport aux raccourcis-clavier.

Un script Bash pour exécuter plusieurs commandes?

Chaque bouton ne peut contenir qu’une seule commande de terminal. Mais peut-on y exécuter un script qui, lui, en contiendra plusieurs? Certainement! 🙂 On appelera le script avec cette commande:

bash /home/utilisateur/dossier/script.sh

Mais attention:

  • aucun espace ne peut figurer dans le nom du fichier de script ni son chemin;
  • ne combinez pas cette possibilité avec la commande alias, car un script appelé via un alias fera geler le Stream Deck.

C’est pas parfait, mais c’est pas si mal, non?

On est enfin arrivé à la fin du billet! Comme vous le voyez, si vous n’avez pas peur d’apprivoiser les commandes de terminal, vous pouvez retrouver une grosse partie du potentiel du Stream Deck d’Elgato qui ne vous est pas accessible dans Streamdeck-UI. Sky is the limit… ou presque! 🙂

Avez-vous d’autres idées d’utilisation qui deviennent possible en combinant Streamdeck-UI et les commandes de terminal? Dites-moi les en commentaire!

Bon stream! 🙂

Laisser un commentaire