From a062dcbf6ebc5ad24c2783b6954eb3ccb57f256b Mon Sep 17 00:00:00 2001 From: Hanchai Nonprasart <85230240+HanchaiN@users.noreply.github.com> Date: Fri, 25 Sep 2026 18:41:24 +0700 Subject: [PATCH 1/2] Refactor wait option handling --- dex | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/dex b/dex index 1d978fa..1e5ad1d 100755 --- a/dex +++ b/dex @@ -525,7 +525,7 @@ class Application(DesktopEntry): return cmd - def execute(self, action=None, term=None, wait=False, dryrun=False, verbose=False): + def execute(self, action=None, term=None, dryrun=False, verbose=False): """ Execute application or, if given, a specific action @return Return subprocess.Popen object @@ -561,8 +561,6 @@ class Application(DesktopEntry): return _execute_fn = subprocess.Popen - if wait: - _execute_fn = subprocess.run if path: return _execute_fn(cmd, cwd=path, env=os.environ) return _execute_fn(cmd, env=os.environ) @@ -738,15 +736,20 @@ def _autostart(args): print("Dry run, nothing is executed.", file=sys.stderr) exit_value = 0 + subprocesses = [] for app in get_autostart_files(args, verbose=args.verbose): try: - app.execute(term=args.term, dryrun=args.dryrun, verbose=args.verbose) + proc = app.execute(term=args.term, dryrun=args.dryrun, verbose=args.verbose) + subprocesses.append(proc) except Exception as ex: exit_value = 1 print( "Execution failed: %s%s%s" % (app.filename, os.linesep, ex), file=sys.stderr, ) + if args.wait: + for proc in subprocesses: + proc.wait() return exit_value @@ -766,13 +769,14 @@ def _run(args): for f in args.files: try: app = Application(f) - app.execute( + proc = app.execute( action=args.action, term=args.term, - wait=args.wait, dryrun=args.dryrun, verbose=args.verbose, ) + if args.wait: + proc.wait() except ValueError as ex: print(ex, file=sys.stderr) except IOError as ex: From ea7f4f27fcd82848d366750e82f1eeb4ca439fd9 Mon Sep 17 00:00:00 2001 From: Hanchai Nonprasart <85230240+HanchaiN@users.noreply.github.com> Date: Fri, 25 Sep 2026 20:19:39 +0700 Subject: [PATCH 2/2] fix: null handling --- dex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dex b/dex index 1e5ad1d..7e66685 100755 --- a/dex +++ b/dex @@ -749,7 +749,8 @@ def _autostart(args): ) if args.wait: for proc in subprocesses: - proc.wait() + if proc: + proc.wait() return exit_value @@ -775,7 +776,7 @@ def _run(args): dryrun=args.dryrun, verbose=args.verbose, ) - if args.wait: + if args.wait and proc: proc.wait() except ValueError as ex: print(ex, file=sys.stderr)