mirror of
https://codeberg.org/icewind/ptouch-api.git
synced 2026-06-03 19:04:08 +02:00
130 lines
3.4 KiB
Markdown
130 lines
3.4 KiB
Markdown
# ptouch-remote
|
|
|
|
Web interface and REST api for Brother P-touch label printers.
|
|
|
|

|
|

|
|
|
|
## Installation
|
|
|
|
You can download pre-built binaries from the
|
|
[releases page](https://codeberg.org/icewind/ptouch-remote/releases) or build it
|
|
yourself using `cargo build`.
|
|
|
|
## Configuring
|
|
|
|
```toml
|
|
[listen]
|
|
# by default the server listens over tcp
|
|
# address = "0.0.0.0" # defaults to "127.0.0.1"
|
|
# port = 1234 # defaults to 7074
|
|
# you can set it to listen over a unix socket instead.
|
|
socket = "/run/ptouch-remote.sock"
|
|
```
|
|
|
|
In additional to the `listen` configuration, the server will automatically
|
|
detect if it get's activated trough systemd socket activation and takes the
|
|
provided socket.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
ptouch-remote [--config config.toml]
|
|
```
|
|
|
|
## Permissions
|
|
|
|
You'll need to either run `ptouch-remote` as root or setup a udev rule to change
|
|
the owner or permissions to allow `ptouch-remote` to access the label printer
|
|
over usb.
|
|
|
|
See [51-ptouch-remote.rules](./51-ptouch-remote.rules) for an example udev rule,
|
|
placing this into `/etc/udev/rules.d` and adjusting the username as desired
|
|
should give the specified user access to the ptouch printer.
|
|
|
|
Alternatively you can use
|
|
[51-ptouch-remote-everyone.rules](./51-ptouch-remote-everyone.rules) to give all
|
|
users on the system access to the label printer.
|
|
|
|
## API
|
|
|
|
- GET `/status`: get printer and tape status for details about the fields.
|
|
- PUT `/print`: print the uploaded image, supports png, jpg and bmp
|
|
|
|
### Status
|
|
|
|
The returned status is a json with the following fields:
|
|
|
|
- `media_width`: width of the loaded tape in mm.
|
|
- `pixel_width`: the width of the printed image in pixels.
|
|
- `margin_width`: the left and right margin on the tape that can't be printed.
|
|
- `media_type`: material type of the loaded tape.
|
|
- `text_color`: text color for the loaded tape.
|
|
- `tape_color`: tape color for the loaded tape.
|
|
|
|
(note that the tape is assumed to be horizontal here, so "width" is the short
|
|
short direction)
|
|
|
|
## Supported printers
|
|
|
|
The following printers are currently supported
|
|
|
|
- PT-9200DX
|
|
- PT-2300
|
|
- PT-2420PC
|
|
- PT-2450PC
|
|
- PT-1950
|
|
- PT-2700
|
|
- PT-1230PC
|
|
- PT-2430PC
|
|
- PT-1230PC_PLite
|
|
- PT-2430PC_PLite
|
|
- PT-2730
|
|
- PT-H500
|
|
- PT-E500
|
|
- PT-P700
|
|
- PT-P750W
|
|
- PT-P700_PLite
|
|
- PT-P750W_PLite
|
|
- PT-D410
|
|
- PT-D450
|
|
- PT-D460BT
|
|
- PT-D600
|
|
- PT-D610BT
|
|
- PT-P710BT
|
|
|
|
## NixOs module
|
|
|
|
For NixOs users, a module is available as a flake that includes everything
|
|
needed run the api.
|
|
|
|
```nix
|
|
{
|
|
inputs.ptouch-remote.url = "git+ssh://git@codeberg.org/icewind/ptouch-remote.git";
|
|
|
|
outputs = { self, nixpkgs, ptouch-remote }: {
|
|
nixosConfigurations.my-machine = nixpkgs.lib.nixosSystem {
|
|
modules =
|
|
[
|
|
ptouch-remote.nixosModules.default
|
|
({config, ...}: {
|
|
# enable the api service and setup the udev rules
|
|
services.ptouch-remote = {
|
|
enable = true;
|
|
# socket = "/path/for/socket/to/listen"; # defaults to /run/ptouch-remote/ptouch-remote.sock
|
|
};
|
|
# expose the api to the outside world
|
|
services.nginx = {
|
|
virtualHosts."ptouch.example.com" = {
|
|
locations."/" = {
|
|
proxyPass = "http://unix://${config.services.ptouch-remote.socket}";
|
|
};
|
|
};
|
|
};
|
|
})
|
|
# ... other configuration ...
|
|
];
|
|
};
|
|
};
|
|
}
|
|
```
|