GeoffreyFrogeye / dymoprint

Linux Software to print with LabelManager PnP from Dymo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dymoprint

GitHub Actions (Tests) PyPI version

Linux Software to print with LabelManager PnP from Dymo

Features

  • Text printing
  • QR code printing
  • Barcode printing
  • Image printing
  • Combinations of the above
  • GUI Application based on PyQt6

Experimental

  • LabelManager 280
  • LabelManager 420P
  • LabelManager Wireless PnP
  • Windows support by setting the driver to WinUSB using Zadig

For more information about experimental device support, see #44.

Installation

It is recommended to install dymoprint with pipx so that it runs in an isolated virtual environment:

pipx install dymoprint

In case pipx is not already installed, it can be installed on Ubuntu/Debian with

sudo apt-get install pipx

or on Arch with

sudo pacman -S python-pipx

By default, users don't have permission to access generic USB devices, so you will need to add a rule. The first time you run dymoprint, it will give instructions about how to do this:

$ dymoprint "Hello world"
...
You do not have sufficient access to the device. You probably want to add the a udev rule in /etc/udev/rules.d with the following command:

  echo 'ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0922", ATTRS{idProduct}=="1001", MODE="0666"' | sudo tee /etc/udev/rules.d/91-dymo-1001.rules
...

Testing experimental features

To install a test branch, by user ghuser for the branch branchname, run

pipx install --force git+https://github.com/ghuser/dymoprint@branchname

To revert back to the release version, run

pipx install --force dymoprint

To install a particular release version, specify dymoprint==x.y.z instead of dymoprint in the above command.

Development

To install for development, fork and clone this repository, and run (ideally within a venv):

pip install --editable .

This project uses pre-commit to run some checks before committing. After installing the pre-commit executable, please run

pre-commit install

Font management

Fonts are managed via dymoprint.ini. This should be placed in your config folder (normally ~/.config). An example file is provided here.

You may choose any TTF Font you like

You may edit the file to point to your favorite font.

For my Arch-Linux System, fonts are located at e.g.

/usr/share/fonts/TTF/DejaVuSerif.ttf

It is also possible to Download a font from http://font.ubuntu.com/ and use it.

Modes

Print text

dymoprint MyText

Multilines will be generated on whitespace

dymoprint MyLine MySecondLine # Will print two Lines

If you want whitespaces just enclose in " "

dymoprint "prints a single line"

Print QRCodes and Barcodes

dymoprint --help

Print Codes and Text

Just add a text after your qr or barcode text

dymoprint -qr "QR Content" "Cleartext printed"

Picture printing

Any picture with JPEG standard may be printed. Beware it will be downsized to tape.

dymoprint -p mypic.jpg ""

Take care of the trailing "" - you may enter text here which gets printed in front of the image

GUI

Run DymoPrint GUI

dymoprint_gui

Features

  • Live preview
  • margin settings
  • type size selector
  • visualization of tape color schema
  • the ability to freely arrange the content using the "Node" list
    • Text Node:
      • payload text - can be multi-line
      • font selector
      • font scaling - the percentage of line-height
      • frame border width steering
    • Qr Node:
      • payload text
    • BarCode Node:
      • payload text
      • codding selector
    • Image Node:
      • path to file

Nodes can be freely arranged, simply drag&drop rows on the list. To add or delete the node from the label - right-click on the list and select the action from the context menu. To print - click the print button.

Example

Example 1: multiple text + QR code

alt

Example 2: two images + text with frame, white on red

alt

Example 3: barcode, text, image

alt

Development

Besides the travis-ci one should run the following command on a feature implemention or change to ensure the same outcome on a real device:

dymoprint Tst && \
dymoprint -qr Tst && \
dymoprint -c code128 Tst && \
dymoprint -qr qrencoded "qr_txt" && \
dymoprint -c code128 Test "bc_txt"

ToDo

  • (?)support multiple ProductIDs (1001, 1002) -> use usb-modeswitch?
  • put everything in classes that would need to be used by a GUI
  • for more options use command line parser framework
  • allow selection of font with command line options
  • allow font size specification with command line option (points, pixels?)
  • provide an option to show a preview of what the label will look like
  • read and write a .dymoprint file containing user preferences
  • print barcodes
  • print graphics
  • plot frame around label
  • vertical print
  • refactor code with better abstractions
  • pixel fonts
  • web interface

About

Linux Software to print with LabelManager PnP from Dymo

License:Apache License 2.0


Languages

Language:Python 100.0%