{"id":30698340,"url":"https://github.com/mirbyte/streamblock","last_synced_at":"2026-04-01T23:53:09.554Z","repository":{"id":301199630,"uuid":"1008356901","full_name":"mirbyte/StreamBlock","owner":"mirbyte","description":"Easy to use Python application that creates draggable colored overlay blocks on your screen.","archived":false,"fork":false,"pushed_at":"2026-03-21T20:41:39.000Z","size":124,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T08:35:47.410Z","etag":null,"topics":["live-streaming","livestream","streaming","tkinter-gui","twitch","twitch-tv","twitchtv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mirbyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-25T12:20:49.000Z","updated_at":"2026-03-21T20:41:43.000Z","dependencies_parsed_at":"2025-06-25T17:31:57.308Z","dependency_job_id":"64f41ef8-1764-48a7-aeb1-d198162b67ce","html_url":"https://github.com/mirbyte/StreamBlock","commit_stats":null,"previous_names":["mirbyte/streamblock"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mirbyte/StreamBlock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirbyte%2FStreamBlock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirbyte%2FStreamBlock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirbyte%2FStreamBlock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirbyte%2FStreamBlock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mirbyte","download_url":"https://codeload.github.com/mirbyte/StreamBlock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirbyte%2FStreamBlock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["live-streaming","livestream","streaming","tkinter-gui","twitch","twitch-tv","twitchtv"],"created_at":"2025-09-02T10:13:02.986Z","updated_at":"2026-04-01T23:53:09.547Z","avatar_url":"https://github.com/mirbyte.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![StreamBlock_logo_smaller](https://github.com/user-attachments/assets/9ea5b879-a986-4ae7-8f61-460851b8bb62)\n\n# StreamBlock\n[![License](https://img.shields.io/github/license/mirbyte/StreamBlock?color=black)](https://raw.githubusercontent.com/mirbyte/StreamBlock/master/LICENSE)\n![Size](https://img.shields.io/github/repo-size/mirbyte/StreamBlock?label=size\u0026color=black)\n[![Download Count](https://img.shields.io/github/downloads/mirbyte/StreamBlock/total?color=black)](https://github.com/mirbyte/StreamBlock/releases)\n[![Latest Release](https://img.shields.io/github/release/mirbyte/StreamBlock.svg?color=black)](https://github.com/mirbyte/StreamBlock/releases/latest)\n![LastCommit](https://img.shields.io/github/last-commit/mirbyte/StreamBlock?color=black\u0026label=repo+updated)\n\nA Python application that creates draggable colored overlay blocks on your screen.\n\n## Download\n- **Windows**: Download the package from the **[releases page](https://github.com/mirbyte/StreamBlock/releases/latest)**\n- **Others**: Clone this project and run the .py (*you may need to remove the `win32gui` and `win32api` imports — not tested on non-Windows*)\n\n## Features\n- **Draggable \u0026 Resizable Blocks**: Create movable colored rectangles anywhere on your screen\n- **Always on Top**: Blocks stay visible over all other applications\n- **Color Customization**: Pick any static color per block\n- **Dynamic Color Mode**: Blocks automatically sample the 8 surrounding screen points and adapt their color or gradient in real time\n- **Gradient Support**: When surrounding colors differ enough, the block renders a smooth multi-point gradient instead of a flat color\n- **Save/Load Layouts**: Preserve your block arrangements for future sessions\n- **DPI Aware**: Correct sizing and positioning on 4K and high-DPI displays\n\n## Usage\n\n### Creating blocks\n1. Choose a color with the **Pick Color** button, or enable **Dynamic** mode to have the block match its surroundings automatically\n2. Click **+ Add Block** to place a new overlay\n\n### Controlling blocks\n| Action | Input |\n|---|---|\n| Move | Left-click drag |\n| Resize | Right-click drag (from bottom-right) |\n| Delete | Double-click |\n| Change color | Middle-click *(static blocks only)* |\n\n### Dynamic block indicators\nA small tag in the top-left corner of each dynamic block shows its current state:\n\n| Tag | Meaning |\n|---|---|\n| `D` | Dynamic mode, solid color |\n| `D+` | Dynamic mode, gradient active |\n| `D\u003e` | Dynamic mode, transitioning |\n\n## Dependencies\n\n| Package | Purpose |\n|---|---|\n| `tkinter` | GUI framework (Python standard library) |\n| `Pillow` | Image processing and gradient rendering |\n| `pywin32` | DPI awareness and screen metrics (Windows) |\n| `numpy` *(optional)* | Accelerated gradient computation, strongly recommended for dynamic mode |\n\nInstall with:\n```\npip install pillow pywin32 numpy\n```\n\n## Technical Details\n- **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\n- **Gradient rendering**: 8-point bilinear interpolation, vectorized with numpy when available and falling back to pure Python otherwise\n- **Screen sampling**: 12×12px grabs at 8 points around each block's edges every 2 seconds, with 1-second eased transitions between states\n- **Layout storage**: JSON\n\n## Use Cases\n- **Live Streams**: Hide burned-in ads or watermarks during live stream viewing\n- **Live Streaming**: Cover personal information, notifications, or sensitive content\n- **Screen Recording**: Block out areas you don't want recorded\n- **Presentations**: Cover content until ready to reveal\n- **Privacy**: Hide desktop elements during screen sharing\n\n\u003cbr\u003e\n\n\u003cimg width=\"453\" height=\"908\" alt=\"gui\" src=\"https://github.com/user-attachments/assets/f75a8bd1-b659-4547-ad78-39eaafebee1b\" /\u003e\n\n\u003cbr\u003e\n\n![example_twitch](https://github.com/user-attachments/assets/73c708f9-6a21-488b-9972-8ae77bd7d7b9)\n\n![before2](https://github.com/user-attachments/assets/7fa04ad4-20ba-4066-ac16-6b5ef5820f4c)\n\n![after2](https://github.com/user-attachments/assets/68c265d7-6bd6-4538-a8e9-4b51ce0aa386)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirbyte%2Fstreamblock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirbyte%2Fstreamblock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirbyte%2Fstreamblock/lists"}