Code change:
No GNOME Shell Extension can enable desktop icons. . to enable desktop icons. Should be able to enable desktop icons in GNOME Shell, one way or another. About the time of NixOS 20.03, i was still able to have desktop icons using some old version of extension. <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. --
I can confirm this. The systemd journal shows (once every second):
This probably requires patching all paths referencing other libraries or binaries. Which of those extensions shall I have a look at first?
, maybe the one that is easier to fix? I did not have an opportunity to test , so i cannot decide between the two. Thanks!
Haven't had the opportunity to check out any of them so I also cannot decide. Any one of them would be fine for me, so I guess start with the one that is easier to fix (if there is a difference). If I can be of any help let me know.
WIP: I have the following override and the following patch: But I somehow can't get it to find nautilus. It will always end with a null exception while trying to access nautilus stuff (can't copy the stack trace out of the testing VM, sorry).
still not solved :
Made a PR for , a similar technique can be used on the other desktop icon extensions. Would like if someone could test that everything's working. Note the schema path bit, that was causing . For any path you cannot directly list with you most likely need to do the thing (or otherwise find a way to make it find the schema source).

Related discussion:
text: <ins> diff --git a/app/createThumbnail.js b/app/createThumbnail.js index ebe5213..9f67873 100755 --- a/app/createThumbnail.js +++ b/app/createThumbnail.js @@ -1,4 +1,4 @@ -#!/usr/bin/gjs +#!@gjs@/bin/gjs /* DING: Desktop Icons New Generation for GNOME Shell * diff --git a/app/ding.js b/app/ding.js index b200be4..3ce05ef 100755 --- a/app/ding.js +++ b/app/ding.js @@ -1,4 +1,4 @@ -#!/usr/bin/env gjs +#!@gjs@/bin/gjs /* DING: Desktop Icons New Generation for GNOME Shell * diff --git a/app/fileItemMenu.js b/app/fileItemMenu.js index cadca48..9632ecc 100644 --- a/app/fileItemMenu.js +++ b/app/fileItemMenu.js @@ -683,7 +683,7 @@ var FileItemMenu = class { return; } let xdgEmailCommand = []; -        xdgEmailCommand.push('xdg-email'); +        xdgEmailCommand.push('@xdg_utils@/bin/xdg-email'); for (let fileItem of this._desktopManager.getCurrentSelection(false)) { fileItem.unsetSelected(); xdgEmailCommand.push('--attach'); diff --git a/app/preferences.js b/app/preferences.js index c89271c..29f0db8 100644 --- a/app/preferences.js +++ b/app/preferences.js @@ -31,6 +31,7 @@ var Preferences = class { this._extensionPath = Data.codePath; this._Enums = Data.Enums; let schemaSource = GioSSS.get_default(); +        const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); this._desktopManager = null; // Gtk @@ -38,7 +39,7 @@ var Preferences = class { this.gtkSettings = new Gio.Settings({ settings_schema: schemaGtk }); // Gnome Files -        let schemaObj = schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS, true); +        let schemaObj = schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS, true); if (!schemaObj) { this.nautilusSettings = null; this.CLICK_POLICY_SINGLE = false; @@ -47,7 +48,7 @@ var Preferences = class { } // Compression -        const compressionSchema = schemaSource.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true); +        const compressionSchema = schemaSourceNautilus.lookup(this._Enums.SCHEMA_NAUTILUS_COMPRESSION, true); if (!compressionSchema) this.nautilusCompression = null; else diff --git a/app/thumbnailapp.js b/app/thumbnailapp.js index b22bbe0..c5c7711 100755 --- a/app/thumbnailapp.js +++ b/app/thumbnailapp.js @@ -1,4 +1,4 @@ -#!/usr/bin/env gjs +#!@gjs@/bin/gjs /* DING: Desktop Icons New Generation for GNOME Shell * diff --git a/extension.js b/extension.js index 2e5bcaa..4eaa108 100644 --- a/extension.js +++ b/extension.js @@ -373,7 +373,7 @@ function getDesktopGeometry() { async function doKillAllOldDesktopProcesses() { const procFolder = Gio.File.new_for_path('/proc'); const processes = await FileUtils.enumerateDir(procFolder); -    const thisPath = `gjs ${GLib.build_filenamev([ +    const thisPath = `@gjs@/bin/gjs ${GLib.build_filenamev([ ExtensionUtils.getCurrentExtension().path, 'app', 'ding.js', @@ -397,7 +397,7 @@ async function doKillAllOldDesktopProcesses() { } if (contents.startsWith(thisPath)) { -                let proc = new Gio.Subprocess({ argv: ['/bin/kill', filename] }); +                let proc = new Gio.Subprocess({ argv: ['@util_linux@/bin/kill', filename] }); proc.init(null); print(`Killing old DING process ${filename}`); await proc.wait_async_promise(null); diff --git a/prefs.js b/prefs.js index 1ad0cad..d830f11 100644 --- a/prefs.js +++ b/prefs.js @@ -46,7 +46,8 @@ function fillPreferencesWindow(window) { let schemaSource = GioSSS.get_default(); let schemaGtk = schemaSource.lookup(Enums.SCHEMA_GTK, true); let gtkSettings = new Gio.Settings({ settings_schema: schemaGtk }); -    let schemaNautilus = schemaSource.lookup(Enums.SCHEMA_NAUTILUS, true); +    const schemaSourceNautilus = Gio.SettingsSchemaSource.new_from_directory('@nautilus_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); +    let schemaNautilus = schemaSourceNautilus.lookup(Enums.SCHEMA_NAUTILUS, true); let nautilusSettings; if (!schemaNautilus) nautilusSettings = null; </ins>