Desktop notification tool for clipboard color code detection
Project description
Color Notify
A desktop notification tool that detects color codes in your clipboard and displays beautiful growl-style notifications with the detected color as background. Now includes an integrated Color Picker dialog for manual color selection!
โจ Features
Clipboard Monitoring
- ๐จ Auto-detect color codes - Supports HEX (#FF0000, #F00) and RGB (rgb(255, 0, 0))
- ๐ Growl-style notifications - Frameless, borderless, with smooth fade animations
- ๐ Flexible positioning - 9 positions: left/center/right ร up/center/down
- ๐๏ธ Adjustable transparency - Opacity from 0.0 to 1.0
- โฑ๏ธ Configurable timeout - Auto-hide after specified time or keep visible (0 = no auto-hide)
Color Picker Dialog
- ๐จ Interactive color picker - Qt color dialog integration
- ๐ Smart positioning - Color dialog opens next to picker (configurable: left/right/top/bottom)
- ๐ฏ Smart focus management - Focus returns to previous window on Escape
- โ๏ธ Auto-hide option - Optionally close picker after color selection
- โจ๏ธ Global shortcut - Ctrl+Alt+Shift+C to open from anywhere
- ๐พ Auto-copy to clipboard - Selected colors automatically copied
- ๐ Hex input support - Manually enter hex color codes
- โจ๏ธ Keyboard shortcuts - Quick access with hotkeys
- ๐บ Always on top - Toggle with keyboard shortcuts
- ๐ Live clipboard detection - Auto-updates from clipboard
System Integration
- โ๏ธ INI configuration - All settings in
.color-notify.iniorcolor-notify.ini - ๐ฅ๏ธ System tray integration - Background monitoring with tray menu
- ๐ Always on Top - Optional AOT mode
- ๐ Smart text color - Auto black/white text based on luminance
- โธ๏ธ Pause/Resume - Toggle monitoring from tray menu
- ๐ฑ๏ธ Click to dismiss - Click notification to close it
๐ฆ Installation
pip install color-notify
Requirements
- Python 3.6+
- PyQt5
- pynput (for global hotkey support)
Note: The global hotkey
Ctrl+Alt+Shift+Crequirespynput. If not installed, you can still use the tray menu to access the color picker.
๐ Usage
Run the application
color-notify
Or run as Python module:
python -m color_notify
The application will start in the background with a system tray icon.
Clipboard Monitoring Mode
-
Copy a color code to your clipboard:
#FF5733#F00rgb(255, 87, 51)rgb(100, 200, 150)
-
A notification will appear with the color as background!
Color Picker Mode
-
Right-click the tray icon and select "๐จ Color Picker"
OR
Press global shortcut:
Ctrl+Alt+Shift+C(from anywhere!) -
Use the color picker dialog to:
- Click "Choose Color" to open Qt color dialog
- Type hex code in input field and press Enter
- Selected color automatically copied to clipboard
Color Picker Keyboard Shortcuts
Ctrl+Alt+Shift+C- Open color picker (global shortcut)QorEscape- Close color pickerA- Enable always on topShift + A- Disable always on topEnter- Set color from hex input
โ๏ธ Configuration
Color Notify looks for configuration in:
~/.color-notify.ini(user home directory) - Recommendedcolor-notify.ini(current directory) - Fallback
Create or edit the configuration file:
[notification]
# Position: left_up, left_center, left_down,
# center_up, center_center, center_down,
# right_up, right_center, right_down
position = right_center
# Transparency (0.0 - 1.0)
opacity = 0.95
# Keep notification always on top
always_on_top = True
# Auto-hide timeout in milliseconds
# 0 = no auto-hide (stays until clicked)
timeout = 3000
# Margin from screen edge in pixels
margin = 20
# Enable notification sound (not implemented yet)
sound_enabled = False
[color_picker]
# Position of Qt Color Dialog relative to Color Picker
# Options: left, right, top, bottom
color_dialog_position = right
# Auto-hide Color Picker after selecting a color
# True = Closes picker and returns to previous window
# False = Keeps picker open for multiple picks (default)
auto_hide_after_pick = False
[detection]
# Detect HEX format (#FF0000, #F00)
detect_hex = True
# Detect RGB format (rgb(255, 0, 0))
detect_rgb = True
# Detect HSL format (not implemented yet)
detect_hsl = False
# Clipboard polling interval in milliseconds
# Lower = more responsive but may cause clipboard conflicts on Windows
# Recommended: 1000-2000ms for Windows, 500-1000ms for Linux/macOS
poll_interval = 1000
Note for Windows Users: If you see clipboard warning messages, increase
poll_intervalto 1500-2000ms in the config file. This prevents conflicts with other clipboard applications.
Quick Config Access
Right-click the tray icon and select "Open Config File" to edit settings.
๐ฏ System Tray Menu
- ๐จ Color Picker (Ctrl+Alt+Shift+C) - Open color picker dialog
- ๐งช Test Notification - Display a random color notification
- โธ๏ธ Pause/Resume Monitoring - Toggle clipboard monitoring
- ๐ Reload Config - Reload configuration without restart
- โ๏ธ Open Config File - Open config file in default editor
- โน๏ธ About - Show application information
- โ Exit - Close the application
๐ธ What You'll See
Notifications Display:
- Title: Color type and code (HEX/RGB)
- Body:
- RGB values
- Brightness classification (LIGHT/DARK)
- Luminance value and visual bar
- Background: The detected color
- Text: Auto-adjusted (black/white) for readability
Color Picker Shows:
- Color Preview - Large preview box with current color
- Color Name - Hex code display
- Choose Color Button - Opens Qt color dialog
- Set Color Button - Apply hex from input field
- Hex Input - Manual hex code entry
Color Notify - Complete Features Overview
๐ฏ Two Operating Modes
1. Passive Mode - Clipboard Monitoring
Automatically detects and displays colors from clipboard.
How it works:
- Monitors clipboard continuously
- Detects color codes automatically
- Shows growl-style notification
- No user interaction needed
Supported formats:
- HEX:
#FF0000,#F00 - RGB:
rgb(255, 0, 0)
2. Active Mode - Color Picker
Interactive dialog for manual color selection.
How it works:
- Open from system tray
- Pick colors interactively
- Auto-copy to clipboard
- Full dialog interface
Features:
- Qt color dialog integration
- Manual hex input
- Live clipboard detection
- Always on top option
๐ Complete Feature List
Clipboard Monitoring Features
| Feature | Description | Config |
|---|---|---|
| HEX Detection | Detects #RRGGBB and #RGB | detect_hex = True |
| RGB Detection | Detects rgb(r, g, b) | detect_rgb = True |
| Auto Notification | Shows notification on detect | Automatic |
| Smart Text Color | Black/white based on luminance | Automatic |
| Luminance Display | Shows brightness info | Automatic |
| RGB Values | Displays RGB breakdown | Automatic |
| Visual Bar | Luminance visualization | Automatic |
Notification Features
| Feature | Description | Config |
|---|---|---|
| Positioning | 9 screen positions | position = right_center |
| Transparency | Adjustable opacity | opacity = 0.95 |
| Timeout | Auto-hide duration | timeout = 3000 |
| Always on Top | Keep above windows | always_on_top = True |
| Click to Dismiss | Close on click | Built-in |
| Fade Animation | Smooth in/out | Built-in |
| Frameless | No window border | Built-in |
| No Taskbar | System tray only | Built-in |
Color Picker Features
| Feature | Description | Shortcut |
|---|---|---|
| Qt Color Dialog | Full color picker | - |
| Hex Input | Manual entry | Enter |
| Color Preview | Large preview box | - |
| Color Name | Hex display | - |
| Auto Copy | To clipboard | Automatic |
| Clipboard Detect | Auto update | Every 1s |
| Always on Top | Toggle mode | A / Shift+A |
| Close | Exit dialog | Q / Escape |
| Multi-Monitor | Screen detection | Automatic |
| Auto Center | Window positioning | Automatic |
System Tray Features
| Feature | Description |
|---|---|
| Tray Icon | Minimized operation |
| Color Picker Menu | Open picker dialog |
| Test Notification | Sample display |
| Pause/Resume | Toggle monitoring |
| Reload Config | Hot reload settings |
| Open Config | Edit INI file |
| About | Version info |
| Exit | Close application |
Configuration Features
| Feature | Description | Default |
|---|---|---|
| Position | 9 positions available | right_center |
| Opacity | 0.0 to 1.0 | 0.95 |
| Timeout | 0 to โ ms | 3000 |
| Margin | Screen edge margin | 20 px |
| Poll Interval | Clipboard check rate | 1000 ms |
| AOT | Always on top | True |
| HEX Detect | Enable hex detection | True |
| RGB Detect | Enable RGB detection | True |
Error Handling Features
| Feature | Description |
|---|---|
| Clipboard Errors | Silent retry on access error |
| Auto Interval Adjust | Increase on persistent errors |
| Error Counter | Track clipboard issues |
| Validation | RGB range checking (0-255) |
| Graceful Degradation | Continue on errors |
๐จ Color Format Support
Currently Supported
HEX Formats
- 6-digit:
#FF5733(red, green, blue) - 3-digit:
#F00(expands to#FF0000) - Case insensitive:
#ff5733=#FF5733
RGB Formats
- Standard:
rgb(255, 87, 51) - Spaces:
rgb( 255 , 87 , 51 ) - Case insensitive:
RGB(255,87,51) - Validated: 0-255 range checking
Planned Support
- HSL:
hsl(9, 100%, 60%) - HSLA:
hsla(9, 100%, 60%, 1.0) - RGBA:
rgba(255, 87, 51, 1.0) - Named colors:
red,blue, etc. - CSS color keywords
๐ฏ Position Options
All 9 screen positions available:
left_up center_up right_up
left_center center_center right_center
left_down center_down right_down
Each respects margin setting for distance from screen edge.
โฑ๏ธ Timeout Behavior
| Value | Behavior |
|---|---|
0 |
No auto-hide (click to dismiss) |
1000 |
1 second |
3000 |
3 seconds (default) |
5000 |
5 seconds |
| Any positive | Custom milliseconds |
๐จ Smart Features
Luminance-Based Text Color
- Light colors (luminance > 0.5): Black text
- Dark colors (luminance โค 0.5): White text
- Ensures readability on any background
Luminance Calculation
luminance = (0.299 ร R + 0.587 ร G + 0.114 ร B) / 255
Visual Luminance Bar
- 20-character bar:
โโโโโโโโโโโโโโโโโโโโ - Length based on luminance value
- Quick visual brightness indicator
๐ Workflow Integration
Design Workflow
Design Tool โ Copy Color โ Notification โ Verify
โ
Color Picker โ Choose โ Auto Copy โ Paste
Development Workflow
Code โ Copy Color โ Notification โ Check
โ
Color Picker โ Test โ Copy โ Implement
Testing Workflow
Spec โ Color Picker โ Choose โ Compare โ Verify
โ
Notification confirms copied colors
๐ Performance
Resource Usage
- Memory: ~50-100 MB
- CPU: <1% idle, <5% active
- Startup: <2 seconds
Optimization
- Efficient clipboard polling
- Error-based interval adjustment
- Minimal background operations
- No unnecessary rendering
๐ Security & Privacy
What We Access
- โ System clipboard (text only)
- โ System tray
- โ Config file (local)
What We Don't
- โ No network access
- โ No file scanning
- โ No data collection
- โ No telemetry
Data Storage
- Config file only (
~/.color-notify.ini) - No color history saved
- No tracking or analytics
- Fully local operation
๐ฏ Use Case Matrix
| Use Case | Clipboard Mode | Color Picker | Both |
|---|---|---|---|
| Verify copied colors | โ | โ | โ |
| Pick new colors | โ | โ | โ |
| Build palette | โ | โ | โ |
| Test hex codes | โ | โ | โ |
| Monitor workflow | โ | โ | โ |
| Active selection | โ | โ | โ |
| Background checking | โ | โ | โ |
๐ก Best Practices
For Designers
- Keep Color Picker open while designing
- Use Always on Top (
Akey) - Enable notifications for verification
- Set timeout to
5000for longer viewing
For Developers
- Use notifications to verify copied colors
- Quick color picker for testing
- Set poll interval to
1000for responsiveness - Position notifications away from editor
For QA/Testing
- Use both modes for comprehensive checks
- Color Picker for spec comparison
- Notifications for automated checks
- Save screenshots with notifications
๐ฎ Future Enhancements
Planned Features
- HSL/HSV format support
- Color history log
- Palette management
- Gradient picker
- Color harmonies
- Contrast checker
- Export to formats (CSS, JSON, etc.)
- Multiple color detection in single clipboard
- Notification templates
- Sound notifications
- Statistics tracking
Community Requests
Submit feature requests on GitHub Issues
๐ Feature Comparison
vs Manual Copy-Paste
| Color Notify | Manual | |
|---|---|---|
| Speed | Instant | Slow |
| Verification | Visual | Mental |
| History | Session | None |
| Errors | Validated | Possible |
vs Browser Extensions
| Color Notify | Extensions | |
|---|---|---|
| System-wide | โ | โ |
| No browser | โ | โ |
| Privacy | โ | โ ๏ธ |
| Lightweight | โ | โ ๏ธ |
vs Color Picker Apps
| Color Notify | Other Apps | |
|---|---|---|
| Notifications | โ | โ |
| Auto-detect | โ | โ |
| Lightweight | โ | โ ๏ธ |
| Free | โ | โ ๏ธ |
๐ง Examples
HEX Colors
#FF0000 โ Red
#00FF00 โ Green
#0000FF โ Blue
#FFFF00 โ Yellow
#FF00FF โ Magenta
#00FFFF โ Cyan
#F0A500 โ Orange
#9B59B6 โ Purple
RGB Colors
rgb(255, 0, 0) โ Red
rgb(0, 255, 0) โ Green
rgb(100, 150, 200) โ Light Blue
rgb(255, 87, 51) โ Coral
Short HEX
#F00 โ Red (#FF0000)
#0F0 โ Green (#00FF00)
#00F โ Blue (#0000FF)
๐ก Use Cases
For Designers
- Quick color reference from design files
- Pick colors interactively with color picker
- Verify colors from screenshots
- Check accessibility (luminance display)
- Build color palettes
For Developers
- Monitor colors from code
- Verify hex/rgb conversions
- Quick color validation
- Copy colors to clipboard instantly
- Test color combinations
For QA/Testing
- Verify UI colors match specs
- Document color usage
- Cross-reference design systems
- Quick color comparisons
๐ ๏ธ Development
Requirements
- Python 3.6+
- PyQt5
Troubleshooting
Clipboard warnings on Windows?
- Increase
poll_intervalto 1500-2000ms in config - See TROUBLESHOOTING.md for details
Color Picker not showing?
- Check system tray menu is accessible
- Try running from command line to see errors
For more help, check:
- TROUBLESHOOTING.md - Detailed troubleshooting guide
- INSTALL.md - Installation help
- QUICKSTART.md - Quick start guide
Local Development
# Clone repository
git clone https://github.com/cumulus13/color-notify.git
cd color-notify
# Install in development mode
pip install -e .
# Run
python -m color_notify
๐จ Two Modes of Operation
1. Passive Mode (Default)
- Monitors clipboard automatically
- Shows notifications when colors detected
- Runs in background
2. Active Mode (Color Picker)
- Manual color selection
- Interactive color dialog
- Instant clipboard copy
- Always accessible from tray menu
Both modes work together seamlessly!
๐ License
MIT License - see LICENSE file for details
๐ค Author
๐ Links
- GitHub: https://github.com/cumulus13/color-notify
- PyPI: https://pypi.org/project/color-notify/
- Issues: https://github.com/cumulus13/color-notify/issues
๐ค Contributing
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
โญ Show Your Support
Give a โญ๏ธ if this project helped you!
๐ Changelog
Version 1.0.1
- โจ Added Color Picker Dialog
- ๐จ Interactive color selection
- โจ๏ธ Keyboard shortcuts for color picker
- ๐ Live clipboard detection in picker
- ๐ Fixed clipboard access warnings on Windows
- ๐ Improved error handling
- ๐ Better documentation
Version 1.0.0
- ๐ Initial release
- ๐จ HEX and RGB color detection
- ๐ Growl-style notifications
- ๐ฅ๏ธ System tray integration
- โ๏ธ Configurable positioning and timeout
- โธ๏ธ Pause/Resume monitoring
- ๐ฑ๏ธ Click to dismiss notifications
Enjoy Color Notify! ๐จโจ
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file color_notify-1.0.10.tar.gz.
File metadata
- Download URL: color_notify-1.0.10.tar.gz
- Upload date:
- Size: 162.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3001b642e46fdfb59fc4a901620fbeaf976f94f22eef09446e36896ec717e946
|
|
| MD5 |
2340c2047342cddba13b7b808400b470
|
|
| BLAKE2b-256 |
428266b71f0bc723aab4b443097e79a8440fbfd31246aa4f5c7bfe25f7195a67
|
File details
Details for the file color_notify-1.0.10-py3-none-any.whl.
File metadata
- Download URL: color_notify-1.0.10-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8cd5de242329104f96eeea7339ae69f55975278acabded223bbe0c76c29da0d
|
|
| MD5 |
5a5c20b5f59487252a3a1a9449248c09
|
|
| BLAKE2b-256 |
931cfddf912feaf814324fa8c2e07f8a799b5ee082414108ff26e14693f35965
|