Skip to main content

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.propeller works on message widgets (core rejects animation on other widget types at config load). GIF / image text-overlay widgets accept animation but 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_color providers (rainbow, color_cycle, shimmer) freeze during the spin and resume at settle. On scale-1 displays hi-res fonts still display unrotated — led-ticker validate warns (rule 63) for that case only.
  • Short-hold warning. If spin_seconds outlasts hold_time the spin is truncated and the text appears only briefly. led-ticker validate warns (rule 62). Either raise hold_time or lower spin_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, then transition = "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 validate rule 62 warns) enters the spinout with a residual angle and briefly compounds rotations; cosmetic and sub-second.

Fisheye animation

flair.fisheye sends a scrolling message through a stationary "fisheye lens" centered on the panel: letters enter compressed at the edges, swell as they cross the middle, and compress again on the way out — the marquee bulges through a fixed lens while the text moves through it.

Requires led-ticker-core >= 4.7. Message widgets only (v0.4.0). On scaled displays (bigsign) the whole scroll renders at half detail; the lens distortion masks it.

Config

[[playlist.section.widget]]
type = "message"
text = "FISH EYE MARQUEE"
animation = "flair.fisheye"

With knobs (a stronger lens):

[[playlist.section.widget]]
type = "message"
text = "FISH EYE MARQUEE"
animation = {style = "flair.fisheye", magnify = 1.33, edge_squeeze = 0.45}

Knobs

Knob Default Meaning
magnify 1.3 Center scale (both axes). Capped by the panel height: magnify × font line-height ≤ content_height, else the bulged text would clip and config-load raises. For the default 6×12 font in a 16-row band the ceiling is ~1.33.
edge_squeeze 0.6 Edge scale (0 < edge_squeeze ≤ 1). Lower = more edge compression = a more dramatic lens.
profile "cosine" The falloff curve from edge to center.

Notes

  • The lens is stationary; the scroll provides all the motion — so the effect is continuous with no phase, and a section can cut away at any instant.
  • Edges show more text by design. The lens is width-preserving (total scroll traversal matches an unwarped scroll), but the compressed edges reveal ~8–9 extra characters per side — the squeeze fits more in.
  • Colors stay live through the lens: a rainbow / color_cycle font_color keeps sweeping as the text scrolls (no freeze).
  • Held (non-overflowing) text shows a static center bulge — a legitimate emphasis look.

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

led_ticker_flair-0.4.0.tar.gz (59.4 kB view details)

Uploaded Source

Built Distribution

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

led_ticker_flair-0.4.0-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file led_ticker_flair-0.4.0.tar.gz.

File metadata

  • Download URL: led_ticker_flair-0.4.0.tar.gz
  • Upload date:
  • Size: 59.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for led_ticker_flair-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b5060fa0f7273cf7a11e050f56d50c8db046e6a1a080c0abc5205162c4a44cde
MD5 b0fc5b262165a82d41e0e5ca38235eb0
BLAKE2b-256 f8be6c1cf7654788e875eaf388cf53856bdb8688a41c3df5116fb2b5d2e039b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_flair-0.4.0.tar.gz:

Publisher: publish.yml on JamesAwesome/led-ticker-plugins

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

File details

Details for the file led_ticker_flair-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for led_ticker_flair-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 da9c81e4a1827d7e4770b5e0882cb34f3d2b510bca9af74979ab228abcf4463e
MD5 ad9569536b02dad61bfbe83ab043e9fe
BLAKE2b-256 27e26d3775c5a9a89e9de1273897230d260b0be72fd9eb21ff6a1585743d577a

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_flair-0.4.0-py3-none-any.whl:

Publisher: publish.yml on JamesAwesome/led-ticker-plugins

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

Release history Release notifications | RSS feed

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page