Application entries (.desktop) not displayed

No, the spec mandates a default value of $HOME/.local/share if $XDG_DATA_HOME isn’t set. So the location should be fine.

There are a number of additional checks, for example that all specified executables (TryExec or Exec) can be found in the path and have the executable bit set.

Could that be the problem? Maybe ~/.cargo/bin is only added to the PATH for interactive shells?

If you have debug symbols for GIO available, here’s an idea to debug the issue:

  1. Run
    $ gdb --args gjs -c "imports.gi.Gio.DesktopAppInfo.new('emulsion.desktop')"
    
  2. Set a breakpoint and run the program:
    (gdb) break g_desktop_app_info_load_from_keyfile
    (gdb) run
    
  3. If the breakpoint isn’t hit, then the file is not found. Otherwise you can use the next and step commands to (hopefully) figure out where things go wrong