• smpl@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    25
    ·
    edit-2
    1 year ago

    GNOME Shell 45 moved to ESM (ECMAScript modules). That means you MUST use the standard import declaration instead of relying on the previous imports.* approach.

    https://gjs.guide/extensions/upgrading/gnome-shell-45.html

    So the imports in your extensions is changed from:

    const Clutter = imports.gi.Clutter;
    const Gio = imports.gi.Gio;
    const Main = imports.ui.main;
    const Volume = imports.ui.status.volume;
    

    to

    import Clutter from 'gi://Clutter';
    import Gio from 'gi://Gio';
    import * as Main from 'resource:///org/gnome/shell/ui/main.js'
    import * as Volume from 'resource:///org/gnome/shell/ui/status/volume.js';
    
    • dysprosium@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      well that’s what I tried, but how would I know where Volume is located in the path 'gi:// … '. Is there any way of browsing / exploring the jave files to that I can actually know what the path is?

      • smpl@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        7
        ·
        1 year ago

        I edited my comment with an example for your code and my best advice for figuring out the path of gnome shell imports is by browsing /usr/share/gnome-shell/js/, the docs are not very helpful.

        • dysprosium@lemmy.dbzer0.comOP
          link
          fedilink
          arrow-up
          6
          ·
          1 year ago

          Aha I see. Except I’m not sure if the path /usr/share/gnome-shell/js/ is correct? The folder/file js does not exist on my end.

          • smpl@discuss.tchncs.de
            link
            fedilink
            English
            arrow-up
            7
            ·
            1 year ago

            Just to clarify. The gi:// resources are GObject Introspection modules which are used for multilanguage bindings to native libraries. On my system, GI modules are found in /usr/share/gir-1.0/ . They’re just imported by name and sometimes version using gi:// (there are examples in the link in my first comment).

            As I don’t have Gnome installed I can’t be sure of the path to gnome shell modules imported using resource://, but it’s probably the path I wrote, but without js/.

          • smpl@discuss.tchncs.de
            link
            fedilink
            English
            arrow-up
            4
            ·
            1 year ago

            It is very likely the wrong path, I just extrapolated the path from the gnome-shell git repo. I don’t use Gnome myself, I’m on the enemy team using LXDE on Devuan ;)