feat(entry): implement def configure_qt_backend
This commit is contained in:
parent
fff9178f8a
commit
84ec0e05ba
1 changed files with 34 additions and 0 deletions
|
|
@ -63,3 +63,37 @@ def resolve_runtime_backend(backend):
|
|||
|
||||
# Fall back to Wayland when auto-detection has no clear signal.
|
||||
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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue