Download Printol
One installer. It sets itself to run at login, takes a port in the 47600–47619 range, and is ready for your web app before you have finished reading this page.
Installers are not published yet
This page reads the latest release from crawlink/printol and shows whatever it finds there. Nothing has been
tagged yet, or GitHub could not be reached just now.
You can build it yourself in the meantime — the desktop app is in desktop/ in the repository:
git clone https://github.com/crawlink/printol.git
cd printol/desktop
npm install
npm run tauri build # installers land in src-tauri/target/release/bundleInstalling it
These are prebuilt packages — nothing to compile, no toolchain, no dependencies to install first. Download the one for your system and open it.
Windows
- 1. Download the
.exeinstaller above. - 2. Open it. Windows shows the blue “Windows protected your PC” screen — see below for why, and what to press.
- 3. Accept the default location. It installs in a few seconds.
- 4. Printol starts, puts an icon in the notification area, and begins listening.
SmartScreen warns about any installer it has not seen downloaded many times before. It is a reputation score, not a virus scan — a brand-new release always triggers it, and it fades as more people install.
Click More info, then Run anyway.
If you would rather verify first, check the file against checksums.txt in the release before running it.
Microsoft Defender SmartScreen prevented an unrecognised app from starting. Running this app might put your PC at risk.
App: Printol_0.1.0_x64-setup.exe
Publisher: Unknown publisher
macOS
- 1. Download the
.dmg— Apple silicon for M1 and later, Intel for anything older. - 2. Open it and drag Printol into Applications.
- 3. The first launch is refused, with a warning about an unverified developer.
- 4. Right-click Printol in Applications and choose Open, then Open again. Double-clicking keeps refusing; only the right-click route offers the override.
Gatekeeper blocks applications that are not notarised by Apple, which needs a paid developer account. Printol is free, so builds are currently unsigned.
Right-click → Open → Open. Once, not every launch.
On Sequoia and later the Open option may not appear; go to System Settings → Privacy & Security, find the message about Printol, and press Open Anyway.
“Printol” can’t be opened because Apple cannot check it for malicious software.
This software needs to be updated. Contact the developer for more information.
Linux
No warning to click through, but an AppImage needs its execute bit set — a file permission, not a security prompt.
# Debian, Ubuntu, Mint
sudo apt install ./printol_0.1.0_amd64.deb
# Fedora, RHEL
sudo dnf install ./printol-0.1.0-1.x86_64.rpm
# Anything else — AppImage, nothing installed
chmod +x Printol_0.1.0_amd64.AppImage
./Printol_0.1.0_amd64.AppImageThe .deb and .rpm pull in cups-client, which provides the lp command Printol uses to reach a printer. An AppImage installs
nothing, so make sure CUPS is already there.
The first five minutes
- 1It starts and stays started
Printol registers itself as a login item and puts an icon in the tray or menu bar. Closing the window does not stop it — the bridge has to outlive the window, or a web app could only print while somebody had the app open.
- 2It takes a port
The listener binds the first free port from 47600 upward, on 127.0.0.1 only. The tray menu shows which one it got. Nothing on the network can reach it.
- 3You add a printer
Printol lists what the operating system already knows about, so this is usually two clicks: pick the printer, say which paper is loaded, print the test page. That page prints a numbered ruler — if the last digit does not touch the right edge, the column count is wrong and every receipt after it will be too.
- 4Your web app pairs once
The first time your site calls connect(), a dialog appears on the counter screen naming your site with a six-digit code. Somebody clicks Allow. That is the last time anyone is interrupted.
You only download it once
After the first install, Printol finds new versions itself: it checks once a day, shows a banner when there is one, and installs it when you say so. It never restarts itself without asking — a print bridge that vanishes mid-shift while somebody is holding a queue is not a print bridge anybody keeps.
Every update package is signed, and the signature is checked against a key built into the copy you already have before a single byte is written. That check is what makes automatic updating safe on a machine holding your books: a tampered package is refused, not installed. The daily check sends a version number and nothing else, and you can turn it off in Settings.
Requirements
- Windows
- Windows 10 1809 or later, x64. WebView2 is installed automatically by the installer if it is missing.
- macOS
- macOS 11 Big Sur or later. Universal builds are published for Apple silicon and Intel separately.
- Linux
- A glibc 2.31 or later distribution with WebKitGTK 4.1 — Ubuntu 22.04, Debian 12, Fedora 38 and later. CUPS provides the printer list.
- Printers
- Anything the OS can already print to, plus network printers reachable on raw TCP port 9100. USB thermal printers work through the system spooler in RAW mode.
- Disk
- About 40 MB installed. The local database grows roughly 1 MB per 5,000 invoices.
Verifying what you downloaded
Installers are built in public by GitHub Actions from a tagged commit, and every release
carries a checksums.txt. Updates are signed with a key
that never leaves the release workflow, and the app refuses an update whose signature does not
verify.
# Every installer is published with its SHA-256 beside it.
shasum -a 256 Printol_0.1.0_aarch64.dmg
# compare against checksums.txt in the same releaseWindows SmartScreen may warn on first run until the installer has been downloaded enough times to build reputation. Choose “More info → Run anyway”, or check the checksum first.