linux-app icon indicating copy to clipboard operation
linux-app copied to clipboard

Help configuring ProtonVPN to use KWallet

Open gustavo-hms opened this issue 3 years ago • 1 comments

Please complete the following checklist (by adding [x]):

  • [x] I have searched open and closed issues for duplicates
  • [x] This isn't a feature request
  • [x] This is not a report about my app not working as expected

Hi!

I have a non-orthodox setup, so I totally understand you don't have to offer support to my case. But maybe my question can be easily answered by some of you, in which case I would be very thankful.

I'm on a system other than Plasma and Gnome (it's one of those Wayland compositors) and want to make ProtonVPN use KWallet to store its secrets, for three reasons:

  • first, I already have a complete Plasma setup on the same machine, so I already have KWallet installed there;
  • I know ProtonVPN works well with it, since I can use it when logged on a Plasma session;
  • for some unknown reason, gnome-keyring is not working properly on my machine.

When I'm logged in the Plasma desktop, everything works as expected. However, when I'm on the Wayland compositor, it shows a message that it couldn't find any agent.

So, I'm trying to make it use KWallet.

So far, I've managed to configure keyring to use KWallet, by creating a keyringrc.cfg file in ~/.config/python_keyring with the following content:

[backend]
default-keyring=keyring.backends.kwallet.DBusKeyring

I can confirm keyring does use KWallet by following these steps:

  • inserting dummy data by running keyring set dummy-service dummy-key on the command line;
  • retrieving (keyring get dummy-service dummy-key) and confirming data was inserted;
  • explicitly querying KWallet backend: keyring -b keyring.backends.kwallet.DBusKeyring get dummy-service dummy-key and confirming data was inserted in the right backend;
  • double checking by querying keyring -b keyring.backends.SecretService.Keyring get dummy-service dummy-key and keyring -b keyring.backends.libsecret.Keyring get dummy-service dummy-key and attesting data isn't there.
  • I also tried the steps above using keyring module from within Python code and the same checks hold.

Now, even though keyring is using KWallet, ProtonVPN doesn't, something that can be confirmed by this line in protonvpn.log:

Using "<class 'protonvpn_nm_lib.core.keyring.linuxkeyring.KeyringBackendLinuxSecretService'>" keyring

when I'm logged in my Wayland compositor's session, contrasting to

Using "<class 'protonvpn_nm_lib.core.keyring.linuxkeyring.KeyringBackendLinuxKwallet'>" keyring

when I'm logged in the Plasma session.

I also tried setting the PYTHON_KEYRING_BACKEND environnment variable without luck.

Is there a way to make ProtonVPN respect the keyring lib configuration?

Thanks in advance!

gustavo-hms avatar Jul 09 '22 15:07 gustavo-hms