setup.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect
  2. //
  3. // SPDX-License-Identifier: GPL-2.0-or-later
  4. const Gio = imports.gi.Gio;
  5. const GLib = imports.gi.GLib;
  6. const Gettext = imports.gettext;
  7. const Config = imports.config;
  8. /**
  9. * Initialise and setup Gettext.
  10. */
  11. function setupGettext() {
  12. // Init Gettext
  13. String.prototype.format = imports.format.format;
  14. Gettext.bindtextdomain(Config.APP_ID, Config.PACKAGE_LOCALEDIR);
  15. globalThis._ = GLib.dgettext.bind(null, Config.APP_ID);
  16. globalThis.ngettext = GLib.dngettext.bind(null, Config.APP_ID);
  17. }
  18. /**
  19. * Initialise and setup Config, GResources and GSchema.
  20. * @param {string} extensionPath - The absolute path to the extension directory
  21. */
  22. function setup(extensionPath) {
  23. // Ensure config.js is setup properly
  24. Config.PACKAGE_DATADIR = extensionPath;
  25. const userDir = GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell']);
  26. if (Config.PACKAGE_DATADIR.startsWith(userDir)) {
  27. Config.IS_USER = true;
  28. Config.GSETTINGS_SCHEMA_DIR = `${Config.PACKAGE_DATADIR}/schemas`;
  29. Config.PACKAGE_LOCALEDIR = `${Config.PACKAGE_DATADIR}/locale`;
  30. }
  31. // Init GResources
  32. Gio.Resource.load(
  33. GLib.build_filenamev([Config.PACKAGE_DATADIR, `${Config.APP_ID}.gresource`])
  34. )._register();
  35. // Init GSchema
  36. Config.GSCHEMA = Gio.SettingsSchemaSource.new_from_directory(
  37. Config.GSETTINGS_SCHEMA_DIR,
  38. Gio.SettingsSchemaSource.get_default(),
  39. false
  40. );
  41. }