https://github.com/luke8086/retronews Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions By size + Enterprise + Teams + Startups By industry + Healthcare + Financial services + Manufacturing By use case + CI/CD & Automation + DevOps + DevSecOps * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} luke8086 / retronews Public * Notifications You must be signed in to change notification settings * Fork 2 * Star 137 TUI browser for HN and Lobsters emulating classical Usenet and mail readers License GPL-2.0 license 137 stars 2 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 0 * Pull requests 0 * Actions * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Security * Insights luke8086/retronews This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit message Last commit date Latest commit History 156 Commits tests tests .flake8 .flake8 .gitignore .gitignore LICENSE LICENSE Makefile Makefile README.md README.md pyproject.toml pyproject.toml retronews.py retronews.py screenshot.png screenshot.png tests.py tests.py View all files Repository files navigation * README * GPL-2.0 license retronews A Python script for browsing Hacker News and Lobsters discussions with a nostalgic interface emulating classical usenet and mail readers, like slrn and mutt. It was primarily written so I could highlight interesting threads and keep track of read / unread messages (see blog post). The UI showing one message at a time also encourages slower, more focused reading. On Unix-like systems it only depends on Python 3.9. On Windows you may also need to install windows-curses. It doesn't require installation. You can run it simply with: $ curl -LO https://raw.githubusercontent.com/luke8086/retronews/main/retronews.py $ python3 ./retronews.py Press ? to see available keybindings. [screenshot] Customization To customize retronews without directly editing the script, you can put any valid Python code in ~/.retronewsrc.py (or other location specified with --rcfile) to be executed on startup. For example: # Ignore type warnings from typing import Any retronews: Any # Example: Custom key bindings retronews.KEY_BINDINGS[ord('a')] = lambda app: retronews.cmd_prev(app) retronews.KEY_BINDINGS[ord('z')] = lambda app: retronews.cmd_next(app) # Example: Custom colors retronews.COLORS['author'] = (retronews.curses.COLOR_RED, -1) Known issues and limitations * The reader is read-only, there are no plans to support voting and posting * Message formatting is not perfect, but works well enough most of the time * Detecting if threads contain unread responses works by only checking their count, it's not reliable if any responses were deleted Why not an NNTP gateway? NNTP doesn't support browsing threads by title (let alone paginated) and requesting their messages on demand. Clients need to fetch metadata of all available messages in all available threads in advance. Given the volume of messages on HN, synchronizing them to the gateway is not practical. Even when attempted, some clients struggle with the sheer number of messages in a single group. Related projects * HN Search @ Algolia - The underlying API used to retrieve messages * nntpit - An NNTP gateway to reddit.com * circumflex - Another, more advanced TUI for HN About TUI browser for HN and Lobsters emulating classical Usenet and mail readers Resources Readme License GPL-2.0 license Activity Stars 137 stars Watchers 2 watching Forks 2 forks Report repository Releases No releases published Packages 0 No packages published Languages * Python 83.2% * HTML 16.1% * Makefile 0.7% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.