Skip to main content

Documentation Index

Fetch the complete documentation index at: https://rockboxzig.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

gleam add rockbox

Quick start

import gleam/io
import gleam/list
import gleam/option.{None, Some}
import rockbox
import rockbox/library
import rockbox/playback

pub fn main() {
  let client = rockbox.default_client()

  case playback.current_track(client) {
    Ok(Some(track)) -> io.println("▶ " <> track.title <> " — " <> track.artist)
    Ok(None) -> io.println("Nothing is playing.")
    Error(_) -> io.println("Could not reach rockboxd.")
  }

  let assert Ok(results) = library.search(client, "dark side")
  case list.first(results.albums) {
    Ok(album) -> {
      let _ = playback.play_album(
        client, album.id,
        playback.play_options() |> playback.with_shuffle(True),
      )
      Nil
    }
    Error(_) -> Nil
  }
}

Configure

let client = rockbox.default_client()                       // localhost:6062
let client = rockbox.at(host: "192.168.1.42", port: 6062)

let client =
  rockbox.new()
  |> rockbox.url("http://192.168.1.42:6062/graphql")
  |> rockbox.connect

Highlights

  • Pipe-friendly — every API function takes the client as its first arg.
  • Tagged results — every call returns Result(value, rockbox/error.Error), so case and use flows stay flat.
  • Type-safe rules DSL — compose smart-playlist rules with rockbox/smart_playlists/rules instead of hand-written JSON.

API surface

rockbox/playback
rockbox/library
rockbox/queue
rockbox/saved_playlists
rockbox/smart_playlists
rockbox/sound
rockbox/settings
rockbox/system
rockbox/browse
rockbox/devices
rockbox/bluetooth         // Linux only

More

Full reference and rule DSL: see the Gleam SDK README on GitHub ↗.