Verified Commit c6c71280 authored by Fabio Manganiello's avatar Fabio Manganiello
Browse files

Wrapped clipboard management logic in a try-except block to prevent the...

Wrapped clipboard management logic in a try-except block to prevent the clipboard plugin from failing hard
parent 1a316bc3
Pipeline #259 passed with stages
in 5 minutes and 17 seconds
from time import time
from typing import Optional
from platypush.context import get_bus
......@@ -47,13 +48,22 @@ class ClipboardPlugin(RunnablePlugin):
def main(self):
import pyperclip
while not self.should_stop():
text = pyperclip.paste()
if text and text != self._last_text:
get_bus().post(ClipboardEvent(text=text))
self._last_text = text
last_error_time = 0
self._should_stop.wait(0.1)
while not self.should_stop():
try:
text = pyperclip.paste()
if text and text != self._last_text:
get_bus().post(ClipboardEvent(text=text))
self._last_text = text
except Exception as e:
if time() - last_error_time > 60:
last_error_time = time()
self.logger.error(
'Could not access the clipboard: %s: %s', type(e), e
)
finally:
self._should_stop.wait(0.1)
self.logger.info('Stopped clipboard monitor backend')
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment