No description
  • Python 50.2%
  • JavaScript 34.6%
  • Shell 9%
  • C 4%
  • Dockerfile 2.2%
Find a file
2026-09-05 16:07:36 +02:00
cups-legacy Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
docker Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
linux Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
printer-app Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
replacement/src/js Add PM64D 102x152 default preset 2026-09-05 16:07:36 +02:00
.env.example Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
apply-pm64d.py Add PM64D 102x152 default preset 2026-09-05 16:07:36 +02:00
bootstrap-local.sh Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
CHANGES-V2.txt Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
CHANGES-V3.txt Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
CHANGES-V4.txt Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
CHANGES.txt Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
docker-compose.yml Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
Dockerfile Initial import from typingbeaver/snake-label 2026-09-05 15:21:05 +02:00
README.md Add PM64D 102x152 default preset 2026-09-05 16:07:36 +02:00

snake-label-PM64D fork kit v5

This fork bundles the upstream typingbeaver/snake-label project with the PM64D extension, the Linux printing pieces, and a Docker deployment.

What is included

  • Docker Compose deployment for the PM64D fork
  • PM64D 100 x 150 mm and 102 x 152 mm output-profile patch, with 102 x 152 mm as the PM64D default
  • legacy CUPS PPD + raster-to-TSPL filter
  • direct Linux TSPL helper
  • PAPPL / Printer Application groundwork
  • local bootstrap script

Docker

The Docker build fetches the public upstream typingbeaver/snake-label repository and applies the included PM64D patch during the image build. The resulting web app presents this fork's branding while still running fully client-side after it has been served.

cp .env.example .env
# adjust SNAKE_LABEL_PORT if desired
docker compose build
docker compose up -d

Default URL:

http://HOST:8080

The container does not need USB access. Printing happens through the browser and the locally installed Linux/CUPS printer.

Pinning an upstream branch/tag

.env contains:

SNAKE_LABEL_REF=master

Change this to an upstream branch/tag supported by git clone --branch if you want to pin the build.

Local development fork

./bootstrap-local.sh
cd app
npm install
npm run dev

The bootstrap script clones upstream snake-label, applies the PM64D patch, and prepares the forked UI with upstream attribution in the footer.

PM64D CUPS bridge

Requirements on Arch/CachyOS:

sudo pacman -S cups python-pillow poppler

Install the PPD/filter queue:

./cups-legacy/install-legacy-cups.sh
sudo systemctl restart cups

The installer currently creates PM64D-PPD and detects usb:///PM64D?... automatically.

Check options:

lpoptions -p PM64D-PPD -l

Included presets currently cover 100x150, 102x152, 101x152/4x6-ish, 75x100, 60x40, 50x30, 40x30 plus CUPS custom sizes, 203 dpi, gap/continuous media, direction and density.

Direct TSPL helper

The tested PM64D hardware identifies as USB 2e3c:5760 (QIN LabelPrinter) and accepts TSPL over USB/CUPS with CRLF command endings.

See linux/pm64d-print.py and linux/test-pm64d-tspl.sh.

Future path

printer-app/ contains the groundwork for replacing the legacy PPD/raw workflow with a modern PAPPL/IPP Printer Application. The PPD is deliberately a compatibility bridge, not the long-term architecture.