Traga o resto da sua música para cá
Um plugin traz uma fonte de música externa para o rox. O rox navega por essa fonte, busca nela, toca sem intervalo e guarda o que você pedir, nos mesmos painéis e na mesma fila dos arquivos do seu disco.
O que é um plugin
Um plugin é uma pasta com um manifesto pequeno e um programa. O programa pode ser um script Python ou um binário nativo, e ele conversa com o rox pela entrada e saída padrão. O rox inicia ele na primeira vez que algo precisa, e reinicia se ele cair. Cinco quedas em dez minutos param o plugin até você desligar e ligar de novo.
O que um plugin pode fazer é uma lista curta: listar e buscar num catálogo, sincronizar coleções para a sua biblioteca, servir áudio, rodar uma rádio, linkar para as próprias páginas na web, e acrescentar painéis prontos sob o nome dele. Ele não pode acrescentar botões, mudar a cara do rox ou mexer em outros painéis. Plugins trazem fontes, e o player em volta continua sendo do rox.
Navegando numa fonte
Cada plugin rodando ganha uma entrada em Adicionar painel > Plugins, que abre um painel de Fontes externas sobre a fonte dele. O painel lista as pastas, playlists e álbuns do plugin, busca, mostra a capa e carrega mais conforme você rola. A página inicial de um serviço entra no nível mais alto do painel, então ela já está ali sem precisar de um clique.
O resto que o painel mostra depende do plugin. Chips sobre uma lista trocam entre as visões do plugin, tipo uma busca restrita a álbuns. Estantes de capas rolam de lado, e uma página só de capas vira uma grade. Colunas que o serviço conhece e suas tags não, tipo uma contagem de downloads, ordenam com um clique no cabeçalho. Enquanto uma faixa do plugin toca, o nível mais alto mostra ela junto com o que vem a seguir.

Tocando e guardando
As faixas do plugin entram na fila, nas playlists e no histórico como os seus próprios arquivos, e tocam sem intervalo uma atrás da outra. Uma faixa que cai no meio reconecta e continua do mesmo ponto. Um stream ao vivo de um plugin tem pausa e o buffer de rebobinar, como uma rádio.
Tocar uma faixa não a adiciona à sua biblioteca; Adicionar à biblioteca é que guarda. Passe o mouse numa coleção e clique no check dela para guardar tudo. Ela sincroniza para a sua biblioteca, acompanha a coleção conforme ela muda, e abre a partir daí mesmo com o plugin parado ou sem rede.
Abrir no navegador e Copiar link levam para a página de uma faixa ou álbum no serviço, de qualquer lugar onde as faixas dele apareçam no rox. O scrobbling fica desligado a não ser que o plugin peça, e aí é um interruptor na linha do plugin.
Rádio
Um plugin com rádio acrescenta Reproduzir similares às faixas, álbuns, playlists e artistas dele. Um álbum, playlist ou artista toca primeiro as próprias faixas, enquanto uma faixa só serve de ponto de partida para a estação e não toca nela. Depois, as escolhas do serviço mantêm a fila rodando conforme ela esvazia. A ordem aleatória passa para Similar, e para as faixas do plugin funciona sem a análise acústica da sua biblioteca. Um álbum que você toca pelo painel continua do mesmo jeito quando acaba, em vez de cair na sua biblioteca local.
As faixas da rádio tocam pelo próprio motor do rox, como qualquer outra faixa. Elas não entram na sua biblioteca, a estação pula o que já tocou nesta sessão, e continua depois de reiniciar. Desligue Continuar tocando em Configurações > Reprodução e a fila para no final.
O que você está aprovando
Um plugin novo aparece desligado. Ligar ele é a aprovação, e o cartão que você confirma diz o que o plugin é, o que ele pode fazer, quais programas ele precisa, e que ele roda como um programa no seu computador com as suas permissões.
A aprovação cobre exatamente os arquivos da pasta do plugin. Se algum deles mudar, o plugin se desliga sozinho e mostra Alterado no disco até você aprovar de novo, e aí o cartão mostra o que mudou no manifesto dele. Remover na página de Plugins apaga as faixas, coleções sincronizadas, configurações e aprovação do plugin, e deixa a pasta dele intacta.
Escreva o seu
Um plugin fala JSON-RPC, uma mensagem por linha pela entrada e saída padrão, então serve qualquer linguagem que leia e escreva linhas. O guia de plugins cobre o manifesto, cada método, os tempos limite e como o áudio chega ao player. O botão Guia de plugins na página de Plugins abre ele para a versão que você está rodando.
Tem dois exemplos no repositório. O tones gera tons e acordes senoidais, e é o exemplo para aprender o protocolo. O Internet Archive usa cada parte opcional do protocolo contra um catálogo de verdade, com estantes na home, visões, colunas, rádio e links, em Python sem nada além da biblioteca padrão.
O modo desenvolvedor na linha de um plugin aprova as suas próprias mudanças na pasta dele até você fechar o rox, e reinicia o plugin toda vez que você salva. Cada parte mais nova do protocolo é opcional. O rox lista as que ele suporta quando o plugin inicia, então um plugin nunca precisa mandar algo que um rox mais antigo recusaria.
Onde os plugins param
- Plugins trazem fontes e nada mais. Um componente do foobar2000 que mudasse o player em si, tipo um painel novo ou um DSP, não tem equivalente em plugin.
- Plugins em script precisam de Python 3 na máquina. A maioria das instalações de Linux tem, e Windows e macOS geralmente não.
- O Flatpak não enxerga programas instalados no sistema hospedeiro. Ele inclui Python 3, então um plugin que só precisa da biblioteca padrão roda do jeito que está. Qualquer outra coisa precisa vir na própria pasta
bindo plugin. - Um app de Mac aberto pelo Finder ou pelo Dock não pega o PATH do seu shell, então programas instalados com o Homebrew aparecem como ausentes até você adicionar a pasta do Homebrew em Pastas de programas nas Configurações > Plugins.
- No Windows, os arquivos de um plugin nativo não podem ser substituídos enquanto ele roda. Desligue antes de atualizar a pasta dele.
Experimente um
Baixe o rox, ligue Ativar plugins nas Configurações > Plugins, e copie o exemplo do Internet Archive para a pasta de plugins. Precisa de rede e nenhuma conta.