No description
  • Python 50.1%
  • JavaScript 40.7%
  • CSS 6%
  • HTML 3.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
hubert.leber 91ee452d58 Kommandozeilentool in ptouch-label umbenannt
Vermeidet den Namenskonflikt mit /usr/bin/ptouch-print aus dem
Debian-Paket ptouch-print.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 10:12:25 +01:00
ptouch Fix: zentrierter/rechtsbündiger mehrzeiliger Text brach ab 2026-11-02 10:00:04 +01:00
.gitignore Weboberfläche und Python-Treiber ersetzen GTK-GUI und C-Tool 2026-11-02 09:34:31 +01:00
LICENSE Brother-P-Touch Label Print with GUI 2025-11-21 14:36:36 +01:00
ptouch-gui.png Brother-P-Touch Label Print with GUI 2025-11-21 14:36:36 +01:00
ptouch-label Kommandozeilentool in ptouch-label umbenannt 2026-11-02 10:12:25 +01:00
ptouch-web Startskripte: kein Python-Bytecode-Cache 2026-11-02 10:10:03 +01:00
ptouch-web.service Dienst: kein Python-Bytecode-Cache (PYTHONDONTWRITEBYTECODE) 2026-11-02 10:09:08 +01:00
ptouch.desktop Desktop-Starter öffnet http://localhost:8002/ 2026-11-02 10:11:00 +01:00
README.md Kommandozeilentool in ptouch-label umbenannt 2026-11-02 10:12:25 +01:00

Brother P-touch Label-Editor (PT-P700 und verwandte Modelle)

Weboberfläche zum Gestalten und Drucken von Labels unter Linux. Texte, QR-Codes, Linien, Rechtecke und Bilder lassen sich frei auf dem Band platzieren und mischen. Die Vorschau zeigt pixelgenau das spätere Druckbild (180 dpi).

Alles ist in Python geschrieben, auch der Druckertreiber. Das frühere C-Programm ptouch-write und die GTK-Oberfläche werden nicht mehr gebraucht.

Installation

sudo apt install python3-pil python3-qrcode fontconfig
git clone git@git.pv2car.com:pv2car/p-touch-print.git
cd p-touch-print
sudo ln -s "$PWD/ptouch-web" "$PWD/ptouch-label" /usr/local/bin/

Der Drucker wird über den Kernel-Treiber usblp angesprochen (/dev/usb/lpN). Der Benutzer muss dafür in der Gruppe lp sein (sudo adduser $USER lp), sudo ist nicht nötig. Welches lpN der P-touch ist, wird automatisch über die USB-IDs erkannt (andere Labeldrucker wie z. B. ein DYMO werden ignoriert). Alternativ kann das Gerät mit PTOUCH_DEVICE=/dev/usb/lp1 festgelegt werden.

Mehrere Rechner (z. B. Desktop und Notebook)

Auf jedem Rechner klonen, siehe „Einrichtung auf einem weiteren Rechner“ unten. Beim Start macht ptouch-web automatisch ein git pull --ff-only, damit immer die aktuelle Version läuft. Das passiert ohne Rückfragen und mit Zeitlimit; ohne Netz oder bei lokalen Änderungen wird das Update übersprungen. Abschalten lässt es sich mit --no-update oder PTOUCH_NO_UPDATE=1.

Die Vorlagen liegen in Nextcloud und sind damit auf allen Rechnern gleich. Reihenfolge, in der der Ordner bestimmt wird:

  1. ptouch-web --templates DIR
  2. Umgebungsvariable PTOUCH_TEMPLATES
  3. "templates_dir" in ~/.config/ptouch/config.json
  4. ~/Nextcloud/Tools/P-Touch/Vorlagen (oder ~/NextCloud/…), wenn ein Nextcloud-Ordner existiert
  5. sonst ~/.config/ptouch/templates

Vorlagen, die vorher lokal unter ~/.config/ptouch/templates lagen, werden beim ersten Start in den Nextcloud-Ordner kopiert. Dabei wird nichts gelöscht.

Das Repository selbst gehört nicht in Nextcloud: Der Client überträgt keine Ausführrechte und kann den .git-Ordner beschädigen.

Einrichtung auf einem weiteren Rechner (z. B. Notebook)

1. Git-Zugang. Forgejo nimmt Git-SSH auf Port 5022 an. In ~/.ssh/config:

Host git.pv2car.com
    Port 5022

Den öffentlichen Schlüssel (~/.ssh/id_*.pub) in Forgejo unter Einstellungen → SSH-Schlüssel hinterlegen und prüfen:

git ls-remote git@git.pv2car.com:pv2car/p-touch-print.git

2. Pakete und Druckerrechte (danach einmal ab- und wieder anmelden):

sudo apt install git python3-pil python3-qrcode fontconfig
sudo adduser $USER lp

3. Klonen, auf denselben Pfad wie auf den anderen Rechnern, darauf ist die Dienstdatei eingestellt:

mkdir -p ~/src
git clone git@git.pv2car.com:pv2car/p-touch-print.git ~/src/p-touch-print

4. Dienst einrichten:

mkdir -p ~/.config/systemd/user
cp ~/src/p-touch-print/ptouch-web.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ptouch-web
journalctl --user -u ptouch-web -n 5 -o cat

Im Log sollten drei Zeilen stehen: „Aktuell“, „Vorlagen: …/Nextcloud/Tools/P-Touch/Vorlagen“ und „läuft auf http://localhost:8002/“.

5. Starter im Anwendungsmenü („P-touch Labels“, öffnet http://localhost:8002/ im Browser):

mkdir -p ~/.local/share/applications ~/.local/share/icons/hicolor/256x256/apps
cp ~/src/p-touch-print/ptouch.desktop ~/.local/share/applications/
cp ~/src/p-touch-print/ptouch-gui.png ~/.local/share/icons/hicolor/256x256/apps/

6. Öffnen: über den Starter oder direkt http://localhost:8002/. Die Vorlagen sind über Nextcloud schon da.

Worauf man achten sollte:

  • Anderer Nextcloud-Ordner: Erkannt werden ~/Nextcloud und ~/NextCloud. Liegt er woanders, ~/.config/ptouch/config.json anlegen: {"templates_dir": "/pfad/zu/Nextcloud/Tools/P-Touch/Vorlagen"}
  • Update im Dienst: Das klappt nur, wenn der SSH-Schlüssel ohne Passwortabfrage nutzbar ist. Sonst meldet das Log „Update übersprungen“, der Dienst startet trotzdem. Dann die neue Version mit git -C ~/src/p-touch-print pull holen und den Dienst mit systemctl --user restart ptouch-web neu starten.
  • Drucker: Gedruckt wird auf dem P-touch, der per USB an diesem Rechner hängt. Ohne Drucker kann man Labels gestalten und als Vorlage speichern und sie dann am Rechner mit Drucker ausdrucken.

Unterstützte Drucker

P-touch-Modelle mit 24-mm-Druckkopf (128 Pins, 180 dpi) und Brother-Rasterprotokoll, Anschluss per USB. Die Liste zeigt ptouch-label --models:

USB-ID Modell Status
04f9:2061 PT-P700 getestet
04f9:205e PT-H500 ungetestet
04f9:205f PT-E500 ungetestet
04f9:2060 PT-E550W ungetestet
04f9:2062 PT-P750W ungetestet
04f9:2074 PT-D600 ungetestet
04f9:20af PT-P710BT ungetestet, nur über USB

Meldet sich ein P700/P750W im P-Lite-Modus (USB-ID 2064/2065, „Editor Lite“ an), erscheint er als USB-Speicher und kann nicht drucken. Die Oberfläche weist dann darauf hin.

Nicht unterstützt: 36-mm-Modelle (PT-P900/P950NW, PT-P910BT, PT-E800/E850; anderer Kopf und 360 dpi) und reine Bluetooth-Geräte wie der PT-P300BT. Für andere Modelle mit 24-mm-Kopf kann das Gerät mit PTOUCH_DEVICE=/dev/usb/lpN erzwungen werden. Wer ein weiteres Modell erfolgreich testet, trägt es in MODELS in ptouch/printer.py ein.

Weboberfläche

ptouch-web            # http://localhost:8002/
ptouch-web --open     # zusätzlich Browser öffnen (läuft der Server schon, wird nur der Browser geöffnet)
ptouch-web --host 0.0.0.0 --port 8002   # im LAN erreichbar

Als Dienst im Hintergrund (startet beim Anmelden, inkl. automatischem Update; erwartet das Repository unter ~/src/p-touch-print, sonst ExecStart anpassen):

cp ptouch-web.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ptouch-web
journalctl --user -u ptouch-web        # Log
systemctl --user restart ptouch-web    # neu starten, z. B. um ein Update zu holen

Funktionen:

  • Elemente: Text (mehrzeilig, beliebige installierte Schrift, automatische Größe passend zur Bandhöhe, Drehung, invertiert), QR-Code, Linie, Rechteck, Bild (Schwellwert oder Rasterung)
  • Elemente mit der Maus verschieben, Größe über den Anfasser rechts unten ändern, Feinjustage mit den Pfeiltasten, Ausrichtung oben/mitte/unten
  • Bandbreite automatisch vom Drucker oder fest, Länge automatisch oder fest, Rahmen, ganzes Label invertieren
  • Mehrere Exemplare mit fortlaufender Nummer: Platzhalter {n}, {n:3} (001, 002 …), {date} – funktioniert in Texten und QR-Codes
  • Serie aus Textdatei: jede Zeile wird ein Label. Im Layout steht {line} für die Zeile, z. B. ein gemeinsames Logo plus Text-Element {line}. Mit „Größe an Bandhöhe anpassen“ bekommen alle Labels der Serie dieselbe Schriftgröße. Ein \n in einer Zeile erzeugt einen Zeilenumbruch. Die Liste lässt sich auch direkt in der Oberfläche bearbeiten, und die Vorschau kann durch die Labels blättern.
  • Schneiden vorher/nachher (ohne „nachher“ = Kettendruck)
  • Vorlagen (in Nextcloud, siehe oben), Export/Import als JSON, Druckbild als PNG
  • Rückgängig/Wiederholen, das aktuelle Layout bleibt im Browser erhalten

QR-Codes

Bedruckbare Höhe je Band (laut Brother-Doku): 3,5 mm = 24 px, 6 mm = 32 px, 9 mm = 50 px, 12 mm = 70 px, 18 mm = 112 px, 24 mm = 128 px. Die alte GTK-Oberfläche ging bei 12 mm von 84 px (und bei 9 mm von 60 px) aus. Der QR-Code war dadurch höher, als der Drucker druckt: Oben und unten fehlten Zeilen, also auch Teile der Suchmuster, und der Code war nicht lesbar.

Jetzt werden QR-Codes immer mit ganzzahliger Modulgröße erzeugt, passen in den bedruckbaren Bereich und haben eine weiße Ruhezone (Standard 2 Module), auch auf invertierten Labels. Die Oberfläche warnt, wenn ein Code abgeschnitten wird, nur 1 px pro Modul hat (schlecht lesbar) oder ein anderes Element in der Ruhezone liegt.

Kommandozeile

ptouch-label bild.png                 # Bild drucken (max. 128 px hoch, wird zentriert)
ptouch-label bild.pbm --cut-before    # vorher abschneiden
ptouch-label bild.pbm --chain         # nachher nicht abschneiden
ptouch-label --status                 # Status / eingelegtes Band anzeigen
ptouch-label --models                 # unterstützte Modelle