From dfbea5b0ac0809d12989be9b23f5f541793b7ea9 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 23 Feb 2026 13:44:29 +0000 Subject: [PATCH] feat(entry): implement def main --- scanslicer/entry.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) 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