rox

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.

O plugin de exemplo do Internet Archive num painel de Fontes externas: um aviso no topo, linhas para navegar, estantes de capas de lançamentos, e colunas de downloads e ano.
O exemplo do Internet Archive, navegando por lançamentos Creative Commons da coleção de netlabels do Archive. Está no repositório do rox, pronto para copiar.

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

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.

Baixar o rox

Está no Arch ou no NixOS? Instale pelo AUR ou pelo flake do Nix.

v1.29.0 · Linux, macOS, Windows · todos os downloads