https://github.com/mirbyte/streamblock
Easy to use Python application that creates draggable colored overlay blocks on your screen.
https://github.com/mirbyte/streamblock
live-streaming livestream streaming tkinter-gui twitch twitch-tv twitchtv
Last synced: 3 months ago
JSON representation
Easy to use Python application that creates draggable colored overlay blocks on your screen.
- Host: GitHub
- URL: https://github.com/mirbyte/streamblock
- Owner: mirbyte
- License: mit
- Created: 2025-06-25T12:20:49.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-21T20:41:39.000Z (3 months ago)
- Last Synced: 2026-03-22T08:35:47.410Z (3 months ago)
- Topics: live-streaming, livestream, streaming, tkinter-gui, twitch, twitch-tv, twitchtv
- Language: Python
- Homepage:
- Size: 121 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# StreamBlock
[](https://raw.githubusercontent.com/mirbyte/StreamBlock/master/LICENSE)

[](https://github.com/mirbyte/StreamBlock/releases)
[](https://github.com/mirbyte/StreamBlock/releases/latest)

A Python application that creates draggable colored overlay blocks on your screen.
## Download
- **Windows**: Download the package from the **[releases page](https://github.com/mirbyte/StreamBlock/releases/latest)**
- **Others**: Clone this project and run the .py (*you may need to remove the `win32gui` and `win32api` imports — not tested on non-Windows*)
## Features
- **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 automatically sample the 8 surrounding screen points and adapt their color or gradient in real time
- **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
## Usage
### Creating blocks
1. Choose a color with the **Pick Color** button, or enable **Dynamic** mode to have the block match its surroundings automatically
2. Click **+ Add Block** to place a new overlay
### Controlling blocks
| Action | Input |
|---|---|
| Move | Left-click drag |
| Resize | Right-click drag (from bottom-right) |
| Delete | Double-click |
| Change color | Middle-click *(static blocks only)* |
### Dynamic block indicators
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 |
## Dependencies
| Package | Purpose |
|---|---|
| `tkinter` | GUI framework (Python standard library) |
| `Pillow` | Image processing and gradient rendering |
| `pywin32` | DPI awareness and screen metrics (Windows) |
| `numpy` *(optional)* | Accelerated gradient computation, strongly recommended for dynamic mode |
Install with:
```
pip install pillow pywin32 numpy
```
## Technical Details
- **Thread model**: Color detection and animation run on background threads; all Tkinter calls are made exclusively from the main thread via a `_ui_tick` polling loop
- **Gradient rendering**: 8-point bilinear 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
## Use Cases
- **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



