|
|
|
|
@ -3,12 +3,23 @@
|
|
|
|
|
from __future__ import annotations |
|
|
|
|
|
|
|
|
|
import json |
|
|
|
|
import os |
|
|
|
|
import sys |
|
|
|
|
import threading |
|
|
|
|
import urllib.error |
|
|
|
|
from dataclasses import asdict, dataclass |
|
|
|
|
from pathlib import Path |
|
|
|
|
from typing import Any, Callable |
|
|
|
|
|
|
|
|
|
# When running as a frozen binary (PyInstaller) on non-GNOME desktops (e.g. KDE), |
|
|
|
|
# no GTK theme is configured by default. Force Adwaita so the bundled theme is |
|
|
|
|
# used and the UI renders correctly. |
|
|
|
|
if getattr(sys, "frozen", False): |
|
|
|
|
os.environ.setdefault("GTK_THEME", "Adwaita") |
|
|
|
|
# Allow GTK4 to fall back from Wayland to X11 if the Wayland compositor |
|
|
|
|
# does not support the required protocols (common on some KDE setups). |
|
|
|
|
os.environ.setdefault("GDK_BACKEND", "wayland,x11") |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
import gi # type: ignore[import-not-found] |
|
|
|
|
except ImportError as exc: |
|
|
|
|
|