Typewriter Nocturne is a cross-platform terminal with the soul of a writing desk: your shell typed onto a
sheet of paper, a brass-and-enamel typewriter whose head follows the cursor, a lamp with a pull cord, the
sound of type bars. Underneath it is a complete, real terminal: a fork of Hyper
with xterm.js and node-pty running your actual shell, so zsh, bash, PowerShell, Git, Python, Node.js, SSH,
Vim, tmux and every other TUI program work as they do in any good terminal.
Documentation ·
中文文档 ·
Interactive demo ·
Download
Screenshots of the packaged app, taken by its end-to-end tests on GitHub Actions (CI runners have no GPU,
so the typewriter is drawn on the CPU there with Quality set to High). More in the
gallery.
Version 1.0. The latest version is on the Releases
page and what changed in each one is in the changelog. The installers are not code-signed yet
(see docs/INSTALL.md). See docs/ARCHITECTURE.md for how it is built
and what comes next.
Features
- A 3D typewriter with physically based materials and soft shadows. The type head rides a rail with one
rack tooth per terminal column, moves with escapement physics, sways on its pivot and strikes the platen.
- Light that behaves like light: inverse-square falloff, Lambert's cosine law, a soft spot cone that draws a
clean triangle up the page from the type head, moonlight through an upright window of square panes whose
number, slant and place you choose. Every paper keeps its own texture in the light. Brightness, beam angle,
beam shape, aim and the light itself (carriage lamp, desk lamp or window) are adjustable, and a slender
theatre-curtain pull cord ending in a silk tassel switches the lamp (hide it in the Studio if you like).
On a dark sheet the lamp shows as the paper itself lit, warm and dim, with a soft bloom; the room never dims
the page below 4.5:1 contrast.
- An ink cursor: the block is a blot of ink with a soft edge where it soaked into the paper. While the
terminal waits it sinks into the page and wells up again, a faint halo spreading as it fades; every key you
strike inks it afresh. Or choose a quill pen, the size of the block, with its nib on the line.
- Paper and ink: six papers, from smooth onionskin (the default) and felted cotton rag to parchment, as
narrow as a letter or as wide as the whole platen. Freshly typed characters land heavy and settle into print,
and selected text dissolves like ink and re-forms instead of sitting in a flat box.
- A paper clip for a scrollbar: a Gem clip slid onto the edge of the sheet, it glides and leans as you scroll and
can be dragged (or use a translucent bar, or the system one). Double-click a bail roller to roll the paper
to the top or the bottom.
- Sounds of the machine, synthesised: type bars, space bar, carriage return, margin bell, the platen
ratchet when you recall history with ↑/↓, the escapement on ←/→, the tabulator, placed in stereo where the
head stands.
- Input methods: pinyin, kana and hangul compositions strike keys while you compose, and the committed text
lands as a firm double strike, without touching the IME or what the shell receives.
- Fonts: Courier Prime and IBM Plex Mono bundled, Nerd Font presets, any installed family, and the
Symbols Nerd Font bundled so Nerd Font icons appear with every face.
- The Press: print a snippet, the selection, the screen or the last command with its output as a folio set
like a sonnet, previewed live as you choose: the paper; the wax seal (or none) with its colour, monogram (TN
until you choose your own) and emblem; a satin ribbon laid one of six ways, in the wax's own silk or one of
seven colours; a face for the text (an upright book face like a printed sonnet, or any installed font); and
your name to sign it. Keep it in the local , rename it, save it as PNG or copy it.
Principles
- A real terminal first. No fake prompt, no reimplemented parser or PTY. Exit codes, environment, working
directory, keyboard behaviour, IME input and bracketed paste come straight from Hyper and your shell.
- Effects never touch your data. Lighting and typewriter feedback sit on top of the terminal; they never
delay, intercept or rewrite keystrokes or program output. Every effect can be turned off, and Focus Mode
removes all decoration at once. Terminal text is read only when you print it, and folios stay on your
computer.
- Typography that respects the grid. Strict monospace cells for the terminal, CJK double-width characters
intact; serif type only for the chrome around it.
- Built in the cloud. Every dependency install, native rebuild, test and installer is produced by GitHub
Actions. See docs/INSTALL.md for downloads and the caveats of unsigned builds.
Downloads
Development builds are attached to each CI run
(macOS arm64/x64 DMG, Windows x64 installer, Linux x64 AppImage and DEB). Tagged versions are published on the
Releases page with SHA-256 checksums.
Contributing
Edit, commit and push; GitHub Actions does the rest:
change code → push → CI (lint · types · unit tests · licences · packages · e2e on a real PTY) → read logs → fix → push
Upstream tracking and merge instructions are in UPSTREAM.md.
Licence
MIT. Typewriter Nocturne is built on Hyper, © Vercel, Inc., also MIT; the
original licence is kept in LICENSE and shipped in every installer under licenses/. All artwork in
assets/nocturne/ is original and released under the same licence.