I think there needs to be a discussion around user expectations for programs launched from the GUI but have no GUI of there own.
One example is ‘Caffeine’, but I know there are others.
I discussed this with he Caffeine developer - he has a .desktop link because it’s the best way to let a user having something run at startup, which he had legitimate use case for.
But this is really a terrible UI pattern that will confuse new users. They launch a program and nothing happens! Has it failed to load? Has it loaded behind other windows? Is it just being slow? And then they maybe launch it twice and end up with 2 (or more) instances.
There is a related issue around programs that open a window but truly are just very slow to do it. Some implement splash screens, but it’s not a universal thing, and I think GNOME should provide some kind of default experience for it. I can’t remember off-hand how Windows does this, but I know I’ve never been as confused on Windows when/if things are launching - I think at least it makes sure an hour glass icon will show while an application launches.
I know this is a very tricky thing. If a program is not guaranteed to open a window or tray icon, how can you display a cursor until it does? After all, this is not Windows, the GUI is a frontend to a proper Unix system, not necessarily the primary interface.
What if there was a convention that a launching program could send signals to some part of GNOME saying what it is expecting to do and what is happening… like “I will open a window soon”, “I have no window but am still starting up”, “I have finished starting up”.
GNOME could then show appropriate automatic splash screens, hour-glass cursors, activated in background alerts, or whatever, appropriate based on how the program was launched by the user (e.g. startup program vs manually launched).
And if something loads but exits with a failure exit code, does GNOME handle this currently with UI feedback?