Skip to content

mryll/tickerbar

Repository files navigation

tickerbar

AUR version License: MIT

A multi-market price ticker for Waybar: crypto, stocks & indices, commodities, forex, Treasury yields, and fiat currencies in one module — with no API key.

tickerbar in Waybar

A compact line in your bar — hover for the full, color-coded table:

tickerbar tooltip

Why tickerbar?

  • Many markets, one widget, no API key. Crypto (CoinGecko), US stocks & indices, commodities and Treasury yields (CNBC), forex (ECB / Frankfurter) and fiat — each from the best free, key-less source. Track BTC, NVDA, the S&P 500, gold, the US 10Y and EUR/USD side by side.
  • Never breaks your bar. Any failure — a dead API, a rate limit, a malformed response, even a corrupt config — still prints valid Waybar JSON and exits 0. A down provider never blanks the others.
  • A tooltip worth opening. A column-aligned table grouped by asset class, color-coded up/down, that wraps long watchlists into stacked columns (great for narrow/vertical monitors) and picks up your Omarchy theme colors.
  • Market-hours aware. Closed markets aren't polled and show ⏸ closed — only crypto runs 24/7.
  • Argentine market, too. As a bonus, full BYMA support via data912: the blue/MEP dollar plus local stocks, bonds, CEDEARs and ONs in pesos.

The tooltip groups your watchlist by asset class and wraps into columns as it grows:

tickerbar tooltip with a large watchlist

Features

  • Crypto prices with 24h change (CoinGecko) — pick the quote currency per asset (usd, ars, …)
  • Argentine dollar: oficial, blue, MEP/bolsa, CCL, etc. (DolarAPI), buy/sell/mid side
  • Forex pairs (Frankfurter v2)
  • Stocks/indices with no key via CNBC (AAPL, .SPX); optional Finnhub with a free key
  • Commodities, indices & Treasury yields with no key via friendly aliases (gold, wti, vix, us10y) — yields render as a percent
  • Argentine market (BYMA) with no key via data912 — acciones, bonos, CEDEARs, ONs (in ARS)
  • Multi-column tooltip (tooltip_rows_per_column) so large watchlists wrap instead of growing tall, with a column cap (tooltip_max_columns) that stacks extra columns into bands below — fits narrow/vertical monitors
  • Optional intraday low–high range per row (tooltip_range) for CNBC-backed assets (stocks, indices, commodities, rates)
  • Market-hours aware: closed markets aren't polled (built-in calendars) and show ⏸ closed
  • Compact bar with a configurable format, or opt-in rotating "ticker-tape" mode
  • Per-provider caching with TTLs and rate-limit (HTTP 429) backoff
  • CSS classes for bar styling: lifecycle (ok/partial/stale/error) + direction (up/down/flat/mixed)
  • Nerd Font, emoji, or ASCII icon sets
  • Written in Rust — single binary, no runtime dependencies

Requirements

Installation

Arch Linux (AUR)

yay -S tickerbar

From source

git clone https://github.com/mryll/tickerbar.git
cd tickerbar
make install PREFIX=~/.local

Or system-wide: sudo make install.

Configuration

tickerbar reads ~/.config/tickerbar/config.toml. Copy the example to get started:

mkdir -p ~/.config/tickerbar
cp config.example.toml ~/.config/tickerbar/config.toml
[display]
mode = "fixed"          # "fixed" | "rotate"
rotate_interval = 5     # seconds per asset (rotate mode only)
max_on_bar = 3          # assets shown on the bar (fixed mode)
icons = "nerd"          # "nerd" | "emoji" | "ascii"
# Bar placeholders: {label} {price} {change_pct} {arrow} {glyph}
bar_format = "{glyph} {label} {price} {arrow}{change_pct}"

[[asset]]
label = "BTC"
provider = "coingecko"
id = "bitcoin"          # CoinGecko coin id
quote = "usd"           # any CoinGecko vs_currency (usd, ars, eur, …)

[[asset]]
label = "Blue"
provider = "dolarapi"
casa = "blue"           # oficial | blue | bolsa | contadoconliqui | tarjeta | mayorista | cripto
side = "sell"           # buy | sell | mid

[[asset]]
label = "EUR/USD"
provider = "frankfurter"
base = "eur"
quote = "usd"

Providers

Provider Asset class API key Notes
coingecko Crypto No id + quote (vs_currency). 24h change included.
dolarapi Argentine peso No casa + side. Uses the provider's own update timestamp.
frankfurter Forex No base + quote. Reference rates (daily).
cnbc Stocks/indices No symbol — plain ticker (AAPL) or index with a leading dot (.SPX, .IXIC, .DJI).
commodity Commodities No symbol — friendly alias (gold, silver, wti, brent, natgas, copper, platinum, palladium) or any raw CNBC symbol (@GC.1). Via CNBC.
index Indices No symbol — friendly alias (vix, sp500, nasdaq, dow, dax, ftse, nikkei, hangseng) or raw (.VIX). Via CNBC.
rate Treasury yields No symbolus10y, us2y, us30y, us5y. Rendered as a percent (e.g. 4.53%). Via CNBC.
data912 Argentine market (BYMA) No panel (acciones/bonos/cedears/corp) + symbol (e.g. ALUA, GD35, MELI). ARS, ~2h delay.
finnhub Stocks/indices Yes (free) symbol. Token via FINNHUB_TOKEN env var.
stooq Stocks/indices No symbol (e.g. aapl.us). Best-effort; often anti-bot-walled → n/d.

Note

Stocks/indices work with no key via cnbc (CNBC's public quote endpoint, batched). It's an unofficial endpoint, so treat it as delayed/best-effort — tickerbar is not a live trading feed. If you want a documented/keyed source instead, use finnhub with a free key:

export FINNHUB_TOKEN=your_free_token   # from https://finnhub.io; sent as a header, never in a URL

Note

BTC/ARS via CoinGecko uses CoinGecko's market ARS (≈ official), not the blue dollar. Pricing crypto at the blue rate (cross-conversion) is intentionally not done in this version.

Presets

Don't want to hand-pick symbols? Print a curated, ready-to-paste watchlist and append it to your config:

tickerbar --list-presets       # starter, crypto-top, megacap, indices-global, fx-majors, commodities, rates
tickerbar --preset crypto-top >> ~/.config/tickerbar/config.toml

starter is a balanced cross-market set (crypto, a megacap, an index, gold, a Treasury yield, and a forex pair) — a good first config.

Market hours

By default tickerbar does not poll a market while it's closed — it serves the last close from cache and marks the panel ⏸ closed in the tooltip. Built-in calendars (timezone- and DST-aware via chrono-tz): crypto 24/7; BYMA (data912) Mon–Fri 10:30–17:00 ART; US stocks (cnbc/finnhub/stooq) Mon–Fri 09:30–16:00 ET; ECB forex (frankfurter) weekdays. Commodities, indices and rates (commodity/index/rate) are always polled in this version (commodities trade nearly 24/5) — they have no ⏸ closed badge.

[market_hours]
enabled = true                 # master switch (default)

[market_hours.providers.cnbc]
enabled = false                # disable gating for one provider (e.g. a non-US stock via cnbc)

Note

Stock providers (cnbc/finnhub/stooq) assume US hours; disable their gating if you track a non-US instrument through them. Exchange holidays are not accounted for — only weekly session hours.

Theming (Omarchy)

Tooltip and bar colors are read from the active Omarchy theme at ~/.config/omarchy/current/theme/colors.toml on every run — the accent, the up/down green/red, and the foreground/background all follow your theme (light themes included). On non-Omarchy systems a built-in dark palette is used as a fallback.

Gruvbox Catppuccin Latte Everforest
Gruvbox Catppuccin Latte Everforest

Waybar integration

Add a custom module to ~/.config/waybar/config:

"custom/tickerbar": {
  "exec": "tickerbar",
  "return-type": "json",
  "interval": 60,
  "tooltip": true,
  "signal": 8
}

Then place "custom/tickerbar" in one of your modules-* arrays. Force a refresh anytime with:

pkill -RTMIN+8 waybar

Style it in ~/.config/waybar/style.css using the emitted classes:

#custom-tickerbar.up    { color: #98c379; }
#custom-tickerbar.down  { color: #e06c75; }
#custom-tickerbar.stale { opacity: 0.6; }
#custom-tickerbar.error { color: #e06c75; }

Development

cargo test                          # unit + never-crash tests (offline)
cargo test --features integration   # real-API smoke tests (network; set FINNHUB_TOKEN for the finnhub one)
cargo clippy --all-targets -- -D warnings
cargo fmt

Related

  • claudebar — Claude AI usage widget for Waybar
  • codexbar — OpenAI Codex usage widget for Waybar
  • logibar — Logitech battery widgets for Waybar
  • meteobar — Weather widget for Waybar (Open-Meteo)
  • Omarchy — Beautiful, modern & opinionated Linux distribution
  • Waybar — Status bar for Wayland compositors

About

A multi-market price ticker for Waybar — crypto, stocks, indices and forex in one module, no API key. Class-grouped multi-column tooltip, market-hours aware, Nerd Font/emoji icons, Omarchy theming, AUR. Argentine BYMA support included.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors