# Pastebin 1oiH3TZr std::string session_id = test_mode_ ? "id0" : glib::gchar_to_string(g_getenv("XDG_SESSION_ID")); if (!session_id.empty()) { CallLogindMethod("GetSession", g_variant_new("(s)", session_id), [this, session_id] (GVariant* variant, glib::Error const& err) { std::string session_path; if (!err && variant) session_path = glib::Variant(variant).GetString(); if (session_path.empty()) session_path = "/org/freedesktop/login1/session/" + session_id; SetupLogin1Proxy(session_path); }); } else { auto proxy = std::make_shared("org.freedesktop.login1", "/org/freedesktop/login1/user/self", "org.freedesktop.login1.User", G_BUS_TYPE_SYSTEM); proxy->GetProperty("Display", [this, proxy] (GVariant *variant) { if (!variant || g_variant_n_children(variant) < 2) return; glib::Variant tmp(g_variant_get_child_value(variant, 1), glib::StealRef()); SetupLogin1Proxy(tmp.GetString()); }); }