diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__builtins__.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__builtins__.py index 5926300..19540d8 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__builtins__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__builtins__.py @@ -17,8 +17,6 @@ class Builtins(DBusControllerMixin): # Where data may be any kind of data self._gui_events = [] self._fm_events = [] - self.monitor_events = True - self.keep_ipc_alive = True self.is_ipc_alive = False # Makeshift fake "events" type system FIFO diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__main__.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__main__.py index 52fe609..5cae2d4 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__main__.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/__main__.py @@ -33,7 +33,5 @@ if __name__ == "__main__": Main(args, unknownargs) Gtk.main() except Exception as e: - print(repr(e)) - event_system.keep_ipc_alive = False - if debug: - traceback.print_exc() + traceback.print_exc() + quit() diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/WindowController.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/WindowController.py index 0cd271e..e8f75ad 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/WindowController.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/WindowController.py @@ -10,7 +10,7 @@ from . import Window def threaded(fn): def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs).start() + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() return wrapper @@ -28,7 +28,7 @@ class WindowController: @threaded def fm_event_observer(self): - while event_system.monitor_events: + while True: time.sleep(event_sleep_time) event = event_system.consume_fm_event() if event: diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/view/utils/Launcher.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/view/utils/Launcher.py index 9d31786..22a14e3 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/view/utils/Launcher.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/shellfm/windows/view/utils/Launcher.py @@ -1,5 +1,5 @@ # System import -import os, subprocess, threading +import os, threading, subprocess # Lib imports @@ -8,6 +8,12 @@ import os, subprocess, threading # Apoplication imports +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + return wrapper + + class Launcher: def open_file_locally(self, file): lowerName = file.lower() @@ -43,10 +49,15 @@ class Launcher: if use_os_system: os.system(command) else: - # DEVNULL = open(os.devnull, 'w') - # subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=True, stdout=DEVNULL, stderr=DEVNULL, close_fds=True) subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=True, stdout=None, stderr=None, close_fds=True) + def execute_and_return_thread_handler(self, command, start_dir=os.getenv("HOME"), use_shell=True): + DEVNULL = open(os.devnull, 'w') + return subprocess.Popen(command, cwd=start_dir, shell=use_shell, start_new_session=True, stdout=DEVNULL, stderr=DEVNULL, close_fds=True) + + @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" diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py index 5c686b0..402138c 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py @@ -13,7 +13,7 @@ from . import ShowHideMixin, KeyboardSignalsMixin, Controller_Data def threaded(fn): def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs).start() + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() return wrapper @@ -54,7 +54,7 @@ class Controller(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin, \ @threaded def gui_event_observer(self): - while event_system.monitor_events: + while True: time.sleep(event_sleep_time) event = event_system.consume_gui_event() if event: diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/DBusControllerMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/DBusControllerMixin.py index 8141412..c8f622f 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/DBusControllerMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/DBusControllerMixin.py @@ -9,7 +9,7 @@ from multiprocessing.connection import Listener, Client def threaded(fn): def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs).start() + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() return wrapper @@ -21,7 +21,7 @@ class DBusControllerMixin: def create_ipc_server(self): listener = Listener(('127.0.0.1', 4848), authkey=b'solarfm-ipc') self.is_ipc_alive = True - while event_system.keep_ipc_alive: + while True: conn = listener.accept() start_time = time.time() @@ -45,7 +45,6 @@ class DBusControllerMixin: break if msg == 'close server': conn.close() - event_system.keep_ipc_alive = False break # NOTE: Not perfect but insures we don't lockup the connection for too long. diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py index f53a991..f38a8f8 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py @@ -87,7 +87,7 @@ class WidgetFileActionMixin: app_info = appchooser_widget.get_app_info() uris = self.format_to_uris(store, wid, tid, self.selected_files) - app_info.launch_uris_async(uris) + view.app_chooser_exec(app_info, uris) def execute_files(self, in_terminal=False): wid, tid, view, iconview, store = self.get_current_state() diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py index 7af5088..2e00221 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py @@ -13,7 +13,7 @@ from gi.repository import Gtk, Gdk, GLib, Gio, GdkPixbuf def threaded(fn): def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs).start() + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() return wrapper diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py index 0e1dccb..dc88ace 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py @@ -32,19 +32,22 @@ class WindowMixin(TabMixin): if isHidden: self.toggle_notebook_pane(object) - if not self.is_pane4_hidden: - widget = self.window4.get_children()[1].get_children()[0] - widget.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) - elif not self.is_pane3_hidden: - widget = self.window3.get_children()[1].get_children()[0] - widget.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) - elif not self.is_pane2_hidden: - widget = self.window2.get_children()[1].get_children()[0] - widget.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) - elif not self.is_pane1_hidden: - widget = self.window1.get_children()[1].get_children()[0] - widget.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) - + try: + if not self.is_pane4_hidden: + icon_view = self.window4.get_children()[1].get_children()[0] + icon_view.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) + elif not self.is_pane3_hidden: + icon_view = self.window3.get_children()[1].get_children()[0] + icon_view.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) + elif not self.is_pane2_hidden: + icon_view = self.window2.get_children()[1].get_children()[0] + icon_view.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) + elif not self.is_pane1_hidden: + icon_view = self.window1.get_children()[1].get_children()[0] + icon_view.event(Gdk.Event().new(type=Gdk.EventType.BUTTON_RELEASE)) + except Exception as e: + print("\n: The saved session might be missing window data! :\nLocation: ~/.config/solarfm/session.json\nFix: Back it up and delete it to reset.\n") + print(repr(e)) else: for j in range(0, 4): i = j + 1 @@ -150,8 +153,8 @@ class WindowMixin(TabMixin): dir = view.get_current_directory() file = f"{dir}/{fileName}" - if isdir(file): - view.set_path(file) + if isdir(f"{file}/"): + view.set_path(f"{file}/") self.update_view(tab_label, view, store, wid, tid) else: self.open_files()