Skip to main content

Horizontal matrix rain of things happening right now

Project description

meanwhile

Horizontal matrix rain of things happening right now.

AUR version PyPI version License: MIT Python Stars

A wall of code sweeps across your terminal. Embedded in the noise — readable if you look — are real things: live news headlines, local intel for places you care about, and true, quietly poetic facts about what is happening somewhere on Earth at this exact moment.

meanwhile in motion

In The Matrix, the operators stopped seeing code and started seeing the world through it. That's the idea: an ambient screen you can actually read. Glance at it and it's rain; look at it and it's the world.

  • News — live headlines, narrowed by your topics, decoded into the stream. Click a headline and its story decodes into the rain as a short summary; shift-click opens the article in your browser (headlines are real OSC 8 hyperlinks).
  • Local intel — tune to any towns or regions and read what is happening there, down to village-notice level.
  • Poetic — true things happening right now, for scale and gratitude, drawn from a growing set of veins: the sky, the sea, deep time, the body, creatures, other people. Live counters (people born since you opened the window, what Voyager 1 did while you watched), tonight's actual moon phase, where the sun is rising at this second, what the season is doing at the poles. Every line is true, and more are finding their way in.

Zero runtime dependencies. One Python file. Runs on Linux, macOS, and WSL with Python 3.11+.

Install

With uv (Linux, macOS, or WSL):

uv tool install meanwhile-rain

Or with pipx:

pipx install meanwhile-rain

On macOS with Homebrew:

brew install tomdavenport/tap/meanwhile

On Arch: yay -S meanwhile-rain (the plain name was taken by the old Lotus Sametime library, of all things).

From source:

git clone https://github.com/tomdavenport/meanwhile.git
cd meanwhile
ln -sf "$PWD/meanwhile.py" ~/.local/bin/meanwhile
meanwhile

No API key? It just works.

Out of the box, headlines come from public RSS feeds for your region (detected from your locale — BBC, NPR, Guardian, NHK, and friends; set "region" in the config or pass --region us to steer it). Click a headline and the feed's own story summary decodes into the rain.

With an Exa key (EXA_API_KEY in your environment, or point env_files in the config at a .env that has it), the news upgrades: headlines follow your topics (fast type — Exa's cheapest tier, a few requests per refresh), places unlock true local intel, and clicked stories decode as fresh, live-crawled summaries.

Keys

key action key action
click decode a story into the rain q quit
enter pick a story to decode (↑/↓ + enter) space pause
t edit topics g edit places (local intel)
f focus — surface the text n / o a headline / something true
m / p toggle news / poetic r refresh headlines
+ / - speed s / ? status / help

Editors: type + enter adds, 19 removes, esc closes. Changes persist and refetch immediately.

Reading modes

By default text sits embedded — a shade above the field, part of the code. Press f for focus and headlines surface in full contrast when you actually want to read the world. The preference sticks.

Click any headline (or press enter to pick one) and its story decodes into the stream as a short summary — you never leave the rain:

summary

Theming — it adopts your colors

Three tiers, automatic, in this order:

  1. Omarchy: meanwhile reads your active theme and rains in its palette — and when you switch themes, the rain follows within seconds, live. No configuration.
  2. Any modern terminal: no Omarchy? meanwhile asks the terminal itself for its colors (an OSC query — kitty, Alacritty, ghostty, foot, WezTerm, xterm all answer) and rains in whatever theme you already run.
  3. Classic matrix green everywhere else — or force it anytime with --theme matrix.

omarchy theming

Screensaver

meanwhile --saver     # any key or click exits, cmatrix-style

Pair it with your idle daemon (hypridle, swayidle) to drop into the rain when you step away. A true Wallpaper Engine / live wallpaper build is on the roadmap — it needs a web port of the renderer; if that's your thing, the door is open.

Config

~/.config/meanwhile/config.json, created on first run:

key meaning
topics what the news follows (also: t in-app; needs an Exa key)
places places for local intel (also: g in-app; needs an Exa key)
region RSS fallback region ("auto" reads your locale)
poetic_ratio fraction of lines that are poetic
density, speed, message_every_seconds feel of the rain
focus, theme, show_source, ascii_only look
refresh_minutes, hours_back news freshness window
check_updates one cached GitHub release check (false disables it completely)
env_files where to find EXA_API_KEY

Headlines are cached in ~/.cache/meanwhile/ so launch is instant. The update check contacts GitHub at most once every 24 hours, shows one dim hint per new release, and never downloads or installs anything.

Community

  • brendan-jarvis/meanwhile — a full Rust port with prebuilt binaries, WezTerm/Starship theme inheritance and an S&P ticker mode. Its regional-RSS idea flowed back into this repo in v0.5. This is exactly the kind of forking the rain approves of.
  • Issues and PRs welcome — new poetic veins especially. Every line must be true.

Notes

  • Plain click decodes a summary in-app; shift-click follows the OSC 8 hyperlink (kitty, Alacritty, ghostty, foot, WezTerm and most modern terminals; inside tmux you need a recent tmux). Set "mouse": false in the config to leave the mouse alone entirely.
  • CPU ~1–2% of one core; it's just characters.
  • Every so often — not often — the rain has something to say to you directly. If you're impatient, you know whose name to type.

License

MIT

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

meanwhile_rain-0.6.0.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

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

meanwhile_rain-0.6.0-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file meanwhile_rain-0.6.0.tar.gz.

File metadata

  • Download URL: meanwhile_rain-0.6.0.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for meanwhile_rain-0.6.0.tar.gz
Algorithm Hash digest
SHA256 52c27e6ebfb31e6c9eea727d18d72aedf36b4e24a74fdc33734933f6d75790f9
MD5 838e555fcdc604ab146dcbbd9caf3f4e
BLAKE2b-256 6b67405cbf383dcce4f7bc042b8821c96f3b5f727eab2ed96dec9851c12c4a28

See more details on using hashes here.

File details

Details for the file meanwhile_rain-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: meanwhile_rain-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for meanwhile_rain-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6adf55cff5d6f10af41ac5b84f7f9bf4b4c7871655a5cb3bdfd400f1507cc736
MD5 9eb10aa8b44aa9c869c6ede963288224
BLAKE2b-256 c24417f08d37f18ade2ea07db2055c40c0254b13a7b77593b4d9f823ddd33e74

See more details on using hashes here.

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