Follow the FIFA World Cup 2026 from your terminal — fixtures, live scores, goal alerts with sound.
Project description
Terminal Eleven
The 2026 World Cup, in your terminal. Built for people who can't watch it any other way.
Here in India, most of the matches kick off between 11:30 PM and 7:30 AM. The final is at 12:30 AM. And as far as anyone can tell, no broadcaster has bought the Indian rights yet. China is in the same spot.
So roughly two billion football fans get to follow the biggest tournament on the planet by refreshing tabs. Or just... not.
I'm one of them. This is what I built so I could still follow the games without keeping a phone awake at 4 AM.
What it does
Four screens, all keyboard-driven, all dark-theme.
Groups. All twelve groups in a responsive grid. Click any team to open its profile — captain, coach, nickname, confederation, best-ever World Cup finish, and how it did in Qatar 2022.
Fixtures. Every group-stage match grouped by date, with kickoff times converted to your local timezone. So you can tell at a glance whether Brazil v Morocco lands in your evening or your 3 AM.
Live Score. Today's matches in a table. Pick one with Enter.
Match Detail. Big block-font scoreline, current minute, goal scorers under each team, yellow and red cards, and a live stats grid (possession, shots, shots on target, passes, pass accuracy, fouls, corners). Polled from ESPN every 60 seconds and patched in place — no flicker, no full redraw.
The reason I actually wanted this
Open a match in a terminal tab. Switch to your editor. Forget about it. When something happens, the app tells you:
- a Game Boy-style victory stinger when a goal goes in,
- a desktop notification with who scored, what minute, and the new scoreline,
- one referee whistle at half-time,
- three referee whistles at full-time.
Works on macOS, Linux and Windows without any extra audio library to install — just Python plus the system audio tool each OS already ships with (afplay, paplay / pw-play / aplay, winsound). Run it on your laptop, run it over SSH on a server, run it on the office Linux box. As long as the machine can make a noise, you'll know when Argentina scores.
That's the part I wouldn't have got from any other app.
Install
From PyPI:
pip install terminal-eleven
terminal-eleven
Or from source:
git clone https://github.com/Anubhav9/Terminal-Eleven
cd Terminal-Eleven
pip install -e .
terminal-eleven
Quit with q. Back out of any screen with b or Esc. Move with arrow keys, select with Enter.
How it gets the data
ESPN has an undocumented but very reliable JSON endpoint behind the live-score pages on espn.com. We fetch it with httpx from a Textual async worker, parse the bits we care about (score, status, key events, boxscore), and only emit sound + a toast when the new snapshot actually differs from the previous one — so a single goal makes exactly one celebration noise, not one per refresh.
The 72 group-stage fixtures and their ESPN event IDs are checked into the repo (terminal_eleven/static_data/fixtures/group_stage.csv), so everything except the live view works fully offline.
A note on prior art
If you want a general football TUI that does 65+ leagues year-round, look at golazo. It's mature, polished, and the reason I knew this kind of thing was even possible in a terminal.
Terminal Eleven is narrower on purpose. It runs for four weeks of your year, knows exactly which 48 teams and 72 matches matter, and has the half-time / full-time audio cues I wanted. That's the whole pitch.
Credits
- Victory stinger: GB Victory Stinger by Bogart (OpenGameArt)
- Referee whistles: Whistles by dklon, CC-BY 3.0 (OpenGameArt)
- Group-stage fixture data parsed from the Wikipedia article.
- Live match data via ESPN's public scoreboard / summary endpoints.
- Built on Textual and httpx.
If this helps you make it through a 4 AM goal-scoring update, a GitHub star is the nicest way to say thanks. It also helps the next person searching for "how do I watch the World Cup from India" find this instead of nothing.
Project details
Release history Release notifications | RSS feed
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 terminal_eleven-0.1.0.tar.gz.
File metadata
- Download URL: terminal_eleven-0.1.0.tar.gz
- Upload date:
- Size: 217.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11468bc56f864b23bb36b0bc1f759b402e52a0af0fdd3af7c780f14a3fbc9f80
|
|
| MD5 |
e2c5ece70a7aaff08e7247951a2f5fe5
|
|
| BLAKE2b-256 |
aeaf7f32c2fa2b60a8d9d026915e2bf25bfad6540573c0feb69dcf81ea352847
|
File details
Details for the file terminal_eleven-0.1.0-py3-none-any.whl.
File metadata
- Download URL: terminal_eleven-0.1.0-py3-none-any.whl
- Upload date:
- Size: 233.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5977243f7bbb06424ae96382e56cc93cea278f7f8a477bd7c65027359b31efef
|
|
| MD5 |
500bd7ac4de9faf252ee234d921957cf
|
|
| BLAKE2b-256 |
4341fce6f07a4044ba7cb6078157b1c9697c8d1224038fb93abdafbb1e8f6503
|