Skip to main content

Cross-platform screen overlay with blur, black, white, and custom modes

Project description

๐Ÿ–ฅ๏ธ ScreenOverlay

Cross-platform Python library for creating instant fullscreen overlays with blur, solid colors, or custom effects.

PyPI version Python Support License: MIT Platform Support

Perfect for privacy screens, focus modes, screen recording, presentations, visual effects, and more.


๐Ÿ“– Our Story

While developing ScreenStop - our advanced AI-powered phone screenshot detection system - we found ourselves constantly needing to blur or obscure our screens during development, testing, and demos. We needed something instant, lightweight, and cross-platform that didn't require screen recording permissions.

After trying various solutions and finding them too slow (>1 second latency), too complex, or requiring special permissions, we built our own. ScreenOverlay was born from this need - a <50ms overlay system that just works.

We're releasing it as open-source (MIT) because we believe privacy tools should be accessible to everyone. Whether you're protecting sensitive data during a video call, building focus apps, or just need a quick screen blackout - ScreenOverlay has you covered.

Want enterprise-grade screen protection? Check out our flagship product ScreenStop below.


โœจ Features

  • ๐ŸŽญ 4 Overlay Modes - blur, black, white, custom colors
  • โšก Ultra Fast - <50ms startup, native OS blur effects
  • ๐Ÿ”’ No Permissions - No screen recording access required
  • ๐ŸŒ Cross-Platform - macOS, Windows, Linux
  • ๐ŸŽฏ Simple API - One line of code to activate
  • ๐Ÿชถ Lightweight - Minimal dependencies

๐Ÿ“ฆ Installation

pip install screenoverlay

That's it! No additional setup required.


๐Ÿš€ Quick Start

from screenoverlay import Overlay

# Privacy blur (great for screen sharing)
Overlay(mode='blur', blur_strength=4).activate(duration=5)

# Full blackout
Overlay(mode='black').activate(duration=3)

# Flash effect
Overlay(mode='white').activate(duration=1)

# Custom colored overlay
Overlay(mode='custom', color_tint=(255, 100, 100), opacity=0.7).activate()

Press ESC to dismiss the overlay early.


๐ŸŽจ Overlay Modes

1๏ธโƒฃ Blur Mode

Blurred background with customizable strength - perfect for privacy during screen sharing.

Overlay(
    mode='blur',
    blur_strength=4,        # 1-5: higher = more obscured
    color_tint=(120, 120, 150),  # RGB tint color
    opacity=0.85            # 0.0-1.0
).activate(duration=5)

Use Cases:

  • ๐ŸŽฅ Privacy during screen recording/sharing
  • ๐Ÿง˜ Focus mode / distraction blocking
  • ๐Ÿ“ฑ Hide sensitive information temporarily

2๏ธโƒฃ Black Mode

Full black screen overlay - instant privacy.

Overlay(mode='black').activate(duration=3)

Use Cases:

  • ๐Ÿ”’ Quick privacy/security blackout
  • ๐ŸŽฌ Presentation breaks
  • โธ๏ธ Screen pause effect

3๏ธโƒฃ White Mode

Full white screen overlay - clean and bright.

Overlay(mode='white').activate(duration=2)

Use Cases:

  • ๐Ÿ’ก Flash effects
  • ๐ŸŽž๏ธ Scene transitions
  • โœจ Attention grabber

4๏ธโƒฃ Custom Mode

Create your own colored overlays with custom transparency.

Overlay(
    mode='custom',
    color_tint=(255, 0, 0),  # Red overlay
    opacity=0.5               # Semi-transparent
).activate(duration=5)

Use Cases:

  • ๐ŸŽจ Branded overlays
  • ๐ŸŒˆ Color filters
  • ๐ŸŽช Creative effects

๐Ÿ“– Complete API Reference

Overlay Class

Overlay(
    mode='blur',              # 'blur', 'black', 'white', 'custom'
    blur_strength=3,          # 1-5 (only for mode='blur')
    opacity=0.85,             # 0.0-1.0
    color_tint=(136, 136, 136)  # RGB tuple (0-255)
)

Parameters:

Parameter Type Default Description
mode str 'blur' Overlay mode: 'blur', 'black', 'white', 'custom'
blur_strength int 3 Blur intensity 1-5 (only for blur mode)
opacity float 0.85 Window opacity 0.0 (transparent) to 1.0 (opaque)
color_tint tuple (136, 136, 136) RGB color values (0-255)

activate() Method

overlay.activate(duration=5)

Parameters:

Parameter Type Default Description
duration float 5 How long to show overlay (seconds)

Note: Press ESC to dismiss early.


๐Ÿ’ก Real-World Usage Examples

Privacy Screen During Video Call

from screenoverlay import Overlay

# Activate blur when discussing sensitive info
overlay = Overlay(mode='blur', blur_strength=5)
overlay.activate(duration=10)

Focus Timer (Pomodoro Technique)

from screenoverlay import Overlay
import time

def pomodoro_session():
    # 25-minute work session
    print("๐Ÿ… Focus time! Work for 25 minutes...")
    time.sleep(25 * 60)
    
    # 5-minute break with screen overlay
    print("โ˜• Break time!")
    Overlay(mode='black', opacity=0.8).activate(duration=5 * 60)

pomodoro_session()

Screen Flash Effect

from screenoverlay import Overlay

# Quick camera flash effect
Overlay(mode='white', opacity=0.9).activate(duration=0.3)

Custom Branded Overlay

from screenoverlay import Overlay

# Brand color overlay with transparency
Overlay(
    mode='custom',
    color_tint=(74, 144, 226),  # Brand blue
    opacity=0.6
).activate(duration=3)

๐Ÿ–ฅ๏ธ Platform Support

Platform Native Blur Requirements
macOS โœ… NSVisualEffectView pyobjc-framework-Cocoa (auto-installed)
Windows โœ… DWM Acrylic/Mica Built-in (no extra deps)
Linux โš ๏ธ Compositor-dependent* Built-in (no extra deps)

*Linux blur quality depends on your desktop compositor (KDE, GNOME, etc.)


โš™๏ธ System Requirements

  • Python: 3.7 or higher
  • Tkinter: Usually included with Python
  • macOS only: pyobjc-framework-Cocoa (automatically installed)
  • Windows/Linux: No additional dependencies

โšก Performance

  • Startup Latency: <50ms
  • Method: Native OS window effects (no screen capture)
  • Permissions: None required (works without screen recording access)
  • Memory: Minimal footprint

Why so fast? Unlike traditional screen capture approaches (400-1000ms), we use native OS-level window blur effects, eliminating the need to capture, process, and re-render the screen.


๐Ÿ›ก๏ธ Interested in Advanced Screen Protection?

ScreenOverlay is great for quick privacy needs, but what if you need automatic, AI-powered protection?

Meet ScreenStop ๐Ÿ“ฑ๐Ÿ”

Our flagship product, ScreenStop, is an enterprise-grade ML-powered system that automatically detects when someone is taking a screenshot with their phone and triggers instant screen protection.

Key Features:

  • ๐Ÿค– AI-Powered Detection - Advanced YOLO + custom ML model
  • โšก Real-time Processing - 216ms detection time
  • ๐ŸŽฏ 100% Accuracy - Zero false positives in production
  • ๐Ÿ”„ Automatic Protection - No manual activation needed
  • ๐Ÿข Enterprise Ready - Scalable and production-tested

Perfect For:

  • ๐Ÿ“Š Protecting confidential presentations
  • ๐Ÿ’ผ Corporate security compliance
  • ๐Ÿฅ HIPAA/healthcare data protection
  • ๐Ÿฆ Financial services security
  • ๐Ÿ”ฌ Research & IP protection

ScreenOverlay provides the instant privacy overlay.
ScreenStop provides the intelligence to trigger it automatically.

โ†’ Learn more about ScreenStop


๐Ÿ”ง Development & Testing

Local Installation

# Clone the repository
git clone https://github.com/pekay/screenoverlay.git
cd screenoverlay

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in editable mode
pip install -e .

# Run examples
python example_usage.py

Running Tests

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

๐Ÿค Contributing

Contributions are welcome! Here's how you can help:

  1. ๐Ÿด Fork the repository
  2. ๐ŸŒฟ Create a feature branch (git checkout -b feature/amazing-feature)
  3. ๐Ÿ’พ Commit your changes (git commit -m 'Add amazing feature')
  4. ๐Ÿ“ค Push to the branch (git push origin feature/amazing-feature)
  5. ๐ŸŽ‰ Open a Pull Request

Ideas for Contributions

  • ๐Ÿ› Bug fixes
  • ๐Ÿ“ Documentation improvements
  • โœจ New overlay modes or effects
  • ๐Ÿงช Additional tests
  • ๐ŸŒ Platform-specific optimizations

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Why MIT? We believe privacy tools should be freely accessible to everyone. Use it in your personal projects, integrate it into your commercial applications, or fork it to create something entirely new. No restrictions, no complications.


๐Ÿ™ Acknowledgments

  • Built during the development of ScreenStop
  • Uses Python's tkinter for cross-platform GUI
  • Leverages native OS APIs for optimal performance
  • Inspired by the need for instant, permission-free privacy controls

๐Ÿ“ฌ Contact & Support


๐ŸŒŸ Show Your Support

If you find ScreenOverlay useful:

  • โญ Star the repository
  • ๐Ÿฆ Share on social media
  • ๐Ÿ“ Write about your use case
  • ๐Ÿ” Explore ScreenStop for advanced features

Built with โค๏ธ by Pekay

Download ยท Report Bug ยท Request Feature ยท ScreenStop

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

screenoverlay-0.1.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

screenoverlay-0.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file screenoverlay-0.1.0.tar.gz.

File metadata

  • Download URL: screenoverlay-0.1.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for screenoverlay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c01e034e2a9d78d909e9c15c066b2286ef6969777d8f79aa50772ca9e05ac145
MD5 e3e62e20d911294523535d4a832c3725
BLAKE2b-256 fc6d333e6c10f9b1745ab85ffaa9e154fd230fa540cd00aa49923091482d49b7

See more details on using hashes here.

File details

Details for the file screenoverlay-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: screenoverlay-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for screenoverlay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1d322a51436751fe880942933f790ecb3d46f94172dbc54aef86c848b6638e3
MD5 f921a8fe38d35ce953c94a822d7a3394
BLAKE2b-256 bdab8f1e43374f6eb04cec65b6cbd391e6abee5935a9bdcc465e6e569584d13b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page