Search code examples
gnomegnome-shell-extensionsgjs

Include secondary sources in GJS


I am developing a Gnome extension. As such, I have an extension.js where all my code resides. Now I have some other code I want to use, which lives in a file foo.js and sadly does not yet use strict mode. How can I load this foo.js?


Solution

  • This is covered in the existing tutorial:

    // GJS's Built-in Modules are in the top-level
    // See: https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Modules.md
    const Gettext = imports.gettext;
    const Cairo = imports.cairo;
    
    // GNOME APIs are under the `gi` namespace (except Cairo)
    // See: https://gjs-docs.gnome.org/
    const GLib = imports.gi.GLib;
    const Gtk = imports.gi.Gtk;
    
    // GNOME Shell imports
    const Main = imports.ui.main;
    const ExtensionUtils = imports.misc.extensionUtils;
    
    // You can import your modules using the extension object.
    // For example, if you had a file named `exampleLib.js` in your extension directory
    const Me = ExtensionUtils.getCurrentExtension();
    const ExampleLib = Me.imports.exampleLib;
    
    let myObject = new ExampleLib.ExportedClass();
    ExampleLib.exportedFunction(0, ExampleLib.EXPORTED_VARIABLE);