From 2029fbbca93bfc31ad29ef220199e1c07e11e278 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Tue, 21 Feb 2023 13:15:00 -0600 Subject: [PATCH] Updated Launcher, made Settings more generic, updated config file --- src/example.py | 28 +++++++++++++++ src/shellfm/windows/tabs/utils/launcher.py | 40 ++++++++++++--------- src/shellfm/windows/tabs/utils/settings.py | 28 +++++++++++---- src/user_config/shellfm/ffmpegthumbnailer | Bin 23152 -> 0 bytes src/user_config/shellfm/settings.json | 12 +++---- 5 files changed, 78 insertions(+), 30 deletions(-) delete mode 100755 src/user_config/shellfm/ffmpegthumbnailer diff --git a/src/example.py b/src/example.py index f0da4cc..99933b6 100644 --- a/src/example.py +++ b/src/example.py @@ -1,6 +1,34 @@ +# Python imports +import builtins +import threading + + +# NOTE: Threads WILL NOT die with parent's destruction. +def threaded_wrapper(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start() + return wrapper + +# NOTE: Threads WILL die with parent's destruction. +def daemon_threaded_wrapper(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + +# NOTE: Defined for ShellFM +builtins.threaded = threaded_wrapper +builtins.daemon_threaded = daemon_threaded_wrapper + + +# Lib imports + +# Apoplication imports from shellfm.windows.controller import WindowController + + def main(): print("\n\n-------------------------------------------\n\n") window_controller = WindowController() diff --git a/src/shellfm/windows/tabs/utils/launcher.py b/src/shellfm/windows/tabs/utils/launcher.py index ffe88de..8b6fd86 100644 --- a/src/shellfm/windows/tabs/utils/launcher.py +++ b/src/shellfm/windows/tabs/utils/launcher.py @@ -1,13 +1,15 @@ # Python imports import os import subprocess -import shlex # Lib imports # Apoplication imports +class ShellFMLauncherException(Exception): + ... + class Launcher: @@ -16,12 +18,7 @@ class Launcher: command = [] if lowerName.endswith(self.fvideos): - command = [self.media_app] - - if "mplayer" in self.media_app: - command += self.mplayer_options - - command += [file] + command = [self.media_app, file] elif lowerName.endswith(self.fimages): command = [self.image_app, file] elif lowerName.endswith(self.fmusic): @@ -43,20 +40,29 @@ class Launcher: def execute(self, command, start_dir=os.getenv("HOME"), use_shell=False): - self.logger.debug(command) - subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=True, stdout=None, stderr=None, close_fds=True) + try: + self.logger.debug(command) + subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=True, stdout=None, stderr=None, close_fds=True) + except ShellFMLauncherException as e: + self.logger.error(f"Couldn't execute: {command}") + self.logger.error(e) - # TODO: Return stdout and in handlers along with subprocess instead of sinking to null + # TODO: Return std(out/in/err) handlers along with subprocess instead of sinking to null def execute_and_return_thread_handler(self, command, start_dir=os.getenv("HOME"), use_shell=False): - DEVNULL = open(os.devnull, 'w') - return subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=False, stdout=DEVNULL, stderr=DEVNULL, close_fds=False) + try: + DEVNULL = open(os.devnull, 'w') + return subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=False, stdout=DEVNULL, stderr=DEVNULL, close_fds=False) + except ShellFMLauncherException as e: + self.logger.error(f"Couldn't execute and return thread: {command}") + self.logger.error(e) + return None @threaded def app_chooser_exec(self, app_info, uris): app_info.launch_uris_async(uris) def remux_video(self, hash, file): - remux_vid_pth = self.REMUX_FOLDER + "/" + hash + ".mp4" + remux_vid_pth = "{self.REMUX_FOLDER}/{hash}.mp4" self.logger.debug(remux_vid_pth) if not os.path.isfile(remux_vid_pth): @@ -76,9 +82,9 @@ class Launcher: try: proc = subprocess.Popen(command) proc.wait() - except Exception as e: - self.logger.debug(message) - self.logger.debug(e) + except ShellFMLauncherException as e: + self.logger.error(message) + self.logger.error(e) return False return True @@ -87,7 +93,7 @@ class Launcher: limit = self.remux_folder_max_disk_usage try: limit = int(limit) - except Exception as e: + except ShellFMLauncherException as e: self.logger.debug(e) return diff --git a/src/shellfm/windows/tabs/utils/settings.py b/src/shellfm/windows/tabs/utils/settings.py index a776bab..f3c0cd2 100644 --- a/src/shellfm/windows/tabs/utils/settings.py +++ b/src/shellfm/windows/tabs/utils/settings.py @@ -8,18 +8,29 @@ from os import path # Apoplication imports +class ShellFMSettingsException(Exception): + ... + class Settings: logger = None - USR_SHELLFM = "/usr/share/shellfm" + # NOTE: app_name should be defined using python 'builtins' + app_name_exists = False + try: + app_name + app_name_exists = True + except Exception as e: + ... + + APP_CONTEXT = f"{app_name.lower()}" if app_name_exists else "shellfm" + USR_APP_CONTEXT = f"/usr/share/{APP_CONTEXT}" USER_HOME = path.expanduser('~') - CONFIG_PATH = f"{USER_HOME}/.config/shellfm" + CONFIG_PATH = f"{USER_HOME}/.config/{APP_CONTEXT}" CONFIG_FILE = f"{CONFIG_PATH}/settings.json" HIDE_HIDDEN_FILES = True - GTK_ORIENTATION = 1 # HORIZONTAL (0) VERTICAL (1) DEFAULT_ICONS = f"{CONFIG_PATH}/icons" DEFAULT_ICON = f"{DEFAULT_ICONS}/text.png" FFMPG_THUMBNLR = f"{CONFIG_PATH}/ffmpegthumbnailer" # Thumbnail generator binary @@ -27,11 +38,14 @@ class Settings: REMUX_FOLDER = f"{USER_HOME}/.remuxs" # Remuxed files folder ICON_DIRS = ["/usr/share/icons", f"{USER_HOME}/.icons" "/usr/share/pixmaps"] - BASE_THUMBS_PTH = f"{USER_HOME}/.thumbnails" # Used for thumbnail generation - ABS_THUMBS_PTH = f"{BASE_THUMBS_PTH}/normal" # Used for thumbnail generation + BASE_THUMBS_PTH = f"{USER_HOME}/.thumbnails" + ABS_THUMBS_PTH = f"{BASE_THUMBS_PTH}/normal" STEAM_ICONS_PTH = f"{BASE_THUMBS_PTH}/steam_icons" - # Dir structure check + if not os.path.exists(CONFIG_PATH) or not os.path.exists(CONFIG_FILE): + msg = f"No config file located! Aborting loading ShellFM library...\nExpected: {CONFIG_FILE}" + raise ShellFMSettingsException(msg) + if not path.isdir(REMUX_FOLDER): os.mkdir(REMUX_FOLDER) @@ -45,7 +59,7 @@ class Settings: os.mkdir(STEAM_ICONS_PTH) if not os.path.exists(DEFAULT_ICONS): - DEFAULT_ICONS = f"{USR_SHELLFM}/icons" + DEFAULT_ICONS = f"{USR_APP_CONTEXT}/icons" DEFAULT_ICON = f"{DEFAULT_ICONS}/text.png" with open(CONFIG_FILE) as f: diff --git a/src/user_config/shellfm/ffmpegthumbnailer b/src/user_config/shellfm/ffmpegthumbnailer deleted file mode 100755 index 0b6e6e2a3f7a9a9f54d4b2bdc0c939cfc80cd36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23152 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 diff --git a/src/user_config/shellfm/settings.json b/src/user_config/shellfm/settings.json index ab27ec7..5b9f096 100644 --- a/src/user_config/shellfm/settings.json +++ b/src/user_config/shellfm/settings.json @@ -8,24 +8,24 @@ "lock_folder": "false", "locked_folders": "venv::::flasks", "mplayer_options": "-quiet -really-quiet -xy 1600 -geometry 50%:50%", - "music_app": "/opt/deadbeef/bin/deadbeef", + "music_app": "deadbeef", "media_app": "mpv", - "image_app": "mirage", + "image_app": "mirage2", "office_app": "libreoffice", "pdf_app": "evince", - "code_app": "mousepad", - "text_app": "leafpad", + "code_app": "atom", + "text_app": "mousepad", "terminal_app": "terminator", "container_icon_wh": [128, 128], "video_icon_wh": [128, 64], "sys_icon_wh": [56, 56], - "file_manager_app": "spacefm", + "file_manager_app": "solarfm", "steam_cdn_url": "https://steamcdn-a.akamaihd.net/steam/apps/", "remux_folder_max_disk_usage": "8589934592" }, "filters": { "meshs": [".dae", ".fbx", ".gltf", ".obj", ".stl"], - "code": [".cpp", ".css", ".c", ".go", ".html", ".htm", ".java", ".js", ".json", ".lua", ".md", ".py", ".rs"], + "code": [".cpp", ".css", ".c", ".go", ".html", ".htm", ".java", ".js", ".json", ".lua", ".md", ".py", ".rs", ".toml", ".xml", ".pom"], "videos": [".mkv", ".mp4", ".webm", ".avi", ".mov", ".m4v", ".mpg", ".mpeg", ".wmv", ".flv"], "office": [".doc", ".docx", ".xls", ".xlsx", ".xlt", ".xltx", ".xlm", ".ppt", ".pptx", ".pps", ".ppsx", ".odt", ".rtf"], "images": [".png", ".jpg", ".jpeg", ".gif", ".ico", ".tga", ".webp"],