Skip to main content

Terminal dashboard for live FX, crypto, and commodity prices

Project description

terminex

A terminal dashboard for live prices across three asset classes:

  • FX — top 25 most-traded currencies (BIS triennial survey)
  • Crypto — top 25 coins by market cap
  • Commodities — metals, energy, and agriculturals futures

Install

Requires Python 3.11+.

pipx install terminex
# or, from a local checkout:
pipx install .
# or editable for development:
pip install -e .

Run

terminex
# or without installing:
python3 -m terminex

Keys

Key Action
1/2/3/4 Switch to FX / Crypto / Commodities / Watchlist tab
j / k Move highlighted row down / up
g / G Jump to first / last row
s Cycle sort key: default → 24h → price
S Toggle sort direction
/ Filter by symbol or name substring (live)
Esc Clear filter / close help / close converter
w Toggle watchlist pin for the highlighted row
~ Toggle sparkline column
c Open cross-rate calculator
a Create alert on highlighted row
A List / delete alerts
? Toggle help overlay
r Force refresh the current tab
q Quit

CLI options

  • --base USD — FX base currency (default: USD)
  • --tab fx|crypto|commodity|watchlist — tab to start on
  • --interval 10 — refresh interval in seconds

Filter

Press / to enter live-filter mode and start typing. The table filters as you type against both symbol and name. Enter exits filter mode (keeping the filter active); Esc cancels and clears.

Sparklines

Press ~ to toggle a 20-point sparkline column showing recent price movement. Series are built up from live polls — newly-started series start empty and fill in over time. Green means net up, red means net down. The column hides the natural units but makes trend-shape obvious at a glance.

Cross-rate calculator

Press c to open an interactive conversion prompt that resolves across all three asset classes via USD pivot. Type expressions like:

1 BTC in EUR
500 EUR in JPY
1 GC.F in EUR
1,000 USD in GBP

Press Enter to compute, Esc to close. The last 5 results stay visible above the prompt. Symbols are whatever is loaded in the fx / crypto / commodity tabs (commodity symbols use Stooq notation like GC.F, CL.F).

Price alerts

Highlight any row and press a to open the alert-creation modal. The threshold field pre-fills with the current price. While the modal is open:

  • 0-9 / . — edit threshold
  • < / > — toggle the comparison operator
  • r — toggle recurring (one-shot by default)
  • Enter — create alert
  • Esc — cancel

Alerts fire when the price crosses the threshold, not every tick while above/below it. On fire: terminal bell, toast in the status line, and a desktop notification via notify-send (Linux; silently skipped if unavailable). Non-recurring alerts auto-deactivate on first fire.

Press A for the list view — browse all alerts, type an ID and press Enter to delete. The status bar shows the active-alert count.

Alerts are stored in SQLite at ~/.local/share/terminex/terminex.db (or $XDG_DATA_HOME/terminex/) and survive across runs.

Watchlist

Highlight any row on the FX / Crypto / Commodities tabs and press w to pin it. Press 4 to see all pins across asset classes in a single unified view, sortable the same way as any other tab. Pins persist to ~/.config/terminex/watchlist.toml and survive across runs.

Tests

python3 -m unittest discover -s tests -t .

Stdlib unittest only, no extra dependencies. Covers the pure-logic modules (converter, alerts DAO & engine, watchlist, filter/sort helpers, age formatter).

Data sources

Asset Provider Key required? Notes
FX open.er-api.com no updates ~hourly
Crypto coingecko.com (default) no top 25 by mcap, ~1 min cache
Crypto rest.coincap.io (if key set) yes (free) top 25 by mcap, sub-minute data
Commodities stooq.com (CSV) no 14 futures, ~15-min delayed

Crypto tab works out of the box via CoinGecko's public API. For faster / higher-rate data, grab a free CoinCap API key and export it — terminex will automatically prefer it:

export TERMINEX_COINCAP_KEY=your-key-here

Or put it in the config file (see below).

Config file

terminex looks for ~/.config/terminex/config.toml (or $XDG_CONFIG_HOME/terminex/config.toml). All keys optional:

base_currency = "USD"
refresh_interval = 10
active_tab = "fx"

[providers.crypto]
api_key = "your-coincap-key"

Environment variables win over config file values.

Project details


Download files

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

Source Distribution

terminex-0.4.0.tar.gz (36.7 kB view details)

Uploaded Source

Built Distribution

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

terminex-0.4.0-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for terminex-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e3ccc1dcb43db1332bb9da75f6fc9744e937042c2873000293cbd4e6f3005813
MD5 759d1f3d5dec78688d2c46ee1a0740d9
BLAKE2b-256 e1a94a22fd17678bd4c12a4422e5012b0eefa61222300b3bf5dcfb9f401e7384

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on Bij4n/terminex

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

File details

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

File metadata

  • Download URL: terminex-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 39.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for terminex-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24b44014cf3e65f9e0da62ea7f9645f21f1c32e2056af315a3aae732ccc6b6c7
MD5 b8c1395fb36f3169d79218a0ef4c065c
BLAKE2b-256 af622384fc5c733778aa341a8452d231ac0d4676db2848e83883f57dcf712e20

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on Bij4n/terminex

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

Supported by

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