Skip to content

Commit e8172b1

Browse files
committed
Merge gh-pages branch: Move Docusaurus site to root level for GitHub Pages deployment
2 parents 011e3c3 + 7999a7d commit e8172b1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+21497
-718
lines changed

.github/workflows/deploy.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v4
15+
16+
- name: Setup Node.js
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: '18'
20+
cache: 'npm'
21+
22+
- name: Install dependencies
23+
run: npm ci
24+
25+
- name: Build website
26+
run: npm run build
27+
28+
- name: Upload artifact
29+
uses: actions/upload-pages-artifact@v3
30+
with:
31+
path: ./build
32+
33+
deploy:
34+
environment:
35+
name: github-pages
36+
url: ${{ steps.deployment.outputs.page_url }}
37+
runs-on: ubuntu-latest
38+
needs: build
39+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
40+
steps:
41+
- name: Deploy to GitHub Pages
42+
id: deployment
43+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Dependencies
2+
/node_modules
3+
4+
# Production
5+
/build
6+
7+
# Generated files
8+
.docusaurus
9+
.cache-loader
10+
11+
# Misc
12+
.DS_Store
13+
.env.local
14+
.env.development.local
15+
.env.test.local
16+
.env.production.local
17+
18+
npm-debug.log*
19+
yarn-debug.log*
20+
yarn-error.log*

README.md

Lines changed: 71 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,93 @@
1-
# 🖨️ AirPrint Bridge: Seamlessly Enable AirPrint for Non-AirPrint Printers on macOS
2-
Print Wirelessly from Your iPhone and iPad — No AirPrint Printer Required!
1+
# 🖨️ AirPrint Bridge
32

4-
## 📜 Description
5-
6-
AirPrint Bridge enables AirPrint functionality on macOS for printers that don't natively support it. This script allows iOS and iPadOS devices to print directly to printers that do not natively support AirPrint. The project doesn’t rely on any additional binaries that aren't built in on macOS, uses almost no resources, and is entirely automated. It naturally supports Apple’s Bonjour Sleep Proxy, so printers will continue to work when the host computer is asleep or rebooted (even pre-login).
7-
8-
![Bash Script](https://img.shields.io/badge/bash_script-%23121011.svg?style=for-the-badge&logo=gnu-bash&logoColor=white) ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=macos&logoColor=F0F0F0)
9-
10-
Developing and maintaining projects of this nature requires time and dedication. If you appreciate the effort, please feel free to show your support by giving this repository a ⭐.
11-
---
12-
13-
## 📋 Table of Contents
14-
15-
- [⭐ Features](#-features)
16-
- [🛠️ Requirements](#️-requirements)
17-
- [💾 Installation](#-installation)
18-
- [⚙️ Additional Options](#️-additional-options)
19-
- [🗑️ Uninstallation](#️-uninstallation)
20-
- [💡 How It Works](#-how-it-works)
21-
- [❓ Troubleshooting](#-troubleshooting)
22-
- [📄 License](#-license)
23-
- [🙌 Acknowledgements](#-acknowledgements)
24-
- [🤝 Contributing](#-contributing)
25-
- [📜 Trademark Attribution](#-trademark-attribution)
26-
- [🛡️ Disclaimer](#️-disclaimer)
3+
**Seamlessly Enable AirPrint for Non-AirPrint Printers on macOS**
274

28-
---
29-
30-
## ⭐ Features
5+
Print wirelessly from your iPhone and iPad — no AirPrint printer required!
316

32-
- **Enable AirPrint for Non-AirPrint Printers**: Share printers that do not natively support AirPrint with your iOS devices.
33-
- **Automatic Detection**: Automatically detects shared printers lacking AirPrint support.
34-
- **Persistent Service**: Installs as a `launchd` service to ensure AirPrint functionality is always available.
35-
- **Test Mode**: Run in test mode to verify functionality before installation.
36-
- **Easy Uninstallation**: Clean removal of the script and associated services.
37-
- **Bonjour Sleep Proxy**: Automatically registers with the sleep proxy so AirPrint services continue to work when the system is asleep.
7+
![Bash Script](https://img.shields.io/badge/bash_script-%23121011.svg?style=for-the-badge&logo=gnu-bash&logoColor=white) ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=macos&logoColor=F0F0F0) ![License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)
388

39-
## 🛠️ Requirements
9+
## 📜 Description
4010

41-
- **Operating System**: macOS 10.15 (Catalina) or later. (Not officially tested on macOS versions prior to 10.15, but likely compatible.)
42-
- **Shell**: Bash.
43-
- A trusty old **printer**
11+
AirPrint Bridge enables AirPrint functionality on macOS for printers that don't natively support it. This script allows iOS and iPadOS devices to print directly to printers that do not natively support AirPrint. The project doesn't rely on any additional binaries that aren't built in on macOS, uses almost no resources, and is entirely automated. It naturally supports Apple's Bonjour Sleep Proxy, so printers will continue to work when the host computer is asleep or rebooted (even pre-login).
4412

45-
## 💾 Installation
13+
## 🚀 Quick Start
4614

4715
### 1. Share Your Printers
4816

4917
Enable printer sharing via:
5018
- **System Settings > General > Sharing** (macOS Ventura and newer), or
5119
- **System Preferences > Sharing** (older macOS versions)
5220

53-
Check the box for **Printer Sharing** and select the printer(s) you’d like to share. Alternatively, visit **System Settings > Printers & Scanners**, select the printer(s), and enable “Share this printer on the network.”
54-
55-
### 2. Download the Script
21+
Check the box for **Printer Sharing** and select the printer(s) you'd like to share.
5622

57-
Clone the repository or download the `airprint_bridge.sh` script directly:
23+
### 2. Download and Install
5824

5925
```bash
26+
# Clone the repository
6027
git clone https://github.com/sapireli/AirPrint_Bridge.git
6128
cd AirPrint_Bridge
62-
```
6329

64-
### 3. Make the Script Executable
65-
66-
Open **Terminal.app** and navigate to the folder where you saved the script (e.g., `cd Downloads`).
67-
68-
```bash
30+
# Make the script executable
6931
chmod +x airprint_bridge.sh
70-
```
71-
72-
### 4. Test the Script
73-
74-
Run the script in **test mode**:
7532

76-
```bash
33+
# Test the script first
7734
sudo ./airprint_bridge.sh -t
78-
```
79-
80-
What happens:
81-
82-
1. Detects local shared printers that lack AirPrint support.
83-
2. Checks and fixes firewall and cups config as required
84-
3. Generates a registration script (`airprint_bridge_launcher.sh`) to register printers via `dns-sd`.
85-
4. Runs that registration script in the foreground so you can test printing from an iOS device.
86-
87-
The script will now hang while advertising your printers. If you can see and use your printer from iOS, you’re ready to install. **Use `CTRL-C`** to terminate.
88-
89-
### 5. Install the Service
9035

91-
```bash
36+
# Install the service
9237
sudo ./airprint_bridge.sh -i
9338
```
9439

95-
- Detects local shared printers that lack AirPrint support.
96-
- Generates (or updates) the registration script.
97-
- Creates and loads a `launchd` plist so your printers are always advertised at startup/reboot.
98-
99-
### 6. Verify Installation
40+
### 3. Start Printing
10041

10142
Open an app on your iOS device with printing capabilities (Safari, Mail, Photos, etc.), tap **Print**, and choose the newly advertised printer(s).
102-
Happy Printing!
10343

104-
## ⚙️ Additional Options
44+
## ✨ Key Features
10545

106-
### 1. Logging
46+
- **🖨️ Enable AirPrint for Non-AirPrint Printers**: Share printers that do not natively support AirPrint with your iOS devices
47+
- **🔍 Automatic Detection**: Automatically detects shared printers lacking AirPrint support
48+
- **🔄 Persistent Service**: Installs as a `launchd` service to ensure AirPrint functionality is always available
49+
- **🧪 Test Mode**: Run in test mode to verify functionality before installation
50+
- **🗑️ Easy Uninstallation**: Clean removal of the script and associated services
51+
- **💤 Bonjour Sleep Proxy**: Automatically registers with the sleep proxy so AirPrint services continue to work when the system is asleep
10752

108-
By default, **logging** is disabled, so the script outputs only to the terminal (stderr). If you would like to enable verbose logging to a file named `airprint_bridge.log` in the script’s directory, open `airprint_bridge.sh` and set:
53+
## 📚 Documentation
10954

110-
```bash
111-
LOGGING=1
112-
```
55+
📖 **Full Documentation**: [https://sapireli.github.io/AirPrint_Bridge/](https://sapireli.github.io/AirPrint_Bridge/)
56+
57+
The documentation includes:
58+
- 📥 [Installation Guide](https://sapireli.github.io/AirPrint_Bridge/docs/installation)
59+
- 🔧 [Troubleshooting](https://sapireli.github.io/AirPrint_Bridge/docs/troubleshooting)
60+
- ⚙️ [Advanced Configuration](https://sapireli.github.io/AirPrint_Bridge/docs/advanced-configuration)
61+
- 💡 [How It Works](https://sapireli.github.io/AirPrint_Bridge/docs/how-it-works)
62+
- 🤝 [Contributing Guide](https://sapireli.github.io/AirPrint_Bridge/docs/contributing)
63+
64+
## 🛠️ Requirements
11365

114-
With `LOGGING=1`, any messages output by the script will also be appended to `airprint_bridge.log`. This is helpful for debugging or auditing the script’s activity.
66+
- **Operating System**: macOS 10.15 (Catalina) or later
67+
- **Shell**: Bash
68+
- **Printer**: Any printer that can be shared on macOS
11569

116-
### 2. Custom Script Filename (`-f`)
70+
## 💡 How It Works
11771

118-
The `-f` option allows you to specify a **custom filename and/or location** for the generated AirPrint registration script. By default, the script is named `airprint_bridge_launcher.sh` and is created in the current working directory (then copied to `/usr/local/bin` during installation).
72+
1. **Printer Detection**: Identifies all shared printers on your Mac; filters out those already AirPrint-capable
73+
2. **Capability Analysis**: Generates a suitable URF string based on each printer's capabilities (color, duplex, paper types, etc.)
74+
3. **Bonjour Registration**: Uses `dns-sd` to advertise each printer under the `_ipp._tcp.,_universal` service type
75+
4. **Launchd Integration**: Automatically starts and keeps the advertising service running in the background, even before user login
76+
5. **Bonjour Sleep Proxy**: macOS's built-in Bonjour Sleep Proxy keeps these printers discoverable to iOS devices, even if the Mac is sleeping
11977

120-
For example, to place the launcher script in a custom path:
78+
## 🎯 Use Cases
12179

122-
```bash
123-
./airprint_bridge.sh -t -f /path/to/custom_launcher.sh
124-
```
80+
- **Home Users**: Enable AirPrint for older printers without buying new hardware
81+
- **Small Offices**: Share existing network printers with iOS devices
82+
- **Developers**: Test printing functionality on iOS apps with any printer
83+
- **Educational Institutions**: Enable students to print from iPads to existing infrastructure
12584

126-
This tells `airprint_bridge.sh` to generate `/path/to/custom_launcher.sh` rather than the default `airprint_bridge_launcher.sh`. This can be useful if you need the script in a specific location or under a specific name.
85+
## 🔧 Advanced Features
12786

128-
> **Note**: The `-f` option only overrides the generation of the **registration** script, not the main `airprint_bridge.sh` itself.
87+
- **Custom Script Location**: Specify custom paths for the registration script
88+
- **Verbose Logging**: Enable detailed logging for debugging
89+
- **Test Mode**: Verify functionality before permanent installation
90+
- **Clean Uninstallation**: Complete removal of all components
12991

13092
## 🗑️ Uninstallation
13193

@@ -135,42 +97,38 @@ To remove AirPrint Bridge entirely:
13597
sudo ./airprint_bridge.sh -u
13698
```
13799

138-
- Unloads and removes the `launchd` plist file.
139-
- Deletes the registration script from `/usr/local/bin`.
140-
- Restores cups config changes if previously modified by script.
141-
- Terminates any running `dns-sd` processes associated with AirPrint Bridge. (skips gracefully if none are found)
100+
This will:
101+
- Unload and remove the `launchd` plist file
102+
- Delete the registration script from `/usr/local/bin`
103+
- Restore CUPS configuration changes if previously modified by script
104+
- Terminate any running `dns-sd` processes associated with AirPrint Bridge
142105

143-
Your system will be returned to its original state (i.e., as if AirPrint Bridge was never installed).
106+
## 🤝 Contributing
144107

145-
## 💡 How It Works
108+
We welcome contributions! Please see our [Contributing Guide](https://sapireli.github.io/AirPrint_Bridge/docs/contributing) for details.
146109

147-
1. **Printer Detection**: Identifies all shared printers on your Mac; filters out those already AirPrint-capable.
148-
2. **Capability Analysis**: Generates a suitable URF string based on each printer’s capabilities (color, duplex, paper types, etc.).
149-
3. **Bonjour Registration**: Uses `dns-sd` to advertise each printer under the `_ipp._tcp.,_universal` service type.
150-
4. **Launchd Integration**: Automatically starts and keeps the advertising service running in the background, even before user login.
151-
5. **Bonjour Sleep Proxy**: macOS’s built-in Bonjour Sleep Proxy keeps these printers discoverable to iOS devices, even if the Mac is sleeping.
110+
### Development Setup
152111

153-
## ❓ Troubleshooting
112+
```bash
113+
# Clone the repository
114+
git clone https://github.com/sapireli/AirPrint_Bridge.git
115+
cd AirPrint_Bridge
154116

155-
- **Printers Not Found**: Confirm the printers are installed, powered on, and marked “Shared” on your Mac.
156-
- **Dependencies Missing**: Ensure that `dns-sd`, `lpstat`, `lpoptions`, and `launchctl` are installed (they are typically standard on macOS).
157-
- **Permission Issues**: Use `sudo` for installation or uninstallation.
158-
- **Firewall Issues**: Make sure printer sharing and Bonjour services aren’t blocked in your macOS firewall.
159-
- **No Output in Log**: If you enabled logging but see no file, ensure the script has permission to create/write the file.
160-
- **Phantom Printer Remains**: Toggle macOS **Printer Sharing** off and back on if a printer still appears after uninstalling.
117+
# Install documentation dependencies
118+
npm install
119+
120+
# Start documentation development server
121+
npm start
122+
```
161123

162124
## 📄 License
163125

164-
This project is licensed under the MIT License.
126+
This project is licensed under the MIT License - see the [License](https://sapireli.github.io/AirPrint_Bridge/docs/license) page for details.
165127

166128
## 🙌 Acknowledgements
167129

168130
- Inspired by [@PeterCrozier](https://github.com/PeterCrozier/AirPrint)
169-
- Insights from [GeekBitZone’s AirPrint guide](https://www.geekbitzone.com/posts/2021/macos/airprint/macos-airprint/)
170-
171-
## 🤝 Contributing
172-
173-
Feedback, bug reports, and pull requests are encouraged and appreciated. Feel free to open an issue on GitHub.
131+
- Insights from [GeekBitZone's AirPrint guide](https://www.geekbitzone.com/posts/2021/macos/airprint/macos-airprint/)
174132

175133
## 🌟 Give It a Star ⭐
176134

@@ -182,42 +140,6 @@ If you find this project useful or interesting, please consider giving it a star
182140

183141
AirPrint, iPhone, iPad, Mac, and macOS are trademarks of Apple Inc., registered in the U.S. and other countries. Bonjour is a trademark of Apple Inc. Other trademarks and trade names may be used in this project to refer to entities claiming the marks and names of their respective products. Use of these trademarks does not imply any affiliation with or endorsement by their respective owners.
184142

185-
---
186-
187143
## 🛡️ Disclaimer
188144

189145
This script is provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, or non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
190-
191-
---
192-
## 🔍 SEO Keywords
193-
194-
- Enable AirPrint for non-AirPrint printers
195-
- Print from iPhone to shared printer
196-
- How To Print to iPhone or iPad With or Without AirPrint
197-
- AirPrint for older printers
198-
- macOS AirPrint bridge
199-
- iPad printing non-AirPrint printer
200-
- Add AirPrint support to printer macOS
201-
- Print wirelessly from iPhone to any printer
202-
- Open source AirPrint solution
203-
- Convert non-AirPrint printers to AirPrint
204-
- iOS printing non-AirPrint
205-
- Turn macOS into AirPrint server
206-
- AirPrint without new hardware
207-
- free AirPrint solution
208-
- Enable AirPrint on legacy printers
209-
- Turn shared printers into AirPrint devices
210-
- iPhone printing with shared printers
211-
- Hack to allow AirPrint print sharing on a Mac
212-
- Airprint Activator
213-
- Airprint Enabler
214-
- AirPrint Hacktivator
215-
- enable AirPrint on older printers
216-
- make non-AirPrint printers AirPrint compatible
217-
- print fron an iphone to a non-AirPrint compatible printer
218-
- free alternative to Handyprint
219-
- iOS Airprint Sharing on Mac OS
220-
- iOS AirPrint for Mac
221-
- enable AirPrint for any printer
222-
- Airprint proxy
223-
- How to turn your Mac into an AirPrint server using Airprint Bridge

0 commit comments

Comments
 (0)