led-ticker-flair
Homage sprite-trail transitions and text animations for led-ticker — four sprite families plus the propeller animation, all in one wheel.
Sprite-trail transitions
| Family | Type strings | Notes |
|---|---|---|
| nyancat | nyancat.forward / nyancat.reverse / nyancat.alternating |
Hi-res sprite on bigsign |
| pokeball | pokeball.forward / pokeball.reverse / pokeball.alternating |
Hi-res sprite + :pokeball.ball: emoji |
| pacman | pacman.forward / pacman.reverse / pacman.alternating |
Low-res |
| sailor_moon | sailor_moon.forward / sailor_moon.reverse / sailor_moon.alternating |
Low-res |
Unofficial fan homage. These sprites are the property of their respective rights holders and are not covered by this project's license. Non-commercial homage only; no affiliation or endorsement. See the repo NOTICE.
Propeller animation
flair.propeller spins a message widget's text in-plane on visit entry — a full-rotation ease-out that settles flat — then holds the text readable for the rest of the configured hold time. Transitions wait for the spin to finish before starting.
Requires led-ticker-core >= 4.3; with core >= 4.5 the spin runs at physical resolution on scaled displays (bigsign) — hi-res fonts and emoji spin too.
Config
Shorthand (all defaults):
[[playlist.section.widget]]
type = "message"
text = "Hello!"
animation = "flair.propeller"
Inline table with overrides:
[[playlist.section.widget]]
type = "message"
text = "Hello!"
animation = {style = "flair.propeller", revolutions = 3, spin_seconds = 1.5, direction = "ccw"}
Knobs
| Field | Type | Default | Notes |
|---|---|---|---|
revolutions |
int ≥ 1 | 2 |
Full rotations completed during the spin-in |
spin_seconds |
float > 0 | 1.0 |
Wall-clock duration of the spin phase |
direction |
"cw" / "ccw" |
"cw" |
Clockwise or counter-clockwise |
Caveats
- Message widgets only.
flair.propellerworks onmessagewidgets (core rejectsanimationon other widget types at config load). GIF / image text-overlay widgets acceptanimationbut ignore the rotation. - Hi-res fonts spin on scaled displays (core >= 4.5). Mid-spin renders at half detail and sharpens at settle; animated
font_colorproviders (rainbow, color_cycle, shimmer) freeze during the spin and resume at settle. On scale-1 displays hi-res fonts still display unrotated —led-ticker validatewarns (rule 63) for that case only. - Short-hold warning. If
spin_secondsoutlastshold_timethe spin is truncated and the text appears only briefly.led-ticker validatewarns (rule 62). Either raisehold_timeor lowerspin_seconds/revolutions. - Phase resets each visit. The spin restarts from the beginning every time the widget enters the rotation — it does not continue mid-spin across section cycles.
Spinout transition
flair.spinout spins the outgoing widget's on-screen content like a propeller — starting at rest and accelerating — then cuts to the incoming widget. The outgoing section's background color holds through the entire spin.
Requires led-ticker-core >= 4.6.
Config
[[playlist.section]]
transition = "flair.spinout"
With knobs:
[[playlist.section]]
transition = {type = "flair.spinout", revolutions = 3, direction = "ccw"}
Knobs
| Knob | Default | Meaning |
|---|---|---|
revolutions |
2 |
Full turns over the transition window (int >= 1). No landing constraint — the cut replaces the content mid-whirl. |
direction |
"cw" |
"cw" or "ccw". |
Notes
- Spin duration comes from the standard
[transitions] duration— no separate timing knob. - Pairs with the propeller animation for a full cycle:
animation = "flair.propeller"spins the text in, it rests, thentransition = "flair.spinout"spins it out. - The outgoing content is snapshotted at its final position (scrolled text spins from where it stopped); colors freeze during the spin, same as the propeller animation.
- A propeller-animated widget cut off mid-spin (hold shorter than its spin —
led-ticker validaterule 62 warns) enters the spinout with a residual angle and briefly compounds rotations; cosmetic and sub-second.
Install
Part of the led-ticker-plugins monorepo. Install:
pip install "git+https://github.com/JamesAwesome/led-ticker-plugins.git@flair-v0.1.0#subdirectory=plugins/flair"
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file led_ticker_flair-0.3.0.tar.gz.
File metadata
- Download URL: led_ticker_flair-0.3.0.tar.gz
- Upload date:
- Size: 57.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d494d04f774884fe1b8feef768e93fd6be004aa58fff93cfe1f7c28271199482
|
|
| MD5 |
42027576b5db16f1a3aab57f215b7210
|
|
| BLAKE2b-256 |
f221ba63c5e25d616a2873d26fa77f58fd5dc0a47dcd3fbaaff437585e853594
|
Provenance
The following attestation bundles were made for led_ticker_flair-0.3.0.tar.gz:
Publisher:
publish.yml on JamesAwesome/led-ticker-plugins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
led_ticker_flair-0.3.0.tar.gz -
Subject digest:
d494d04f774884fe1b8feef768e93fd6be004aa58fff93cfe1f7c28271199482 - Sigstore transparency entry: 2060942464
- Sigstore integration time:
-
Permalink:
JamesAwesome/led-ticker-plugins@9a61a6067b0de80f0d14a9fb47d6ca7d8a87070e -
Branch / Tag:
refs/tags/flair-v0.3.0 - Owner: https://github.com/JamesAwesome
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a61a6067b0de80f0d14a9fb47d6ca7d8a87070e -
Trigger Event:
release
-
Statement type:
File details
Details for the file led_ticker_flair-0.3.0-py3-none-any.whl.
File metadata
- Download URL: led_ticker_flair-0.3.0-py3-none-any.whl
- Upload date:
- Size: 45.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7670db7e21cf6e38a2785197d26974c4a9ddc7e8a7432bba86477a7d5ee7abf
|
|
| MD5 |
3675b60ffa87102e33f9129c42b91f2b
|
|
| BLAKE2b-256 |
51e7070347839deaa7994ede8ceba948e0dcb304fa1b8e647b27201ad8b373af
|
Provenance
The following attestation bundles were made for led_ticker_flair-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on JamesAwesome/led-ticker-plugins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
led_ticker_flair-0.3.0-py3-none-any.whl -
Subject digest:
b7670db7e21cf6e38a2785197d26974c4a9ddc7e8a7432bba86477a7d5ee7abf - Sigstore transparency entry: 2060943276
- Sigstore integration time:
-
Permalink:
JamesAwesome/led-ticker-plugins@9a61a6067b0de80f0d14a9fb47d6ca7d8a87070e -
Branch / Tag:
refs/tags/flair-v0.3.0 - Owner: https://github.com/JamesAwesome
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a61a6067b0de80f0d14a9fb47d6ca7d8a87070e -
Trigger Event:
release
-
Statement type: