Fais entrer le reste de ta musique
Un plugin apporte une source musicale extérieure dans rox. rox parcourt cette source, la cherche, la lit sans blanc et garde ce que tu lui demandes, dans les mêmes panneaux et la même file d'attente que les fichiers de ton disque.
Ce qu'est un plugin
Un plugin est un dossier contenant un petit manifeste et un programme. Le programme peut être un script Python ou un binaire natif, et il parle à rox par son entrée et sa sortie standard. rox le lance la première fois que quelque chose en a besoin et le redémarre s'il plante. Cinq plantages en dix minutes l'arrêtent jusqu'à ce que tu le désactives puis le réactives.
Ce qu'un plugin peut faire tient en une courte liste : lister et chercher dans un catalogue, synchroniser des collections dans ta bibliothèque, servir de l'audio, faire tourner une radio, renvoyer vers ses propres pages web, et ajouter des panneaux prédéfinis sous son nom. Il ne peut pas ajouter de boutons, changer l'apparence de rox ni toucher aux autres panneaux. Les plugins apportent des sources, et le lecteur autour reste entièrement celui de rox.
Parcourir une source
Chaque plugin actif obtient une entrée sous Ajouter un panneau > Plugins, qui ouvre un panneau Sources externes sur sa source. Le panneau liste les dossiers, playlists et albums du plugin, cherche, affiche les pochettes et en charge davantage au défilement. La page d'accueil d'un service figure au premier niveau du panneau, donc elle est là sans un clic.
Ce que le panneau montre d'autre dépend du plugin. Des puces au-dessus d'une liste basculent entre les vues du plugin, comme une recherche limitée aux albums. Des étagères de pochettes défilent latéralement, et une page qui n'a que des pochettes se replie en grille. Des colonnes que le service connaît et que tes tags ignorent, comme un nombre de téléchargements, se trient d'un clic sur leur en-tête. Pendant qu'une piste du plugin joue, le premier niveau la montre avec ce qui vient ensuite.

Lire et garder
Les pistes d'un plugin vont dans la file d'attente, les playlists et l'historique comme tes propres fichiers, et se lisent sans blanc à la suite. Une piste qui coupe en cours de route se reconnecte et reprend au même endroit. Un flux en direct venu d'un plugin obtient la pause et le tampon direct, comme une station de radio.
Lire une piste ne l'ajoute pas à ta bibliothèque, c'est Ajouter à la bibliothèque qui la garde. Survole une collection et clique sur sa coche pour garder toute la collection. Elle se synchronise dans ta bibliothèque, suit la collection quand elle change, et s'ouvre depuis là même avec le plugin arrêté ou le réseau coupé.
Ouvrir dans le navigateur et Copier le lien mènent à la page d'une piste ou d'un album sur le service, depuis n'importe où ses pistes apparaissent dans rox. Le scrobbling est désactivé sauf si le plugin le demande, et c'est alors un interrupteur sur la ligne du plugin.
Radio
Un plugin avec une radio ajoute Lire des pistes proches à ses pistes, albums, playlists et artistes. Un album, une playlist ou un artiste joue d'abord ses propres pistes, alors qu'une piste sert seulement de point de départ à la station et n'y est pas lue. Les choix du service alimentent ensuite la file d'attente à mesure qu'elle se vide. La lecture aléatoire passe sur Proches, et pour les pistes du plugin elle se passe de l'analyse acoustique de ta bibliothèque. Un album que tu lis depuis le panneau continue de la même façon à sa fin, au lieu de basculer sur ta bibliothèque locale.
Les pistes de la radio se lisent via le moteur propre de rox comme n'importe quelle autre piste. Elles ne rejoignent pas ta bibliothèque, la station saute ce qui a déjà joué dans la session, et elle continue après un redémarrage. Désactive Continuer la lecture dans Réglages > Lecture et la file d'attente s'arrête à sa fin.
Ce que tu approuves
Un nouveau plugin apparaît désactivé. L'activer, c'est l'approuver, et la carte que tu confirmes dit ce qu'est le plugin, ce qu'il peut faire, quels programmes il lui faut, et qu'il s'exécute comme un programme sur ton ordinateur avec tes droits.
L'approbation couvre exactement les fichiers du dossier du plugin. Si l'un d'eux change, le plugin se désactive de lui-même et affiche Modifié sur le disque jusqu'à ce que tu l'approuves à nouveau, et la carte montre alors ce qui a changé dans son manifeste. Retirer sur la page Plugins supprime les pistes, les collections synchronisées, les réglages et l'approbation du plugin, et laisse son dossier tranquille.
Écris le tien
Un plugin parle JSON-RPC, un message par ligne sur l'entrée et la sortie standard, donc n'importe quel langage qui lit et écrit des lignes fait l'affaire. Le guide des plugins couvre le manifeste, chaque méthode, les délais et comment l'audio atteint le lecteur. Le bouton Guide des plugins sur la page Plugins l'ouvre pour la version que tu utilises.
Deux exemples sont dans le dépôt. tones génère des tonalités sinusoïdales et des accords, c'est celui pour apprendre le protocole. Internet Archive utilise chaque partie optionnelle contre un vrai catalogue, avec étagères d'accueil, vues, colonnes, radio et liens, en Python sans rien de plus que la bibliothèque standard.
Le mode développeur sur la ligne d'un plugin approuve tes propres modifications de son dossier jusqu'à ce que tu quittes rox, et redémarre le plugin à chaque sauvegarde. Chaque nouvelle partie du protocole est optionnelle. rox liste celles qu'il prend en charge au démarrage du plugin, un plugin n'a donc jamais besoin d'envoyer quelque chose qu'un rox plus ancien refuserait.
Où les plugins s'arrêtent
- Les plugins apportent des sources et rien d'autre. Un composant foobar2000 qui changeait le lecteur lui-même, comme un nouveau panneau ou un DSP, n'a pas d'équivalent en plugin.
- Les plugins en script ont besoin de Python 3 sur la machine. La plupart des installations Linux l'ont, Windows et macOS généralement pas.
- Le Flatpak ne voit pas les programmes installés sur l'hôte. Il inclut Python 3, donc un plugin qui n'a besoin que de la bibliothèque standard tourne tel quel. Tout le reste doit être livré dans le dossier
binpropre au plugin. - Une app Mac lancée depuis le Finder ou le Dock n'hérite pas du PATH de ton shell, donc les programmes installés avec Homebrew apparaissent comme manquants tant que tu n'ajoutes pas le dossier de Homebrew à Dossiers de programmes dans Réglages > Plugins.
- Sous Windows, les fichiers d'un plugin natif ne peuvent pas être remplacés pendant qu'il tourne. Désactive-le avant de mettre à jour son dossier.
Essaies-en un
Télécharge rox, active Activer les plugins dans Réglages > Plugins, et copie l'exemple Internet Archive dans le dossier des plugins. Il a besoin du réseau et d'aucun compte.
Sous Arch ou NixOS ? Installe-le plutôt depuis l'AUR ou le flake Nix.