Skip to main content

Hacker News + Reddit + lobste.rs terminal feed viewer

Project description

devskim

Terminal feed reader for Hacker News, Reddit, lobste.rs, and GitHub Trending.

License: MIT PyPI version Python versions GitHub release CI codecov

Features

  • Unified scrollable feed from HN, Reddit subreddits, lobste.rs, and GitHub Trending
  • Color-coded by source: HN orange, lobste.rs red, GitHub green, subreddits in a cycling palette
  • Read text posts and Ask HN inline — no browser needed
  • Split view with post body / repo stats and threaded comments or README side by side
  • Filter feed by source, refresh on demand, paginate with m
  • Keyword search with /, copy URL with y, mark seen posts dimmed automatically
  • Config file at ${XDG_CONFIG_HOME:-~/.config}/devskim/config.toml — created automatically on first run

Install

Homebrew (macOS/Linux)

brew tap emarkou/devskim
brew install devskim

pip

pip install devskim

pipx (isolated install)

pipx install devskim

From source

Requires Python 3.11+.

git clone https://github.com/emarkou/devskim.git
cd devskim
pip install -e .

On first run, a config file is created at $XDG_CONFIG_HOME/devskim/config.toml (defaults to ~/.config/devskim/config.toml). Edit it to change subreddits:

nano "${XDG_CONFIG_HOME:-~/.config}/devskim/config.toml"
subreddits = ["programming", "ClaudeAI", "machinelearning"]
hn_story_count = 30
reddit_post_count = 15
lobsters_post_count = 25
github_trending_count = 25
# github_trending_language = "python"   # filter by language (optional)
# github_trending_since = "daily"       # daily | weekly | monthly
cache_ttl_minutes = 10

Run devskim — changes take effect on next launch or press r to refresh.

Demo

Demo

Key bindings

Main feed

Key Action
j / Move down
k / Move up
Enter Open post + comments split view
f Cycle source filter (All → HN → r/sub → lobste.rs → GitHub → …)
m Load more stories
r Refresh all sources
y Copy story URL to clipboard
/ Keyword search
q Quit

Split view

Key Action
j / Scroll down
k / Scroll up
Tab Switch between post/stats and comments/README pane
o Open URL in browser
q / Esc Close

Config

$XDG_CONFIG_HOME/devskim/config.toml (default: ~/.config/devskim/config.toml) — created on first run with defaults. If ~/.devskim exists and the XDG path does not, the legacy location is used automatically.

Key Default Description
subreddits ["programming", "python", "machinelearning"] Subreddits to include
hn_story_count 30 HN stories per fetch
reddit_post_count 15 Posts per subreddit per fetch
lobsters_post_count 25 lobste.rs posts per fetch
github_trending_count 25 GitHub trending repos per fetch
github_trending_language "" Filter by language (e.g. "python"), empty = all
github_trending_since "daily" Trending window: daily, weekly, or monthly
cache_ttl_minutes 10 Minutes before refreshing cache
theme "auto" Color theme: auto (detect terminal), dark, light, or any Textual theme name (nord, dracula, solarized-light, …)
browser "" Browser command for opening URLs (e.g. "firefox", "open -a Safari"). Empty = system default

Tech stack

Library Role
Textual TUI framework
httpx Async HTTP client
Click CLI entry point

Related posts:

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

devskim-0.8.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

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

devskim-0.8.0-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file devskim-0.8.0.tar.gz.

File metadata

  • Download URL: devskim-0.8.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for devskim-0.8.0.tar.gz
Algorithm Hash digest
SHA256 d6f36a13f0701d53e444c8fc2d2479d1ab8e4d07d460a23b5be11a9a60638a26
MD5 c88f2a9c35030093d726759dc00e106a
BLAKE2b-256 76def88d07661543adbb2433dbb1e768948a1f56b46b7632121bef19475fd305

See more details on using hashes here.

Provenance

The following attestation bundles were made for devskim-0.8.0.tar.gz:

Publisher: release.yml on emarkou/devskim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devskim-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: devskim-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for devskim-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77dd5413014c4ea5c7020e98be75acb478388ab4b5c58ad030c65411150e4be3
MD5 a502d6dfaf0df1ccb9171e605782b6cd
BLAKE2b-256 f5d375b383887de08cf3cb36cf942364dfa6f4d657c7d4878154b515df9e7eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for devskim-0.8.0-py3-none-any.whl:

Publisher: release.yml on emarkou/devskim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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