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

Simple Duration-Based Overlay

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.

Manual Start/Stop Control

For apps that need to control overlay lifetime (like ScreenStop):

from screenoverlay import Overlay
from multiprocessing import Process

def run_overlay():
    overlay = Overlay(mode='blur', blur_strength=4)
    overlay.start()  # Runs indefinitely

# Start overlay in separate process
overlay_process = Process(target=run_overlay)
overlay_process.start()

# Later, stop it
overlay_process.terminate()
overlay_process.join()

See examples/ folder for more use cases!


๐ŸŽจ 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

Show overlay for a fixed duration.

overlay.activate(duration=5)

Parameters:

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

Note: Press ESC to dismiss early.

start() Method

Start overlay indefinitely (runs until stopped).

overlay.start()

Important: This is blocking and runs mainloop(). For app integration, run in a separate process:

from multiprocessing import Process
p = Process(target=overlay.start)
p.start()
# Later: p.terminate()

stop() Method

Stop and close the overlay.

overlay.stop()

Note: Usually called from within the overlay process, or use process.terminate() from parent.


๐Ÿ’ก 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 examples/basic_duration.py
python examples/start_stop_control.py

Examples

Check out the examples/ directory for complete working examples:

  • basic_duration.py - Simple blur overlay with fixed duration
  • black_screen.py - Privacy blackout screen
  • start_stop_control.py - Manual control with multiprocessing
  • custom_color.py - Custom colored overlay

Each example is fully documented and ready to run!


๐Ÿค 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.3.0.tar.gz (14.8 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.3.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for screenoverlay-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6933ba506e88a24ede9887874b2cf5bae04c70a98fc01a98070690010368a95a
MD5 e5e718d02989ed8b0038fe374d78de2c
BLAKE2b-256 74bac5117cd24d19491f342d0374ae0dd5f04ac26c2db28eda00c46df8c8b344

See more details on using hashes here.

File details

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

File metadata

  • Download URL: screenoverlay-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01cea54c4dffcf580a504890a8d5cfc1db469c4f52c32b358509b4a1e524e5cc
MD5 56dd7a3307e0d52af42cc40a8480992b
BLAKE2b-256 b31025d14b7d287032593e7124bcd9058fda793a1ae5642aed2fd04f8bfc0767

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