fix: finalize printer queue setup for 0.1.2
Some checks failed
Desktop Release / Bootstrap updater signing key (push) Has been cancelled
Desktop Release / Windows x64 NSIS (push) Has been cancelled
Desktop Release / Linux x64 DEB + AppImage (push) Has been cancelled
Desktop Release / Publish public desktop release (push) Has been cancelled

This commit is contained in:
Admin 2026-09-24 00:00:29 +00:00
parent 7301725791
commit d4975836b9
4 changed files with 28 additions and 4 deletions

View File

@ -37,3 +37,20 @@ curl -fsSL https://fieldlens.arrowstack.dev/downloads/install.sh | sh
```
The script supports x86_64/amd64 Debian/Ubuntu-style systems, downloads the public `.deb`, verifies its SHA-256, then installs it with the system package manager.
## Printer queue setup
FieldLens Print can create an OS printer queue that appears in normal application print dialogs.
1. Open FieldLens Print.
2. Choose the installed physical printer under **Forward to installed printer**.
3. For network printers, FieldLens detects the RAW/TCP endpoint when the OS exposes it. Otherwise enter the printer address manually as `host:9100`.
4. Click **Create / repair FieldLens Print** and approve the Windows UAC / Linux CUPS elevation prompt.
5. Start RAW capture.
6. In the source application, print to **FieldLens Print**.
Windows creates the virtual queue with the selected destination printer's existing driver and points it at `127.0.0.1:9100`, so the captured stream is already in the destination printer's language before FieldLens inspects and forwards it.
Linux creates a CUPS raw queue named `FieldLens-Print` with display name **FieldLens Print** and routes it to the same local RAW listener.
USB/shared queues may not expose a RAW/TCP address. In that case the installed-printer selector still supplies the driver for the virtual Windows queue, while the physical destination address must be entered manually.

View File

@ -1,6 +1,6 @@
{
"name": "@fieldlens/print",
"version": "0.1.1",
"version": "0.1.2",
"private": true,
"type": "module",
"scripts": {

View File

@ -28,6 +28,11 @@ pub struct VirtualPrinterStatus {
pub detail: String,
}
fn is_virtual_printer_name(name: &str) -> bool {
name.eq_ignore_ascii_case(VIRTUAL_PRINTER_NAME)
|| name.eq_ignore_ascii_case("FieldLens-Print")
}
pub fn list_system_printers() -> Result<Vec<SystemPrinter>> {
#[cfg(target_os = "windows")]
{
@ -46,7 +51,7 @@ pub fn list_system_printers() -> Result<Vec<SystemPrinter>> {
pub fn virtual_printer_status() -> Result<VirtualPrinterStatus> {
let installed = list_system_printers()?
.iter()
.any(|printer| printer.name.eq_ignore_ascii_case(VIRTUAL_PRINTER_NAME));
.any(|printer| is_virtual_printer_name(&printer.name));
Ok(VirtualPrinterStatus {
installed,
@ -263,7 +268,7 @@ fn list_linux_printers() -> Result<Vec<SystemPrinter>> {
driver: String::new(),
port: uri.to_string(),
address,
is_virtual: name.eq_ignore_ascii_case(VIRTUAL_PRINTER_NAME),
is_virtual: is_virtual_printer_name(name),
});
}
printers.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase()));
@ -293,6 +298,8 @@ fn install_linux_virtual_printer() -> Result<()> {
"socket://127.0.0.1:9100",
"-m",
"raw",
"-D",
VIRTUAL_PRINTER_NAME,
];
let direct = Command::new("lpadmin").args(args).status();

View File

@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "FieldLens Print",
"version": "0.1.1",
"version": "0.1.2",
"identifier": "dev.arrowstack.fieldlens.print",
"build": {
"beforeDevCommand": "npm run dev",