@RequiresBackgroundThread
  public static @Nullable String getTheme() {
    ThreadingAssertions.assertBackgroundThread();
    if (SystemInfo.isGNOME) {
      String result = exec("Cannot get gnome theme", "gsettings", "get", "org.gnome.desktop.interface", "gtk-theme");
      return trimQuotes(result);
    }

    if (SystemInfo.isKDE) {
      // https://github.com/shalva97/kde-configuration-files
      Path home = Path.of(System.getenv("HOME"), ".config/kdeglobals");
      List<String> matches = grepFile("Cannot get KDE theme", home,
                                      Pattern.compile("\\s*" + KDE_LAF_PROPERTY + ".*"));
      if (matches.size() != 1) {
        return null;
      }

      String result = matches.get(0).trim();
      if (result.startsWith(KDE_LAF_PROPERTY)) {
        return result.substring(KDE_LAF_PROPERTY.length()).trim();
      }
      return null;
    }

    return null;
  }
@RequiresBackgroundThread
  public static @Nullable String getTheme()