Skip to main content

PyPixoo

PyPI version License: MIT CI codecov

The Pixoo library you can trust — BDD-first, well-tested.

A Python library for the Divoom Pixoo 64 display. This is a true behavior-driven design project: behaviors come first.

What is this?

PyPixoo is a reimplementation of Pixoo control logic, inspired by pixoo but built with BDD from the ground up.

V2 is a breaking redesign that aligns with native Pixoo command behavior:

  • Native sequence upload via Draw/SendHttpGif and Draw/CommandList
  • Native GIF playback via Device/PlayTFGif
  • Native text overlays via Draw/SendHttpText / Draw/ClearHttpText
  • Native cycle orchestration across uploaded sequences and GIF sources

Requirements

  • Python 3.9+
  • A Divoom Pixoo 64 on your network (for real-device use; specs use a mock)

Installation

cd PyPixoo
pip install -e ".[dev]"

Run specs

behave

Specs mock the device HTTP layer, so no Pixoo is required.

CLI

A pypixoo command is installed with the package. Set PIXOO_REAL_DEVICE=1 to send to a real device.

# Fill the display with a color (hex or name)
PIXOO_REAL_DEVICE=1 pypixoo fill FF00FF

# Load an image (resized to 64×64) and push
PIXOO_REAL_DEVICE=1 pypixoo load-image path/to/image.png

# Upload native sequence
PIXOO_REAL_DEVICE=1 pypixoo upload-sequence frame1.png frame2.png --speed-ms 120 --mode command_list --chunk-size 40

# Native GIF playback
PIXOO_REAL_DEVICE=1 pypixoo play-gif-url https://example.com/anim.gif
PIXOO_REAL_DEVICE=1 pypixoo play-gif-file divoom_gif/1.gif
PIXOO_REAL_DEVICE=1 pypixoo play-gif-dir divoom_gif/

# Cycle ordered items
PIXOO_REAL_DEVICE=1 pypixoo cycle --item 'sequence=120:frame1.png,frame2.png' --item 'url=https://example.com/anim.gif' --loop 2

If the pypixoo script is not on your PATH, run python -m pypixoo.cli instead.

Usage

Basic display

from pypixoo import Pixoo

pixoo = Pixoo("192.168.0.37")
pixoo.connect()
pixoo.fill(255, 0, 68)
pixoo.push()

Native HttpGif upload

from pypixoo import GifFrame, GifSequence, Pixoo, UploadMode
from pypixoo.buffer import Buffer

pixoo = Pixoo("192.168.0.37")
pixoo.connect()

buf = Buffer.from_flat_list([c for _ in range(64 * 64) for c in (255, 0, 0)])
seq = GifSequence(frames=[GifFrame(image=buf, duration_ms=120)], speed_ms=120)

pic_id = pixoo.upload_sequence(seq, mode=UploadMode.COMMAND_LIST, chunk_size=40)
print(pic_id)

Native GIF playback and overlays

from pypixoo import GifSource, Pixoo, TextOverlay

pixoo = Pixoo("192.168.0.37")
pixoo.connect()

pixoo.play_gif(GifSource.url("https://example.com/anim.gif"))

# Overlay text is intended for uploaded HttpGif playback contexts
pixoo.send_text_overlay(TextOverlay(text="hello", x=0, y=40, text_id=1))
pixoo.clear_text_overlay()

Mix static and generated frames, then upload natively

from pypixoo import FrameRenderer, Pixoo, StaticFrameSource, UploadMode, WebFrameSource
from pypixoo.buffer import Buffer

buf = Buffer.from_flat_list([80] * (64 * 64 * 3))
renderer = FrameRenderer(
    sources=[
        StaticFrameSource(buffer=buf, duration_ms=100),
        WebFrameSource(url="http://localhost:6006/?t=0.1", timestamps=[0.0, 0.5, 1.0], duration_per_frame_ms=150),
    ]
)
seq = renderer.precompute()

pixoo = Pixoo("192.168.0.37")
pixoo.connect()
pixoo.upload_sequence(seq, mode=UploadMode.COMMAND_LIST)

Cycle orchestration

from pypixoo import CycleItem, GifSource, Pixoo

pixoo = Pixoo("192.168.0.37")
pixoo.connect()

items = [
    CycleItem(source=GifSource.url("https://example.com/a.gif")),
    CycleItem(source=GifSource.tf_file("divoom_gif/1.gif")),
]
handle = pixoo.start_cycle(items, loop=2)
handle.wait()

Project structure

PyPixoo/
  storybook-app/      # React components for 64×64 (Storybook)
  features/           # Gherkin specs (behave)
  src/pypixoo/        # Library
  tests/              # Unit tests (pytest)
  PR_FAQ.md           # Project rationale and roadmap
  AGENTS.md           # Agent guide

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypixoo-2.3.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypixoo-2.3.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file pypixoo-2.3.0.tar.gz.

File metadata

  • Download URL: pypixoo-2.3.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypixoo-2.3.0.tar.gz
Algorithm Hash digest
SHA256 18f312688d5016d382bbff4ddc7f72d856a925c640122cc169edc34c6bed7b37
MD5 82183a6f67d0c49ab6b8f7092a62c745
BLAKE2b-256 5fd29af7b979ead8d7221e5b1fde46f000789a8f62deaca6ea8ee6723355247c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypixoo-2.3.0.tar.gz:

Publisher: ci.yml on endymion/PyPixoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypixoo-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: pypixoo-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypixoo-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5700da08bd4de5c1dbaab52b5e6a95a94b3b2720cdd811aaf46df03e411b2537
MD5 a15479068a785963bdd1073205fe0cc0
BLAKE2b-256 8c1d92284af940776562eb12ffe7bdb5a065d2e934c8746ff2b2334102876a57

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypixoo-2.3.0-py3-none-any.whl:

Publisher: ci.yml on endymion/PyPixoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page