Autoconnect personal-files request for eternalmodmanager

EternalModManager is a mod manager for DOOM Eternal which assists in handling mods and the mod injector settings, and makes it easier to load mods into the game on Linux systems.

Based on the discussions here and here, I also wanna request personal-files auto connection, which will grant me access to the following folders:

$HOME/.var/app/com.valvesoftware.Steam
$HOME/.local/share/Steam
$HOME/.steam

which are the default Steam folders, hidden by default (and thus not accesible with the home interface by itself).

Can you please include the full snap.yaml declaration for these interfaces? It is important that these are named using the usual conventions etc. Also this will show whether you are requesting read or write permission too.

Finally, in this case since eternalmodmanager is not the owner of these paths, this would not normally be granted auto-connect in this case, however you could still check if the user has connect the interface manually (via snapctl is-connected $INTERFACE_NAME) - and if not then prompt them to connect it?

I’m using electron-builder to build the snap, the declaration in it’s JSON is as follows:

{
          "steam-files": {
            "interface": "personal-files",
            "write": [ "$HOME/.var/app/com.valvesoftware.Steam", "$HOME/.local/share/Steam", "$HOME/.steam" ]
          }
        }

which would be the equivalent to:

plugs:
  steam-files:
    interface: personal-files
    write:
    - $HOME/.var/app/com.valvesoftware.Steam
    - $HOME/.local/share/Steam
    - $HOME/.steam

apps:
  eternalmodmanager:
    plugs:
    - steam-files

And yes, I’d like to request just regular connection (not necessarily auto), I was confused when I first wrote

Also, how can I notify the user about the snap connection? Is there a way to detect if it’s not enabled?

you can shell out to snapctl is-connected <interfacename> inside your app …

and based on the return value, show a popup window …

I see, thank you! Will try to implement it right now.

Implemented it in the latest commit: https://github.com/PowerBall253/EternalModManager/commit/610eec7b5c84aea57bdd36a1b8a8a5f06c2cd25b

Thanks for the update - I wonder if perhaps the interface name should be a bit more descriptive - perhaps steam-data or similar since then it may convey to the user that the snap is being given access to their complete steam data?

+1 from me for use of but not auto-connect of this personal-files instance for eternalmodmanager. Can other @reviewers please vote? Also if anyone has any suggestions on the name for this interface please feel free to chime in.

@powerball253 is there a way for you to minimize access to .steam data, i.e., only specific sub-directories related to EMM?

I think I can, gonna give it a try.

I have renamed and minimized the folder access: https://github.com/PowerBall253/EternalModManager/commit/13541ad37ee1ae8046838f69d636aa7d131d1ced

hey @powerball253 thanks for the adjustment. +1 from me for use of personal-files with write access to steam hidden locations.

Can other @reviewers please vote?

+2 votes for, 0 votes against. Granting use (but not auto-connect) of personal-files with write access to $HOME/.var/app/com.valvesoftware.Steam/steamapps/common/DOOMEternal, $HOME/.local/share/Steam/steamapps/common/DOOMEternal and $HOME/.steam/steam/steamapps/common/DOOMEternal. This is now live.

@powerball253 could you please confirm your snap is working as expected. Thanks!

Working perfectly, thank you!

1 Like