mrus/neonmodem
4
6
Fork
You've already forked neonmodem
1
Neon Modem Overdrive https://neonmodem.com
  • Go 99.8%
  • Makefile 0.2%
Find a file
2025年12月15日 12:27:15 +01:00
.github Add pull_request_template.md 2025年12月15日 12:27:15 +01:00
aggregator Implemented connect check, fixed smaller issues 2023年01月06日 23:48:21 -05:00
cmd Fix #63 , rm panic for loadSystems, add log info 2024年07月31日 14:56:20 -05:00
config Merge pull request #40 from BreadMakesYouFat/spinner-color 2023年06月25日 15:34:35 -05:00
models Fix #50 , implementation of nested replies 2024年08月01日 14:03:28 -05:00
system discourse: APi fixes 2025年05月11日 22:03:14 +02:00
ui Update dependencies, remove debug output 2025年06月13日 08:38:06 -05:00
.editorconfig Added boilerplate 2022年12月28日 21:11:23 -05:00
.gitignore Added .gitsigners 2023年01月11日 00:04:10 -05:00
.goreleaser.yaml Update goreleaser config, workflow 2025年06月13日 08:43:49 -05:00
go.mod Bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 2025年08月21日 14:56:08 +00:00
go.sum Bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 2025年08月21日 14:56:08 +00:00
LICENSE Added LICENSE 2023年01月05日 15:39:41 -05:00
Makefile Renamed gobbs -> neonmodem 2023年01月06日 19:46:41 -05:00
neonmodem.gif Added rendered VHS gif 2023年01月08日 17:12:34 -05:00
neonmodem.go Renamed gobbs -> neonmodem 2023年01月06日 23:48:02 -05:00
neonmodem.tape Added tape file for recordings 2023年01月08日 17:10:49 -05:00
neonmodem.txt Added ASCII logo 2023年01月08日 17:10:33 -05:00
README.md Update README.md 2025年07月15日 14:23:42 -05:00
splashscreen.png Added splashscreen.png 2023年01月08日 20:54:41 -05:00

Neon Modem Overdrive

Neon Modem Overdrive

Neon Modem Overdrive is a BBS-style command line client that supports Discourse, Lemmy, Lobsters and Hacker News as backends, and seamlessly integrates all of them into a streamlined TUI. And yes, you heard that right, I really did call it Neon Modem Overdrive.

Neon Modem is built in Go, using Charm's Bubble Tea TUI framework, but implements an own window manager (or compositor if you want) that allows it to use a third dimension, on top of the two dimensional rendering that Bubble Tea offers today. With that it is possible to display dialogs on top of one another, in order to offer a smoother UI experience.

More info here!

Support

System Available List Forums List Posts List Replies Create Post Create Reply
Discourse ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Lemmy ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Lobsters ✔️ ✔️ ✔️ ✔️
Hacker News ✔️ ✔️ ✔️ ✔️
RSS+Disqus/Isso(?)
Superhighway84
NNTP

Installation

From Release

Download the latest release and unpack it:

$ tar -xzf ./neonmodem_*.tar.gz

The binary is called neonmodem. Feel free to move it to e.g. /usr/local/bin.

From Sauce

Clone this repository

  • from GitHub
    $ git clone git@github.com:mrusme/neonmodem.git
    
  • from Radicle
    $ rad clone rad:z4GExf1wpsyn6WDc2dNAxVc6LPS9G
    

Then cd into the cloned directory and run:

make

The binary is called neonmodem. Feel free to move it to e.g. /usr/local/bin.

For Arch Linux an AUR package is available here: https://aur.archlinux.org/packages/neonmodem

Install with your favorite AUR helper.

On NetBSD, a package is available from the official repositories. To install it, simply run pkgin install neonmodem.

Configuration

Before launching Neon Modem Overdrive it requires initial setup of the services (a.k.a. systems). Run neonmodem connect --help to find out more.

Connecting a service will add it to the configuration TOML. The configuration file location depends on the operating system. On Unix systems, it is in $XDG_CONFIG_HOME/neonmodem.toml if $XDG_CONFIG_HOME is non-empty, otherwise $HOME/.config/neonmodem.toml is used. On Darwin, the configuration is in $HOME/Library/Application Support/neonmodem.toml. On Windows, it is in %AppData%\neonmodem.toml.

Systems

Discourse

For connecting to a Discourse instance you'll need to have an active account on that instance. Neon Modem will store the instance URL, username and a user key, but no password.

neonmodem connect --type discourse --url https://www.keebtalk.com

Lemmy

For connecting to a Lemmy instance you'll need to have an active account on that instance. Neon Modem will store the instance URL, username and password.

neonmodem connect --type lemmy --url https://lemmy.ml

Lobsters

For connecting to a Lobsters instance you won't need an account, as the integration is read-only. Neon Modem will store the instance URL.

neonmodem connect --type lobsters --url https://lobste.rs

Hacker News

For connecting to Hacker News you won't need an account, as the integration is read-only.

neonmodem connect --type hackernews

UI

The UI can be fully customized via the Theme section in the configuration file. To reset settings, all theme related configurations can simply be deleted from the configuration.

Run

After setup Neon Modem can be launched by calling neonmodem without any arguments. It will briefly display a splash screen, then switch to the posts list, which will aggregate the latest posts from all connected systems. A progress icon will be visible in the header while network requests are loading.

Usage

Neon Modem Overdrive

Navigation

In the posts list:

  • j: Scroll down
  • k: Scroll up
  • r/enter: Open selected post
  • n: Write new post in on the system/forum of the current selected post
  • C-e: Open system selector
  • C-t: Open forum selector
  • esc: Quit

In the post view dialog:

  • r: Reply to post
  • #r: Reply to specific comment # in post, e.g. 3r to reply to the reply #3
  • z: Load older replies (if available)
  • esc: Close dialog

In the new post / new reply dialog:

  • tab: Switch between elements (only in new post dialog)
  • C-s: Submit post/reply
  • esc: Close dialog

FAQ

  • Q: The post view is really slow when using a large terminal.
    A: Turning off image rendering will improve performance significantly on very large terminal windows and can be done by setting RenderImages = false in the configuration.
  • Q: Can I haz Reddit?
    A: I won't do the heavy lifting of integrating a proprietary platform with a 15ドル billion valuation that can't even be bothered to maintain a solid set of client API libraries. If you feel like, go ahead and PR!