feat(entry): implement def configure_qt_backend

This commit is contained in:
dev 2026-02-23 12:27:59 +00:00
parent fff9178f8a
commit 84ec0e05ba

View file

@ -63,3 +63,37 @@ def resolve_runtime_backend(backend):
# Fall back to Wayland when auto-detection has no clear signal. # Fall back to Wayland when auto-detection has no clear signal.
return "wayland" return "wayland"
# configure_qt_backend: function definition for ScanSlicer behavior.
def configure_qt_backend(backend):
if backend == "wayland":
os.environ["QT_QPA_PLATFORM"] = "wayland"
# Prevent accidental X11/XWayland routing in mixed environments.
os.environ.pop("DISPLAY", None)
elif backend == "x11":
os.environ["QT_QPA_PLATFORM"] = "xcb"
else:
raise RuntimeError(f"Unsupported backend '{backend}'.")
is_appimage = bool(os.environ.get("APPIMAGE"))
# In sandboxed desktop runtimes (Flatpak/Snap), prefer portal integration
# for file dialogs and desktop services.
sandboxed = bool(
os.environ.get("FLATPAK_ID")
or os.environ.get("SNAP")
)
if sandboxed:
os.environ.setdefault("QT_QPA_PLATFORMTHEME", "xdgdesktopportal")
elif is_appimage:
# AppImage is not a strict sandbox and some portal backends can emit:
# "Connection already associated with an application ID".
# Prefer GTK theme integration and avoid forced portal registration.
os.environ.setdefault("QT_QPA_PLATFORMTHEME", "gtk3")
os.environ.setdefault("QT_NO_XDG_DESKTOP_PORTAL", "1")
# In containers, prefer GTK platform theme so Qt can follow host theme
# settings when available (for example dark/light mode).
if os.path.exists("/.dockerenv"):
os.environ.setdefault("QT_QPA_PLATFORMTHEME", "gtk3")