extension-theme-manager.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import GObject from "gi://GObject";
  2. import St from "gi://St";
  3. import { ThemeManagerBase } from "../shared/theme.js";
  4. import { Logger } from "../shared/logger.js";
  5. import { production } from "../shared/settings.js";
  6. export class ExtensionThemeManager extends ThemeManagerBase {
  7. static {
  8. GObject.registerClass(this);
  9. }
  10. /**
  11. * @param {import("../../extension.js").default} extension
  12. */
  13. constructor(extension) {
  14. super(extension);
  15. this.metadata = extension.metadata;
  16. }
  17. reloadStylesheet() {
  18. const uuid = this.metadata.uuid;
  19. const stylesheetFile = this.configMgr.stylesheetFile;
  20. const defaultStylesheetFile = this.configMgr.defaultStylesheetFile;
  21. let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
  22. try {
  23. theme.unload_stylesheet(defaultStylesheetFile);
  24. theme.unload_stylesheet(stylesheetFile);
  25. if (production) {
  26. theme.load_stylesheet(stylesheetFile);
  27. this.stylesheet = stylesheetFile;
  28. } else {
  29. theme.load_stylesheet(defaultStylesheetFile);
  30. this.stylesheet = defaultStylesheetFile;
  31. }
  32. } catch (e) {
  33. Logger.error(`${uuid} - ${e}`);
  34. return;
  35. }
  36. }
  37. }