shell/network-agent: Do not query keyring in greeter mode

When trying to connect to a network from gdm, it doesn't make sense to query
secrets from the gdm user since it's a system user.

Furthermore, gdm runs an isolated dbus-session per gnome-shell instance
(for multi-seat setups). Instead, gnome-keyring-daemon is started by systemd
and so it registers on the _main_ dbus session of the gdm user session.
Then, gnome-shell tries to dbus-activate another gnome-keyring-daemon on its
isolated bus, but gnome-keyring-daemon refuses to start as it sees another
instance already running, exposed at $XDG_RUNTIME_DIR/keyring/control.
After a 25s timeout, gnome-shell aborts the request without ever prompting
for a new password.

Because it is both problematic and pointless to query secrets in this case,
let's avoid it altogether and just prompt the user for the network password.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3646>
This commit is contained in:
Alessandro Astone
2025-02-19 12:26:44 +01:00
committed by Marge Bot
parent fb289fa05d
commit 65d38939e2
2 changed files with 64 additions and 1 deletions

View File

@ -10,6 +10,7 @@ import St from 'gi://St';
import * as Signals from '../../misc/signals.js';
import * as Dialog from '../dialog.js';
import * as Main from '../main.js';
import * as MessageTray from '../messageTray.js';
import * as ModalDialog from '../modalDialog.js';
import * as ShellEntry from '../shellEntry.js';
@ -676,6 +677,7 @@ class NetworkAgent {
identifier: 'org.gnome.Shell.NetworkAgent',
capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
auto_register: false,
force_always_ask: Main.sessionMode.isGreeter,
});
this._dialogs = { };