Skip to main content

Full-screen Textual TUI news reader with RSS, themes, AI summarize, and TTS

Project description

World News CLI

PyPI Python License: MIT

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
19 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


Download files

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

Source Distribution

worldnews_cli-0.4.3.tar.gz (107.7 kB view details)

Uploaded Source

Built Distribution

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

worldnews_cli-0.4.3-py3-none-any.whl (113.5 kB view details)

Uploaded Python 3

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

Hashes for worldnews_cli-0.4.3.tar.gz
Algorithm Hash digest
SHA256 4c43b4a4947de25bf4d2d3e89c699a4873c382df5102e6d3c1d74b77cd4a779c
MD5 6b1f4d3fdcf37bee1fe2f507bf97ea07
BLAKE2b-256 d466a8f40b55e246e499215ac44d504978194a2023c2a4712d8c1a8ee2e33c2d

See more details on using hashes here.

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

Hashes for worldnews_cli-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3cefc4dee23714c8b8aa1ef882029a7cefa8ee3aa0b44f4c948b4bf7bafd867f
MD5 1e8dc828d54968c7b8f18b8d0207e965
BLAKE2b-256 dce3d2521844fd495d9049321b69e8ad901ef4427d9f3cfe4f66570225ae285f

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