OpenQR is a PyQt6 application for listening to QR code scans (via HID/keyboard wedge scanners) and automatically opening URLs, with advanced customization, history, and safety features.
- Start/Stop QR code listening with real-time status indicator
- Automatically open scanned URLs in your default browser
- Scan history with timestamps, copy, and clear options (persisted across sessions)
- Domain management: allow/deny (whitelist/blacklist) lists for scanned URLs
- Preferences dialog for customizing prefix/suffix, notification type, and history size
- Upload and overlay a logo/image in the center of generated QR codes (with safe sizing and border)
- Generate QR codes with custom foreground/background colors
- Remove or reset logo overlay at any time
- Blocked domain and invalid URL warnings
- "Don't ask again for this domain" option in confirmation dialog
- Help dialog with detailed usage instructions
- All settings and history are persisted in your config directory
- Comprehensive unit tests for listener, app logic, and QR code generation
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
- Clone the repository:
git clone https://github.com/yourusername/openqr.git
cd openqr- Install dependencies:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtRun the application:
make run- Click the "Start Listening" button to begin detecting QR codes. When a URL is scanned, it will automatically open in your default browser (unless blocked or denied).
- Use the sidebar for scan history, status, and quick access to preferences and help.
- Access all settings and management dialogs from the menu bar.
This project uses Test-Driven Development (TDD) with pytest and pytest-qt.
Run tests:
make testThis project was developed with the assistance of Cursor IDE, an AI-powered IDE for modern Python development.
The program icon was sourced from iconarchive.com and made possible from Design Contest.
