From 4e6e6e2d17e187a46501c4d11d8c2eddf2f9f3e5 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Wed, 16 Apr 2025 00:52:44 -0400 Subject: [PATCH 1/5] Fixed a couple of bugs in setup.py. --- setup.py | 6 +++--- src/fenrirscreenreader/fenrirVersion.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 8b372fce..d8584095 100755 --- a/setup.py +++ b/setup.py @@ -113,10 +113,10 @@ if not forceSettingsFlag: # create settings file from example if not exist if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'): try: - copyfile('/etc/fenrirscreenreader/settings/settings.conf.example', '/etc/fenrirscreenreader/settings/settings.conf') + copyfile('config/fenrirscreenreader/settings/settings.conf', '/etc/fenrirscreenreader/settings/settings.conf') print('create settings file in /etc/fenrirscreenreader/settings/settings.conf') - except: - pass + except OSError as e: + print(f"Could not copy settings file to destination: {e}") else: print('settings.conf file found. It is not overwritten automatical') diff --git a/src/fenrirscreenreader/fenrirVersion.py b/src/fenrirscreenreader/fenrirVersion.py index 480faf91..e8149d12 100644 --- a/src/fenrirscreenreader/fenrirVersion.py +++ b/src/fenrirscreenreader/fenrirVersion.py @@ -4,5 +4,5 @@ # Fenrir TTY screen reader # By Chrys, Storm Dragon, and contributers. -version = "2025.04.14" +version = "2025.04.16" codeName = "testing" From a1fcee9a455846c6c9699c473914645035db1289 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Wed, 16 Apr 2025 12:06:54 -0400 Subject: [PATCH 2/5] Removed the rapidfuzz dependency. There wasn't much of a gain in performance and it did not work on some distros. --- src/fenrirscreenreader/core/screenManager.py | 32 +++----------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/fenrirscreenreader/core/screenManager.py b/src/fenrirscreenreader/core/screenManager.py index a8fc669c..13203162 100644 --- a/src/fenrirscreenreader/core/screenManager.py +++ b/src/fenrirscreenreader/core/screenManager.py @@ -7,7 +7,6 @@ from fenrirscreenreader.core import debug from fenrirscreenreader.utils import screen_utils import time, os, re, difflib -from rapidfuzz.distance import Levenshtein class screenManager(): def __init__(self): @@ -83,7 +82,6 @@ class screenManager(): def updateScreenIgnored(self): self.prevScreenIgnored = self.currScreenIgnored self.currScreenIgnored = self.isSuspendingScreen(self.env['screen']['newTTY']) - def update(self, eventData, trigger='onUpdate'): # set new "old" values self.env['screen']['oldContentBytes'] = self.env['screen']['newContentBytes'] @@ -146,11 +144,8 @@ class screenManager(): cursorLineEndOffset = cursorLineStart + self.env['screen']['newCursor']['x'] + 3 oldScreenText = self.env['screen']['oldContentText'][cursorLineStartOffset:cursorLineEndOffset] newScreenText = self.env['screen']['newContentText'][cursorLineStartOffset:cursorLineEndOffset] - - # Use the original differ for typing mode to preserve behavior diff = self.differ.compare(oldScreenText, newScreenText) diffList = list(diff) - typing = True tempNewDelta = ''.join(x[2:] for x in diffList if x[0] == '+') if tempNewDelta.strip() != '': @@ -158,28 +153,9 @@ class screenManager(): diffList = ['+ ' + self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']] +'\n'] typing = False else: - # For screen changes, use the original differ - if self.isScreenChange() or trigger == 'onScreenChange': - diff = self.differ.compare(oldScreenText.split('\n'), - newScreenText.split('\n')) - diffList = list(diff) - else: - # Use rapidfuzz for normal updates - not for screen changes - try: - # Process line by line using rapidfuzz - old_lines = oldScreenText.split('\n') - new_lines = newScreenText.split('\n') - - # Use standard differ for better word grouping - diff = self.differ.compare(old_lines, new_lines) - diffList = list(diff) - - except Exception as e: - # Fall back to standard differ if there's any issue - self.env['runtime']['debug'].writeDebugOut('screenManager:update:rapidfuzz: ' + str(e), debug.debugLevel.ERROR) - diff = self.differ.compare(oldScreenText.split('\n'), - newScreenText.split('\n')) - diffList = list(diff) + diff = self.differ.compare(oldScreenText.split('\n'),\ + newScreenText.split('\n')) + diffList = list(diff) if not typing: self.env['screen']['newDelta'] = '\n'.join(x[2:] for x in diffList if x[0] == '+') @@ -209,7 +185,7 @@ class screenManager(): ignoreScreens.extend(self.env['screen']['autoIgnoreScreens']) self.env['runtime']['debug'].writeDebugOut('screenManager:isSuspendingScreen ignore:' + str(ignoreScreens) + ' current:'+ str(screen ), debug.debugLevel.INFO) return (screen in ignoreScreens) - + def isScreenChange(self): if not self.env['screen']['oldTTY']: return False From 6edb743c23241903b784d80496a030cc70898b29 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Wed, 16 Apr 2025 12:14:30 -0400 Subject: [PATCH 3/5] Removed rapidfuzz from dependencies. --- requirements.txt | 1 - setup.py | 1 - 2 files changed, 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8a08ff62..b8cc9f02 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,3 @@ pyudev>=0.21.0 pexpect pyperclip pyte>=0.7.0 -rapidfuzz>=2.0.0 diff --git a/setup.py b/setup.py index d8584095..9aeafb41 100755 --- a/setup.py +++ b/setup.py @@ -101,7 +101,6 @@ setup( "dbus-python>=1.2.8", "pyperclip", "pyudev>=0.21.0", - "rapidfuzz>=2.0.0", "setuptools", "pexpect", "pyte>=0.7.0", From bbfd2790a9b50e2ffdcdf45fb4fb2071862c2364 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Wed, 16 Apr 2025 21:50:37 -0400 Subject: [PATCH 4/5] Attempt to fix import/export GUI clipboard for some distros. --- .../commands/commands/export_clipboard_to_x.py | 2 ++ .../commands/commands/import_clipboard_from_x.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/fenrirscreenreader/commands/commands/export_clipboard_to_x.py b/src/fenrirscreenreader/commands/commands/export_clipboard_to_x.py index e4a7fe49..296c93bd 100644 --- a/src/fenrirscreenreader/commands/commands/export_clipboard_to_x.py +++ b/src/fenrirscreenreader/commands/commands/export_clipboard_to_x.py @@ -6,6 +6,7 @@ from fenrirscreenreader.core import debug import os +import importlib import _thread import pyperclip @@ -42,6 +43,7 @@ class command(): # Set display environment variable os.environ['DISPLAY'] = display # Attempt to set clipboard content + importlib.reload(pyperclip) # Weird workaround for some distros pyperclip.copy(clipboard) # If we get here without exception, we found a working display success = True diff --git a/src/fenrirscreenreader/commands/commands/import_clipboard_from_x.py b/src/fenrirscreenreader/commands/commands/import_clipboard_from_x.py index 2d6224d5..40f395e1 100644 --- a/src/fenrirscreenreader/commands/commands/import_clipboard_from_x.py +++ b/src/fenrirscreenreader/commands/commands/import_clipboard_from_x.py @@ -5,6 +5,7 @@ # By Chrys, Storm Dragon, and contributers. from fenrirscreenreader.core import debug +import importlib import _thread import pyperclip import os @@ -34,6 +35,7 @@ class command(): # Set display environment variable os.environ['DISPLAY'] = display # Attempt to get clipboard content + importlib.reload(pyperclip) # Weird workaround for some distros clipboardContent = pyperclip.paste() # If we get here without exception, we found a working display if clipboardContent: From 26a8c8cf860dff49c1d0b3c5d457f016e5a5f502 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Thu, 17 Apr 2025 00:35:02 -0400 Subject: [PATCH 5/5] Added setproctitle to dependencies. --- requirements.txt | 1 + setup.py | 1 + src/fenrirscreenreader/fenrirVersion.py | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b8cc9f02..008df773 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ pyudev>=0.21.0 pexpect pyperclip pyte>=0.7.0 +setproctitle diff --git a/setup.py b/setup.py index 9aeafb41..9ab7b8e4 100755 --- a/setup.py +++ b/setup.py @@ -102,6 +102,7 @@ setup( "pyperclip", "pyudev>=0.21.0", "setuptools", + "setproctitle", "pexpect", "pyte>=0.7.0", ], diff --git a/src/fenrirscreenreader/fenrirVersion.py b/src/fenrirscreenreader/fenrirVersion.py index e8149d12..4130e89c 100644 --- a/src/fenrirscreenreader/fenrirVersion.py +++ b/src/fenrirscreenreader/fenrirVersion.py @@ -4,5 +4,5 @@ # Fenrir TTY screen reader # By Chrys, Storm Dragon, and contributers. -version = "2025.04.16" +version = "2025.04.17" codeName = "testing"