screenoverlay 0.4.1__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: screenoverlay
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Cross-platform screen overlay with blur, black, white, and custom modes
5
5
  Home-page: https://github.com/pekay-ai/screenoverlay
6
6
  Author: Pekay
@@ -107,6 +107,10 @@ Overlay(mode='white').activate(duration=1)
107
107
 
108
108
  # Custom colored overlay
109
109
  Overlay(mode='custom', color_tint=(255, 100, 100), opacity=0.7).activate()
110
+
111
+ # Multi-monitor control
112
+ Overlay(mode='blur', all_screens=True).activate(duration=5) # Blur all monitors (default)
113
+ Overlay(mode='blur', all_screens=False).activate(duration=5) # Blur only primary monitor
110
114
  ```
111
115
 
112
116
  Press `ESC` to dismiss the overlay early.
@@ -222,7 +226,8 @@ Overlay(
222
226
  mode='blur', # 'blur', 'black', 'white', 'custom'
223
227
  blur_strength=3, # 1-5 (only for mode='blur')
224
228
  opacity=0.85, # 0.0-1.0
225
- color_tint=(136, 136, 136) # RGB tuple (0-255)
229
+ color_tint=(136, 136, 136), # RGB tuple (0-255)
230
+ all_screens=True # True = all monitors, False = primary only
226
231
  )
227
232
  ```
228
233
 
@@ -234,6 +239,7 @@ Overlay(
234
239
  | `blur_strength` | int | `3` | Blur intensity 1-5 (only for blur mode) |
235
240
  | `opacity` | float | `0.85` | Window opacity 0.0 (transparent) to 1.0 (opaque) |
236
241
  | `color_tint` | tuple | `(136, 136, 136)` | RGB color values (0-255) |
242
+ | `all_screens` | bool | `True` | If `True`, blur all monitors. If `False`, blur only primary monitor |
237
243
 
238
244
  ### `activate()` Method
239
245
 
@@ -63,6 +63,10 @@ Overlay(mode='white').activate(duration=1)
63
63
 
64
64
  # Custom colored overlay
65
65
  Overlay(mode='custom', color_tint=(255, 100, 100), opacity=0.7).activate()
66
+
67
+ # Multi-monitor control
68
+ Overlay(mode='blur', all_screens=True).activate(duration=5) # Blur all monitors (default)
69
+ Overlay(mode='blur', all_screens=False).activate(duration=5) # Blur only primary monitor
66
70
  ```
67
71
 
68
72
  Press `ESC` to dismiss the overlay early.
@@ -178,7 +182,8 @@ Overlay(
178
182
  mode='blur', # 'blur', 'black', 'white', 'custom'
179
183
  blur_strength=3, # 1-5 (only for mode='blur')
180
184
  opacity=0.85, # 0.0-1.0
181
- color_tint=(136, 136, 136) # RGB tuple (0-255)
185
+ color_tint=(136, 136, 136), # RGB tuple (0-255)
186
+ all_screens=True # True = all monitors, False = primary only
182
187
  )
183
188
  ```
184
189
 
@@ -190,6 +195,7 @@ Overlay(
190
195
  | `blur_strength` | int | `3` | Blur intensity 1-5 (only for blur mode) |
191
196
  | `opacity` | float | `0.85` | Window opacity 0.0 (transparent) to 1.0 (opaque) |
192
197
  | `color_tint` | tuple | `(136, 136, 136)` | RGB color values (0-255) |
198
+ | `all_screens` | bool | `True` | If `True`, blur all monitors. If `False`, blur only primary monitor |
193
199
 
194
200
  ### `activate()` Method
195
201
 
@@ -5,7 +5,7 @@ Provides blur, black, white, and custom color overlays with minimal latency
5
5
 
6
6
  from .overlay import NativeBlurOverlay as Overlay
7
7
 
8
- __version__ = '0.4.0'
8
+ __version__ = '0.5.0'
9
9
  __author__ = 'Pekay'
10
10
  __all__ = ['Overlay']
11
11
 
@@ -131,9 +131,27 @@ class NativeBlurOverlay:
131
131
  self._command_queue.put('show')
132
132
 
133
133
  def hide(self):
134
- """Hide the overlay (instant, ~1ms)"""
134
+ """
135
+ Hide the overlay and restart for next use (100% reliable, prevents ghost windows)
136
+
137
+ This method:
138
+ 1. Hides the overlay instantly (user sees clear screen ~1ms)
139
+ 2. Stops the overlay process completely (kills any ghost windows)
140
+ 3. Starts a fresh overlay ready for next show() (happens in background ~300ms)
141
+
142
+ This "restart on hide" approach guarantees zero ghost windows by giving
143
+ each detection cycle a fresh overlay process, at the cost of ~300ms
144
+ startup time that happens during safe periods (when screen is clear).
145
+ """
135
146
  if self._command_queue is not None:
147
+ # Hide first (instant for user)
136
148
  self._command_queue.put('hide')
149
+
150
+ # Stop the process completely to prevent ghost windows
151
+ self.stop()
152
+
153
+ # Start fresh overlay for next show() (happens in background)
154
+ self.start()
137
155
 
138
156
  def stop(self):
139
157
  """Stop and cleanup the overlay completely"""
@@ -165,16 +183,22 @@ class NativeBlurOverlay:
165
183
  cmd = command_queue.get_nowait()
166
184
  if cmd == 'show':
167
185
  for win in self.windows:
168
- win.deiconify()
169
- win.lift()
186
+ try:
187
+ win.deiconify()
188
+ win.lift()
189
+ except Exception as e:
190
+ print(f"Warning: Failed to show window: {e}")
170
191
  elif cmd == 'hide':
171
192
  for win in self.windows:
172
- win.withdraw()
193
+ try:
194
+ win.withdraw()
195
+ except Exception as e:
196
+ print(f"Warning: Failed to hide window: {e}")
173
197
  elif cmd == 'stop':
174
198
  self.root.quit()
175
199
  return
176
- except:
177
- pass
200
+ except Exception as e:
201
+ print(f"Warning: Command queue error: {e}")
178
202
 
179
203
  # Check again in 10ms
180
204
  self.root.after(10, check_commands)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: screenoverlay
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Cross-platform screen overlay with blur, black, white, and custom modes
5
5
  Home-page: https://github.com/pekay-ai/screenoverlay
6
6
  Author: Pekay
@@ -107,6 +107,10 @@ Overlay(mode='white').activate(duration=1)
107
107
 
108
108
  # Custom colored overlay
109
109
  Overlay(mode='custom', color_tint=(255, 100, 100), opacity=0.7).activate()
110
+
111
+ # Multi-monitor control
112
+ Overlay(mode='blur', all_screens=True).activate(duration=5) # Blur all monitors (default)
113
+ Overlay(mode='blur', all_screens=False).activate(duration=5) # Blur only primary monitor
110
114
  ```
111
115
 
112
116
  Press `ESC` to dismiss the overlay early.
@@ -222,7 +226,8 @@ Overlay(
222
226
  mode='blur', # 'blur', 'black', 'white', 'custom'
223
227
  blur_strength=3, # 1-5 (only for mode='blur')
224
228
  opacity=0.85, # 0.0-1.0
225
- color_tint=(136, 136, 136) # RGB tuple (0-255)
229
+ color_tint=(136, 136, 136), # RGB tuple (0-255)
230
+ all_screens=True # True = all monitors, False = primary only
226
231
  )
227
232
  ```
228
233
 
@@ -234,6 +239,7 @@ Overlay(
234
239
  | `blur_strength` | int | `3` | Blur intensity 1-5 (only for blur mode) |
235
240
  | `opacity` | float | `0.85` | Window opacity 0.0 (transparent) to 1.0 (opaque) |
236
241
  | `color_tint` | tuple | `(136, 136, 136)` | RGB color values (0-255) |
242
+ | `all_screens` | bool | `True` | If `True`, blur all monitors. If `False`, blur only primary monitor |
237
243
 
238
244
  ### `activate()` Method
239
245
 
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="screenoverlay",
8
- version="0.4.1",
8
+ version="0.5.0",
9
9
  author="Pekay",
10
10
  author_email="ppnicky@gmail.com",
11
11
  description="Cross-platform screen overlay with blur, black, white, and custom modes",
File without changes
File without changes