Skip to content

Repository files navigation

NH Watcher

A macOS screensaver that displays live NetHack games from nethack.alt.org or hardfought.org.

It connects via SSH to a dgamelaunch server, picks a random active game that fits your screen, and renders the terminal output in a fullscreen window. When a game goes idle or ends, it automatically switches to another. If no live games are available, it plays back recorded games (ttyrec files) from the NAO archive.

Screenshot 1 Screenshot 2

Installation as a screensaver

The screensaver bundle (.saver) is the primary way to run NH Watcher. It hooks into the macOS screen-saver system, so it launches, exits, and locks the screen through the same mechanism as any other screensaver.

Via Homebrew:

brew tap pneumaticdeath/nhwatcher
brew install --cask nhwatcher

From source

make install

Then open System Settings > Wallpaper > Screen Saver and select NH Watcher.

Menu-bar helper (optional)

There is also a small menu-bar app that adds a Watch now launcher — useful when you want to spectate a game without waiting for the screensaver to kick in. It does not auto-activate on idle (that is the screensaver's job).

make install-app     # copies "NH Watcher.app" to /Applications
open "/Applications/NH Watcher.app"

The tray icon has two items: Watch now and Quit. Any keypress or mouse movement exits the spectating window.

Standalone testing mode

make run

Runs the viewer in a single fullscreen window with no screensaver or menu-bar wrapping. S switches games, Q / Escape quits.

Building from source

Requires Go and Xcode command line tools.

# Build the .saver bundle
make saver

# Build the menu-bar helper .app bundle
make app-bundle

# Build just the Go binary
make app

# Run tests
go test ./internal/nao/

# Uninstall
make uninstall            # removes the .saver
make uninstall-app        # removes the menu-bar .app

How it works

  1. Connects via SSH to nethack@alt.org or one of the hardfought.org servers (no credentials needed)
  2. Navigates the dgamelaunch watch menu
  3. Parses the game list, filters to non-idle games that fit the terminal
  4. Selects one at random and streams the live terminal output
  5. Switches games after 2 minutes of inactivity or when the watched game ends
  6. Falls back to ttyrec playback when no live games are available

License

MIT

About

A screensaver (or standalone program) that watches live nethack games.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages