Full-screen Textual TUI news reader with RSS, themes, AI summarize, and TTS
Project description
World News CLI
Full-screen terminal news reader built with Textual. Sidebar, headlines, article pane, themes, AI summarize/explain, and text-to-speech that can highlight the sentence being read.
Live on PyPI: worldnews-cli
Requires Python 3.9+.
Install
Fastest path for most people:
pip install worldnews-cli
Isolated tool install (recommended on shared machines):
pipx install worldnews-cli
# or
uv tool install worldnews-cli
Optional extras for offline/gTTS playback helpers:
pip install "worldnews-cli[voice]"
From a local clone (developers):
pip install -e .
# or
pip install -r requirements.txt
Run
worldnews
# short alias:
news
If the console script is not on your PATH:
python -m worldnews
# Windows launcher often works as:
py -m worldnews
Useful flags:
worldnews --category tech
worldnews --chat
worldnews --summary
worldnews --offline
worldnews --add-feed "My Blog" "https://example.com/feed.xml"
worldnews --version
Keys
| Key | Action |
|---|---|
j / k or arrows |
Move in the list |
Enter |
Open article (on a phone-width terminal: full-screen reader) |
Esc / q |
Back to list, or quit |
a / e |
AI summarize / explain |
t |
Speak article (press again to stop) |
/ |
Filter headlines |
Ctrl+P |
Command palette |
s |
Settings (App, AI, Voice) |
[ / ] |
Previous / next feed |
1–9 |
Jump to a numbered category |
b |
Bookmark |
o |
Open in browser |
? |
Help |
On narrow terminals (about under 84 columns), the app switches to a phone layout: Enter opens the reader full width, Esc/Back returns to the list, and a Back button appears in the action row.
What you get
- Categories such as General, Tech, AI, Sports, Anime, plus All, Bookmarks, Offline, and My Feeds
- Custom sites via palette
add-feed(website or RSS; feed discovery when possible) - Infinite scroll on headline lists (50 at a time)
- Animated ASCII boot / fetch splash (WORLD NEWS figlet + gradient)
- Themes: Newsroom (default), Phosphor, Broadsheet, Nord, GitHub Dark, High Contrast
- AI summarize / explain / chat (default free provider needs no key; many others supported)
- Speak (
t) with free Edge TTS by default; optional Fish Audio, Gemini, Groq, and paid live providers - Paste a voice id or library URL in Settings → Voice when you use a provider API key
Config lives under ~/.config/worldnews/ (older ~/.news-cli-*.json files are still read).
AI
Default free path: OpenCode Zen (big-pickle), no API key.
Also wired: Hack Club AI, Ollama, LM Studio, Groq, Gemini, OpenRouter, and others.
In the app: s → AI tab (or palette → ai-provider). Pick a provider/model, paste a key if required, Save key, Apply AI.
Hack Club keys: ai.hackclub.com
Voice / TTS
| Provider | Cost | Key |
|---|---|---|
| Edge TTS | Free | None (default) |
| Fish Audio | Free tier | fish.audio (s2.1-pro-free, news/narrator voices) |
| Gemini TTS / Live | Free tier | Google AI Studio |
| Groq Orpheus | Free tier | Groq |
| Deepgram Aura-2 / Live | Free credit | Deepgram |
| OpenAI / Realtime | Paid | OpenAI |
| ElevenLabs / Live | Free/paid | ElevenLabs |
| Cartesia / Live | Paid | Cartesia |
| gTTS | Free | None |
Flow: s → Voice → provider → model → voice (or paste id/URL) → API key if needed → Apply voice → t.
You can also set FISH_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, and similar env vars.
Provider docs: Fish · Gemini speech · Groq TTS
Complex scripts (Malayalam, Hindi, Arabic, …)
Cell-grid terminals (including Windows Terminal) often cannot shape Indic scripts the way a browser does. World News keeps the TUI usable with a safe default:
| Mode | How to enable | Behavior |
|---|---|---|
| safe (default) | Settings → App → Scripts, or no flag | No Indic/Arabic glyphs in the TUI (list + reader); press o for browser |
| plain | --plain / --ascii |
Same as safe for hostile scripts |
| native | --native-titles |
Show native script in list/reader (may still overlap on Windows Terminal) |
Fonts / hosts
- Windows: use Windows Terminal, not legacy
cmd.exe. Set the profile font to Nirmala UI or Noto Sans Malayalam. - Termux: install a Malayalam-capable font (e.g. Noto) via your font packages.
- Linux / macOS: UTF-8 locale (
LANG=*.UTF-8) + Noto / Meera / Rachana.
Startup forces UTF-8 I/O and enables Windows virtual terminal processing when possible. Full OpenType shaping still requires a capable terminal + font — for clearest reading press o (open in browser).
Phone and small terminals
This is a terminal UI. On Android, Termux is the usual host:
pkg update && pkg install python libxml2 libxslt libjpeg-turbo
pip install worldnews-cli
# optional
pip install "worldnews-cli[voice]"
pkg install termux-api ffmpeg
python -m worldnews
Other options: JuiceSSH/ConnectBot into a machine that already has worldnews, or a-Shell/iSH on iOS with Python + pip.
Width behavior (approximate):
| Columns | Layout |
|---|---|
| 100+ | Sidebar + list + reader |
| 84–99 | List first; Enter opens reader |
| under 84 | Single column; Enter = reader, Esc = list |
| under 56 | Compact rows and short keyhints |
Links open with termux-open-url when Termux API is installed.
Development
git clone <your-repo-url>
cd news-cli
pip install -e ".[dev,voice]"
python -m worldnews
License
MIT
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 worldnews_cli-0.4.3.tar.gz.
File metadata
- Download URL: worldnews_cli-0.4.3.tar.gz
- Upload date:
- Size: 107.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c43b4a4947de25bf4d2d3e89c699a4873c382df5102e6d3c1d74b77cd4a779c
|
|
| MD5 |
6b1f4d3fdcf37bee1fe2f507bf97ea07
|
|
| BLAKE2b-256 |
d466a8f40b55e246e499215ac44d504978194a2023c2a4712d8c1a8ee2e33c2d
|
File details
Details for the file worldnews_cli-0.4.3-py3-none-any.whl.
File metadata
- Download URL: worldnews_cli-0.4.3-py3-none-any.whl
- Upload date:
- Size: 113.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cefc4dee23714c8b8aa1ef882029a7cefa8ee3aa0b44f4c948b4bf7bafd867f
|
|
| MD5 |
1e8dc828d54968c7b8f18b8d0207e965
|
|
| BLAKE2b-256 |
dce3d2521844fd495d9049321b69e8ad901ef4427d9f3cfe4f66570225ae285f
|