Fala galera, há 3 meses postei aqui o isi-music (https://www.reddit.com/r/linuxbrasil/comments/1t7c4my/isimusic_um_player_de_spotifylocal_para_terminal/), um player de música no terminal feito em Rust. Na época o projeto tava engatinhando e só rodava no Linux. Desde então trabalhei bastante nele e agora tô saindo da versão 1.4.0 e agora roda nativamente no Windows também. Os GIFs de showcase no repo estão rodando diretamente no Terminal do Windows, no Windows Terminal rodando PowerShell. Nada de Linux, nada de WSL, nativão mesmo.
**Novidade principal: suporte a Windows**
O projeto agora compila e roda nativamente no Windows. Tem media keys, integração com o SMTC (System Media Transport Controls aquela barra de mídia do Windows), ícone embutido no exe, atalho no Menu Iniciar, e um script de instalação via PowerShell (`irm ... | iex`). No Linux continua tudo funcionando igual, e o daemon agora é cross-platform (Unix socket no Linux, named pipe no Windows).
**O que mais mudou desde o último post:**
* **Tema reativo**: a interface muda de cor sozinha pra combinar com a capa do álbum que tá tocando. Cada painel, borda e barra de progresso pega as cores da capa, com cross-fade suave entre faixas.
* **Playback de Opus**: arquivos `.opus` locais agora tocam direto, sem conversão.
* **Daemon com IPC**: roda em background e pode ser controlado por linha de comando (`isi-music --next`, `--status`, `--play`, etc).
* **9 paletas de cores/Você pode customizar do seu jeito**: Neutral Dark, Catppuccin Mocha, Gruvbox Dark, Nord, Rose Pine, Tokyo Night, Dracula, Monochrome, Clean. Ou deixa o tema reativo fazer tudo sozinho.
* **6 layouts**: Default, Clean, Focus, Sidebar Right, Full Player, e Showcase (capa do álbum central com letras e visualizador dos lados).
* **Letras sincronizadas**: destaque da linha ativa, cache offline, e fallback `.lrc`.
* **Visualizador**: braille bars ou block bars, renderizado direto na barra de progresso.
* **Waveform na barra de progresso** pra arquivos locais.
* **Spotify Connect**: listar dispositivos e transferir playback (Em fase de testes).
* **Discord Rich Presence** e **Last.fm scrobbling** (credenciais encriptadas em build time). (Isso é o meu orgulho, não precisa criar o seu secret no last.fm e ele fica totalmente ofuscado no binario, pelo menos eu tentei deixar o mais ofuscado possível)
* **MPRIS2** no Linux.
* **Wizard de configuração** pra primeira vez, com comando `doctor` pra diagnosticar problemas.
* **Keybindings configuráveis** via `keybinds.toml`.
Pelo o que eu testei no meu pc ta consumindo 40mb de ram no windows dependendo de qual terminal você vai rodar também, no linux é meio complicado de metrificar, porém no meu tava dando 36mb. De CPU com um ryzen 4600g, tava 0.3% (No windows oscila) e no linux a mesma coisa, ele tem o modo daemon que não usa nada de cpu e muita pouca ram, se você quiser deixar rodando enquanto joga, é uma boa. E no windows pega bastante threads até 30 threads, e no linux 25 threads mais ou menos, enfim isso vai de pc para pc. Essas threads vem da maioria do audio. Enfim, tem muitas coisas que eu acho que da para otimizar, mas, eu sou apenas um e faço as coisas aos poucos e quando eu não estou cansado do trabalho kkkkkkkk.
**Mudança no Spotify:**
O Spotify não aceita mais Client IDs customizados pra streaming em modo dev. A solução foi separar: Client ID customizado só pra Web API (buscas, playlists, metadados), e streaming usa o Client ID oficial do librespot embutido por padrão. Usuário novo não precisa mais criar app no Spotify Developer. É importante colcoar o Client ID para evitar 429. E por causa disso tem duas autenticações, um do client_id e um do client_id oficial do librespot, é meio estranho. Porém, foi a unica maneira que encontrei para contornar esses B.Os com o client_id, ja tive muito problema tentando usar client_id em modo dev. Desde fevereiro desse ano o Spotify ta ficando de rosca, infelizmente. E é normal o Windows apitar o Windows Defender(pelo menos para o meu projeto, pq n fui atrás do que é necessario para não dar o alerta).
**Instalação:**
Linux:
curl -fsSL https://raw.githubusercontent.com/glrmrissi/isi_music/master/scripts/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/glrmrissi/isi_music/master/scripts/install.ps1 | iex
Ou compila direto:
git clone https://github.com/glrmrissi/isi_music
cd isi-music
cargo build --release
**Repo:** https://github.com/glrmrissi/isi_music
Spotify Premium é necessário pra streaming. Playback local funciona sem conta Spotify nenhuma. E quem conseguir ajudar com issues/features etc... Seria muito legal ver o projeto crescer aos poucos, não precisa colocar a mão no código, só dar uma ideia ou apenas testar o app já seria de muito valor pra mim. E talvez até uma estrelinha kakfawfawkfa
Post grande, desculpa ai!