# h·j·klue
[](https://crates.io/crates/hjklue)
[](LICENSE)
`hjklue` (pronounced "h-j-klue," an homage to the vim `hjkl` motions) is a terminal-based crossword puzzle player that supports vim-style navigation and `.puz` format. It uses the usual tab/enter/arrows scheme to navigate the grid, but also supports a vim-like normal mode where you can jump to any cell (e.g. `35c` jumps to clue 35), `hjkl` or `w`/`b` to move. Solve `.puz` format puzzles without leaving your terminal or your keyboard.
This project was inspired by [cursewords](https://github.com/thisisparker/cursewords), [cliptic](https://github.com/apexatoll/cliptic), and [crosstui](https://github.com/matrixfrog/crossword).

## Installation and Usage
Install via one of the methods below, then run:
```bash
hjklue puzzle.puz
```
Accepts `.puz` format crossword puzzle files. (You can find puzzles at [Daily Crossword Links](https://dailycrosswordlinks.com/).)
### Install via Cargo
If you have Rust installed (or install via [rustup](https://rustup.rs/)):
```bash
cargo install hjklue
```
### Pre-built Binary
Download the latest release binary for your platform from [Releases](https://github.com/stmorse/hjklue/releases). No installation required - just run the executable directly.
### Building from Source
```bash
git clone https://github.com/stmorse/hjklue
cd hjklue
cargo build --release
./target/release/hjklue puzzle.puz
```
## Contributors
I got this off the ground as a vibecode project with Claude Code (Opus 4.5), but if you are a human interested in contributing, send me a message/PR. :) Happy puzzling!