Skip to content

Commit 128fe7f

Browse files
committed
csm-manager.c: Unset WAYLAND_DISPLAY during shutdown in a wayland
session. This and others need to be cleared after a wayland session so systemd doesn't pass them to the next session. This is performed by others using systemd unit parameters, but we don't currently use systemd for this. https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/data/[email protected]?ref_type=heads#L26
1 parent 59acfe1 commit 128fe7f

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

cinnamon-session/csm-manager.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,36 @@ maybe_restart_user_bus (CsmManager *manager)
951951
if (manager->priv->dbus_disconnected)
952952
return;
953953

954+
if (g_strcmp0 (g_getenv ("XDG_SESSION_TYPE"), "wayland") == 0) {
955+
g_debug ("CsmManager: Unsetting environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY");
956+
957+
GVariantBuilder builder;
958+
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
959+
g_variant_builder_add (&builder, "s", "GNOME_SETUP_DISPLAY");
960+
g_variant_builder_add (&builder, "s", "WAYLAND_DISPLAY");
961+
g_variant_builder_add (&builder, "s", "DISPLAY");
962+
g_variant_builder_add (&builder, "s", "XAUTHORITY");
963+
964+
reply = g_dbus_connection_call_sync (manager->priv->connection,
965+
"org.freedesktop.systemd1",
966+
"/org/freedesktop/systemd1",
967+
"org.freedesktop.systemd1.Manager",
968+
"UnsetEnvironment",
969+
g_variant_new ("(@as)",
970+
g_variant_builder_end (&builder)),
971+
NULL,
972+
G_DBUS_CALL_FLAGS_NONE,
973+
-1, NULL, &error);
974+
975+
if (error != NULL) {
976+
g_debug ("CsmManager: unsetting environment failed: %s", error->message);
977+
g_clear_error (&error);
978+
}
979+
else {
980+
g_variant_unref (reply);
981+
}
982+
}
983+
954984
system = csm_get_system ();
955985

956986
if (!csm_system_is_last_session_for_user (system))

0 commit comments

Comments
 (0)