diff --git a/scanslicer/entry.py b/scanslicer/entry.py index 2e0e858..a33f1b9 100644 --- a/scanslicer/entry.py +++ b/scanslicer/entry.py @@ -123,3 +123,39 @@ def validate_x11_environment(): raise RuntimeError( "Missing X11 runtime environment. Set DISPLAY or use --backend wayland." ) + + +# main: function definition for ScanSlicer behavior. +def main(argv=None): + args = parse_args(sys.argv[1:] if argv is None else argv) + runtime_backend = None + + try: + runtime_backend = resolve_runtime_backend(args.backend) + configure_qt_backend(runtime_backend) + if runtime_backend == "wayland": + validate_wayland_environment() + elif runtime_backend == "x11": + validate_x11_environment() + + from .main import run_app + + return run_app(args.path) + except Exception as exc: + selected = os.environ.get("QT_QPA_PLATFORM", "") + print( + f"Failed to start ScanSlicer Qt UI (backend={runtime_backend or args.backend}, QT_QPA_PLATFORM={selected}).", + file=sys.stderr, + ) + print(str(exc), file=sys.stderr) + if runtime_backend == "x11": + print( + "X11 hint: ensure DISPLAY is set and an X server is available.", + file=sys.stderr, + ) + else: + print( + "Wayland hint: ensure XDG_RUNTIME_DIR and WAYLAND_DISPLAY are set and the Wayland socket is mounted.", + file=sys.stderr, + ) + return 1