imZack/nospero

Command-line printing for Epson LabelWorks LW-600P.

★ 0Forks 0GoGitHub ↗Compare

README

Nospero

Command-line printing for Epson LabelWorks LW-600P.

Setup

Install the CLI:

go install github.com/oxplot/nospero/cmd/nospero

Pair one LW-600P in macOS Bluetooth settings, then run:

nospero status

Nospero discovers the paired printer by Bluetooth Device ID vendor=0x0430 product=0x0211 and opens IOBluetooth RFCOMM directly.

For multiple paired printers, select one with --address. The default RFCOMM channel is 1.

Printer models and resolution

The LW-600P prints at 180dpi. Some LabelWorks models on the same protocol print at a different resolution — notably the LW-C610/LW-C610PX at 360dpi (a 256-dot head), which reports the same Bluetooth vendor and product ID as the LW-600P. Nospero therefore picks the resolution from the model prefix of the paired device's Bluetooth name (LW-C610@4fdc04 → 360dpi) and scales the printable-dot tables accordingly.

Override it when the model cannot be identified:

nospero --dpi 360 print text "Hello"

--dpi is required alongside --address, because macOS reports no model name on that path. Nospero warns on stderr whenever it falls back to the default resolution — printing at the wrong one silently yields a half-size label. nospero env reports the effective value (LW600P_DPI=0 means auto-detect).

Usage

nospero status
nospero diagnose
nospero fonts add Roboto
nospero fonts list
nospero print text "Hello"
nospero print text --font Roboto --font-weight 700 --italic "Hello"
nospero print text --text-align center --font Roboto "Top\nBottom"
nospero print barcode --type code128 "ASSET-42"
nospero print barcode --type qr "https://example.com/asset/42"
nospero print image --file label.png
nospero print mixed --file logo.png --text "Asset 42" --layout left

Text printing requires a downloaded local font. nospero fonts add accepts a Google Fonts specimen URL such as https://fonts.google.com/specimen/Open+Sans or a family name such as Roboto, then stores a Go-renderable TTF/OTF in the user cache directory. The default text font is Roboto. Text labels accept --font-weight 100..900 and --italic; if Google Fonts provides a matching face, Nospero uses it, otherwise it applies the weight or slant in Go during rendering.

Barcode labels are rendered locally and printed through the same raster path as text and image labels. Supported barcode types are aztec, codabar, code128, code39, code93, datamatrix, ean8, ean13, pdf417, qr, 2of5, and 2of5-interleaved. Use --module-dots when a scanner needs wider modules than the default.

Contributors

oxplotimZack

Issues