summaryrefslogtreecommitdiff
path: root/mate-session/gsm-systemd.h
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2013-03-05 20:39:33 +0100
committerStefano Karapetsas <[email protected]>2013-03-05 20:39:33 +0100
commit31fdf9eb550e0f2e69fa1ba96a1d7d78b8d2e060 (patch)
tree832bb7dcfcbdbba34eaf2b66cbbb659a7c692c93 /mate-session/gsm-systemd.h
parent29e5cd2f28f6ddc253d393064c0b24130af0ee35 (diff)
downloadmate-session-manager-31fdf9eb550e0f2e69fa1ba96a1d7d78b8d2e060.tar.bz2
mate-session-manager-31fdf9eb550e0f2e69fa1ba96a1d7d78b8d2e060.tar.xz
Add initial systemd support
Diffstat (limited to 'mate-session/gsm-systemd.h')
-rw-r--r--mate-session/gsm-systemd.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/mate-session/gsm-systemd.h b/mate-session/gsm-systemd.h
new file mode 100644
index 0000000..ad38ac7
--- /dev/null
+++ b/mate-session/gsm-systemd.h
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2013 Stefano Karapetsas
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Authors:
+ * Stefano Karapetsas <[email protected]>
+ */
+
+#ifndef __GSM_SYSTEMD_H__
+#define __GSM_SYSTEMD_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define GSM_TYPE_SYSTEMD (gsm_systemd_get_type ())
+#define GSM_SYSTEMD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_SYSTEMD, GsmSystemd))
+#define GSM_SYSTEMD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_SYSTEMD, GsmSystemdClass))
+#define GSM_IS_SYSTEMD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_SYSTEMD))
+#define GSM_IS_SYSTEMD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_SYSTEMD))
+#define GSM_SYSTEMD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GSM_TYPE_SYSTEMD, GsmSystemdClass))
+#define GSM_SYSTEMD_ERROR (gsm_systemd_error_quark ())
+
+typedef struct _GsmSystemd GsmSystemd;
+typedef struct _GsmSystemdClass GsmSystemdClass;
+typedef struct _GsmSystemdPrivate GsmSystemdPrivate;
+typedef enum _GsmSystemdError GsmSystemdError;
+
+struct _GsmSystemd
+{
+ GObject parent;
+
+ GsmSystemdPrivate *priv;
+};
+
+struct _GsmSystemdClass
+{
+ GObjectClass parent_class;
+
+ void (* request_completed) (GsmSystemd *manager,
+ GError *error);
+
+ void (* privileges_completed) (GsmSystemd *manager,
+ gboolean success,
+ gboolean ask_later,
+ GError *error);
+};
+
+enum _GsmSystemdError {
+ GSM_SYSTEMD_ERROR_RESTARTING = 0,
+ GSM_SYSTEMD_ERROR_STOPPING
+};
+
+#define GSM_SYSTEMD_SESSION_TYPE_LOGIN_WINDOW "greeter"
+
+GType gsm_systemd_get_type (void);
+
+GQuark gsm_systemd_error_quark (void);
+
+GsmSystemd *gsm_systemd_new (void) G_GNUC_MALLOC;
+
+gboolean gsm_systemd_can_switch_user (GsmSystemd *manager);
+
+gboolean gsm_systemd_get_restart_privileges (GsmSystemd *manager);
+
+gboolean gsm_systemd_get_stop_privileges (GsmSystemd *manager);
+
+gboolean gsm_systemd_can_stop (GsmSystemd *manager);
+
+gboolean gsm_systemd_can_restart (GsmSystemd *manager);
+
+void gsm_systemd_attempt_stop (GsmSystemd *manager);
+
+void gsm_systemd_attempt_restart (GsmSystemd *manager);
+
+void gsm_systemd_set_session_idle (GsmSystemd *manager,
+ gboolean is_idle);
+
+gchar *gsm_systemd_get_current_session_type (GsmSystemd *manager);
+
+GsmSystemd *gsm_get_systemd (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __GSM_SYSTEMD_H__ */