A Python application that creates draggable colored overlay blocks on your screen.
- Windows: Download the package from the releases page
- Others: Clone this project and run
python streamblock.py(non-Windows support is not tested)
To run the script without opening a console window, rename streamblock.py to
streamblock.pyw and launch it by double-clicking the file.
- Draggable & Resizable Blocks: Create movable colored rectangles anywhere on your screen
- Always on Top: Blocks stay visible over all other applications
- Color Customization: Pick any static color per block
- Dynamic Color Mode: Blocks sample 8 surrounding screen points and adapt their color or gradient every 2 seconds
- Gradient Support: When surrounding colors differ enough, the block renders a smooth multi-point gradient instead of a flat color
- Save/Load Layouts: Preserve your block arrangements for future sessions
- DPI Aware: Correct sizing and positioning on 4K and high-DPI displays
- Choose a color with the Pick Color button, or enable Dynamic mode to have the block match its surroundings automatically
- Click + Add Block to place a new overlay
| Action | Input |
|---|---|
| Move | Left-click drag |
| Resize | Right-click drag (from bottom-right) |
| Delete | Double-click |
| Change color | Middle-click (static blocks only) |
A small tag in the top-left corner of each dynamic block shows its current state:
| Tag | Meaning |
|---|---|
D |
Dynamic mode, solid color |
D+ |
Dynamic mode, gradient active |
D> |
Dynamic mode, transitioning to a gradient |
| Package | Purpose |
|---|---|
tkinter |
GUI framework (Python standard library) |
Pillow |
Image processing and gradient rendering |
pywin32 (optional) |
Windows screen metrics; ctypes fallback is built in |
numpy (optional) |
Accelerated gradient computation, strongly recommended for dynamic mode |
Install with:
pip install -r requirements.txt
- Thread model: Color detection and animation run on background threads; background workers never call Tkinter, and animation redraws are handled by the main-thread
_ui_tickloop - Gradient rendering: Piecewise 8-point interpolation, vectorized with NumPy when available and falling back to pure Python otherwise
- Screen sampling: 12×12px grabs at 8 points around each block's edges every 2 seconds, with 1-second eased transitions between states
- Layout storage: JSON
- Live Streams: Hide burned-in ads or watermarks during live stream viewing
- Live Streaming: Cover personal information, notifications, or sensitive content
- Screen Recording: Block out areas you don't want recorded
- Presentations: Cover content until ready to reveal
- Privacy: Hide desktop elements during screen sharing



