Home - MultiMote/niimblue GitHub Wiki

Features

โœ… Currently implemented

  • Localization: translation
  • Advanced label properties editor:
    • Label presets.
    • Import/export label presets.
    • Change print direction (controls from what side image will be encoded).
    • Adding label presets yourself.
    • Label shapes: rectangle, rounded rectangle, circle.
    • Double (cable) labels. Tail length and tail position can be configured. image
    • Mirroring for double (cable) labels.
  • Label designer:
    • Autosaving last used label size.
    • Adding text, basic figures, images.
    • Adding icons.
    • Adding images by drag and drop.
    • Keyboard shortcuts:
      • Ctrl + V insert image or text from clipboard (#29)
      • Ctrl + D - clone object
      • Ctrl + Z - undo
      • Ctrl + Y or Ctrl + Shift + Z- redo
      • โ†’ โ†“ โ†‘ โ† - move selected objects
      • Del or Backspace - delete selected objects
      • Esc - discard selection
    • Zoom with mouse wheel (#59)
    • Adding QR codes (#9).
    • Adding Barcodes (#10).
    • Importing ZPL labels as images via Labelary API.
    • Adding ZPL labels (โ˜Labelary API) as images.
    • Cloning objects.
    • Deleting objects.
    • Centering objects (on double labels too).
    • Arrangement (send to front/back).
    • Undo/redo.
    • Some text controls (alignment, size, etc.).
    • Basic templating (dates currently supported):
      • You can insert current datetime with {dt}.
      • Dates can be formatted: {dt | DD.MM.YYYY}. Day.js is used for date formatting.
      • Objects with templating support: Text, Barcode (Code 128), QR Code.
    • Batch printing with CSV data.
  • Save/load menu:
    • Export/import label to localStorage or file system in JSON format.
    • Export label to PNG.
    • Label thumbnails.
    • Show localStorage used space, warn if data is too big.
  • Print preview:
    • You can see how your label will look like before printing.
    • Print offset (#41)
    • Print with OS printer (Chrome print dialog). *
      • Currently have some DPI problems so images may be blurry. Currently I don't know how to fix it.
    • Remember your most used print preview dialog parameters.
    • Print without preview if printer is connected (use saved parameters).
    • Post-processing algorithms (Threshold, Dither) for image rasterization.
    • If printer exists in models library, some parameters will be suggested (label types, print direction, etc.).
  • Experimental standalone apps:
  • Firmware flasher. Collected firmwares are hosted here.

โš’ Todo

  • Warn on unsaved changed.
  • Maybe discard selection by clicking on page background.
  • Printer settings menu (debug menu rework).
  • Variables menu.
  • Rework canvas scaling (https://codepen.io/Fjonan/pen/QwLgEby as reference maybe).
  • Font autosize.
  • Query fonts from Android app.
  • Add custom fonts.
  • Implement multi-page prints natively.
  • Insert images with dropping on canvas.
  • Set what pages to print in multi-page prints (CSV).
  • Make app work offline (service workers).
  • Maybe migrate to svelte 5.
  • Maybe importing .jcps labels.
  • UI/UX improvements. If you have any proposals - feel free to create an issue or pull request.
  • The rest of what I've forgotten.

๐ŸžBugs

  • Packets not sending anymore in certain situations (after print cancel, on error).
  • Inserted icon is not vertically centered.
  • Added element invisible sometimes.
  • Confirmation dialogs don't work when installed as a PWA.

* Implemented partially or needs some tweaks.

See niimbluelib (hardware interface) features here.

Why this name

I originally wanted to just create a library to work with NIIMBOT printers via Web Bluetooth. So the name came up with NIIMBOT Bluetooth (lib). Later I decided to make a complete application and split the project into two: NiimBlue and NiimBlueLib.

Other info

Running own instance with Docker

Testing with Arch linux (Artix for example)

niimbluelib docs (NIIMBOT protocol and API)

Discord Chat (troubleshooting, testing and other)