As it is known, extensions are disabled when the screen is locked (like when the computer is left for some time unused), and are re-enabled after it is unlocked.
I have an extension (Desktop Icons NG) that needs to detect when a window is created in order to set it as the desktop background. To do that, it connects to the “map” signal. But it seems that the signal isn’t sent if a window is mapped while the screen is locked. Of course, in theory, the extension is re-enabled after the session has been unlocked, and it usually happens this way, but sometimes it seems to be enabled “too early”, and it doesn’t receive the “map” signal.
I know that there is an option that can be added to the metadata.json file that allows an extension to run while the lock screen is enabled, but unfortunately this isn’t the solution, because if several extensions are active and one is disabled, all the extensions enabled after it during boot must be disabled first to guarantee that any monkey-patching is correctly reverted, which means that even with that option the extension can be disabled when locking the screen. Even worse: since it is re-enabled immediately after (and, thus, while the screen is locked) it won’t receive the “map” signal, and the icon window will behave as a normal window (it will be shown in the window list when using Alt+Tab, in the Activities mode…).
I created a patch that, when the main program is launched, waits up to three seconds for the corresponding “map” signal, and if it doesn’t receive it, relaunches the program, but it’s not a very elegant solution.
So my question is: is there a “desktop ready” signal emitted after unlocking the desktop, to let the extensions know that Gnome Shell is ready again? Something like the “startup-complete” signal emitted during startup, that notifies the extensions that Gnome Shell has completed the startup animations and everything, and is completely ready.