1 /* -*- Mode: C; indent-tabs-mode: nil; tab-width: 4 -*-
3 * Copyright (C) 2010-2011 Robert Ancell.
4 * Author: Robert Ancell <robert.ancell@canonical.com>
6 * This program is free software: you can redistribute it and/or modify it under
7 * the terms of the GNU General Public License as published by the Free Software
8 * Foundation, either version 3 of the License, or (at your option) any later
9 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
18 login1_is_running (void)
20 return access ("/run/systemd/seats/", F_OK) >= 0;
24 login1_get_session_id (void)
31 bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
33 g_warning ("Failed to get system bus: %s", error->message);
34 g_clear_error (&error);
37 result = g_dbus_connection_call_sync (bus,
38 "org.freedesktop.login1",
39 "/org/freedesktop/login1",
40 "org.freedesktop.login1.Manager",
42 g_variant_new ("(u)", getpid()),
43 G_VARIANT_TYPE ("(o)"),
44 G_DBUS_CALL_FLAGS_NONE,
51 g_warning ("Failed to open login1 session: %s", error->message);
52 g_clear_error (&error);
56 g_variant_get (result, "(o)", &session_path);
57 g_variant_unref (result);
58 g_debug ("Got login1 session id: %s", session_path);
64 login1_lock_session (const gchar *session_path)
69 g_return_if_fail (session_path != NULL);
71 g_debug ("Locking login1 session %s", session_path);
73 bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
75 g_warning ("Failed to get system bus: %s", error->message);
76 g_clear_error (&error);
84 result = g_dbus_connection_call_sync (bus,
85 "org.freedesktop.login1",
87 "org.freedesktop.login1.Session",
90 G_VARIANT_TYPE ("()"),
91 G_DBUS_CALL_FLAGS_NONE,
96 g_warning ("Error locking login1 session: %s", error->message);
97 g_clear_error (&error);
99 g_variant_unref (result);
101 g_object_unref (bus);
105 login1_unlock_session (const gchar *session_path)
107 GDBusConnection *bus;
108 GError *error = NULL;
110 g_return_if_fail (session_path != NULL);
112 g_debug ("Unlocking login1 session %s", session_path);
114 bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
116 g_warning ("Failed to get system bus: %s", error->message);
117 g_clear_error (&error);
125 result = g_dbus_connection_call_sync (bus,
126 "org.freedesktop.login1",
128 "org.freedesktop.login1.Session",
130 g_variant_new ("()"),
131 G_VARIANT_TYPE ("()"),
132 G_DBUS_CALL_FLAGS_NONE,
137 g_warning ("Error unlocking login1 session: %s", error->message);
138 g_clear_error (&error);
140 g_variant_unref (result);
142 g_object_unref (bus);