160 lines
4.2 KiB
Markdown
160 lines
4.2 KiB
Markdown
# Print Queue Manager
|
|
|
|
A simple command-line tool to store things you want to print when you're away from your home network, then print them all at once when you're back.
|
|
|
|
## Features
|
|
|
|
- Store file paths and URLs in a print queue
|
|
- **Watch folder**: Drop files into `~/to-print` and they'll be printed automatically
|
|
- Print all pending items with a single command
|
|
- Track what's been printed and what's still pending
|
|
- Works with your default macOS printer
|
|
|
|
## Requirements
|
|
|
|
- Python 3.6+
|
|
- macOS (uses `lp` command for printing)
|
|
- `curl` (for downloading URLs)
|
|
|
|
## Usage
|
|
|
|
### Two ways to queue items
|
|
|
|
**Method 1: Manually add items to the queue**
|
|
|
|
Add a local file:
|
|
```bash
|
|
./print_queue.py add /path/to/document.pdf
|
|
./print_queue.py add ~/Downloads/invoice.pdf --name "Monthly Invoice"
|
|
```
|
|
|
|
Add a URL:
|
|
```bash
|
|
./print_queue.py add https://example.com/article.html
|
|
./print_queue.py add https://example.com/page.html --name "Important Article"
|
|
```
|
|
|
|
**Method 2: Use the watch folder (simpler!)**
|
|
|
|
Just drop files into `~/to-print`:
|
|
```bash
|
|
cp ~/Downloads/document.pdf ~/to-print/
|
|
mv ~/Desktop/receipt.pdf ~/to-print/
|
|
```
|
|
|
|
The watch folder accepts: PDF, TXT, JPG, PNG, GIF, DOC, DOCX, HTML, and PS files.
|
|
|
|
### List items in the queue
|
|
|
|
Show pending items:
|
|
```bash
|
|
./print_queue.py list
|
|
```
|
|
|
|
Show all items (including already printed):
|
|
```bash
|
|
./print_queue.py list --all
|
|
```
|
|
|
|
### Print all pending items
|
|
|
|
Print everything in the queue:
|
|
```bash
|
|
./print_queue.py print
|
|
```
|
|
|
|
Preview what would be printed (dry run):
|
|
```bash
|
|
./print_queue.py print --dry-run
|
|
```
|
|
|
|
### Remove items from queue
|
|
|
|
Remove a specific item by ID:
|
|
```bash
|
|
./print_queue.py remove 3
|
|
```
|
|
|
|
Clear all printed items from the queue:
|
|
```bash
|
|
./print_queue.py clear
|
|
```
|
|
|
|
## How it works
|
|
|
|
**Manual queue:**
|
|
1. When you're away from your home network, use `add` to store items in the queue
|
|
2. The queue is stored in `queue.json` in this directory
|
|
3. When you're back on your home network, run `print` to print everything
|
|
4. Items are marked as printed but stay in the queue
|
|
5. Use `clear` to remove printed items when you're done
|
|
|
|
**Watch folder:**
|
|
1. Drop any files into `~/to-print` whenever you want
|
|
2. When you run `print`, all files in the folder are printed
|
|
3. After printing, files are moved to `~/to-print/printed/` to avoid reprinting
|
|
4. You can delete or keep the printed files - they won't be reprinted
|
|
|
|
## Examples
|
|
|
|
**Using the watch folder (easiest):**
|
|
```bash
|
|
# Away from home - just drop files in the folder
|
|
cp ~/Downloads/receipt.pdf ~/to-print/
|
|
cp ~/Desktop/ticket.pdf ~/to-print/
|
|
|
|
# Back home - check what's ready
|
|
./print_queue.py list
|
|
|
|
# Print everything
|
|
./print_queue.py print
|
|
```
|
|
|
|
**Using manual queue (for URLs or tracking):**
|
|
```bash
|
|
# Away from home - add items to queue
|
|
./print_queue.py add ~/Downloads/receipt.pdf
|
|
./print_queue.py add https://github.com/user/repo/blob/main/README.md --name "GitHub README"
|
|
|
|
# Back home - check what's queued
|
|
./print_queue.py list
|
|
|
|
# Print everything
|
|
./print_queue.py print
|
|
|
|
# Later, clean up printed items
|
|
./print_queue.py clear
|
|
```
|
|
|
|
**Mix both methods:**
|
|
```bash
|
|
# Add URLs to queue
|
|
./print_queue.py add https://example.com/article.html
|
|
|
|
# Drop files in folder
|
|
cp ~/Downloads/*.pdf ~/to-print/
|
|
|
|
# Print everything at once (queue + folder)
|
|
./print_queue.py print
|
|
```
|
|
|
|
## Tips
|
|
|
|
- **Watch folder is the easiest**: Just drop files into `~/to-print` - no commands needed until you're ready to print
|
|
- File paths are converted to absolute paths, so they'll work even if you change directories
|
|
- URLs are downloaded and sent directly to the printer
|
|
- For better web page printing, consider saving the page as PDF first, then dropping it in the watch folder
|
|
- Use `--name` to give items friendly names instead of long file paths or URLs
|
|
- Printed files from the folder are moved to `~/to-print/printed/` - check there if you need to reprint something
|
|
|
|
## Troubleshooting
|
|
|
|
**"File not found" error**: Make sure the file path is correct and the file exists
|
|
|
|
**Printing fails**:
|
|
- Check that your printer is set up and `lpstat -p -d` shows your default printer
|
|
- Make sure you're connected to the network where your printer is available
|
|
- For URLs, ensure you have internet connectivity
|
|
|
|
**Permission denied**: Make sure the script is executable with `chmod +x print_queue.py`
|