1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- 2 * 3 * Copyright (C) 2008 William Jon McCann <jmccann@redhat.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 21 #ifndef __GSM_MANAGER_H 22 #define __GSM_MANAGER_H 23 24 #include <glib-object.h> 25 26 #include "gsm-store.h" 27 #include "gsm-manager-logout-mode.h" 28 29 G_BEGIN_DECLS 30 31 #define GSM_TYPE_MANAGER (gsm_manager_get_type ()) 32 #define GSM_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSM_TYPE_MANAGER, GsmManager)) 33 #define GSM_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSM_TYPE_MANAGER, GsmManagerClass)) 34 #define GSM_IS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSM_TYPE_MANAGER)) 35 #define GSM_IS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSM_TYPE_MANAGER)) 36 #define GSM_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSM_TYPE_MANAGER, GsmManagerClass)) 37 38 typedef struct GsmManagerPrivate GsmManagerPrivate; 39 40 typedef struct 41 { 42 GObject parent; 43 GsmManagerPrivate *priv; 44 } GsmManager; 45 46 typedef struct 47 { 48 GObjectClass parent_class; 49 50 void (* phase_changed) (GsmManager *manager, 51 const char *phase); 52 } GsmManagerClass; 53 54 typedef enum { 55 /* gsm's own startup/initialization phase */ 56 GSM_MANAGER_PHASE_STARTUP = 0, 57 /* gnome-initial-setup */ 58 GSM_MANAGER_PHASE_EARLY_INITIALIZATION, 59 /* gnome-keyring-daemon */ 60 GSM_MANAGER_PHASE_PRE_DISPLAY_SERVER, 61 /* wayland compositor and XWayland */ 62 GSM_MANAGER_PHASE_DISPLAY_SERVER, 63 /* xrandr setup, gnome-settings-daemon, etc */ 64 GSM_MANAGER_PHASE_INITIALIZATION, 65 /* window/compositing managers */ 66 GSM_MANAGER_PHASE_WINDOW_MANAGER, 67 /* apps that will create _NET_WM_WINDOW_TYPE_PANEL windows */ 68 GSM_MANAGER_PHASE_PANEL, 69 /* apps that will create _NET_WM_WINDOW_TYPE_DESKTOP windows */ 70 GSM_MANAGER_PHASE_DESKTOP, 71 /* everything else */ 72 GSM_MANAGER_PHASE_APPLICATION, 73 /* done launching */ 74 GSM_MANAGER_PHASE_RUNNING, 75 /* shutting down */ 76 GSM_MANAGER_PHASE_QUERY_END_SESSION, 77 GSM_MANAGER_PHASE_END_SESSION, 78 GSM_MANAGER_PHASE_EXIT 79 } GsmManagerPhase; 80 81 typedef enum 82 { 83 GSM_MANAGER_ERROR_GENERAL = 0, 84 GSM_MANAGER_ERROR_NOT_IN_INITIALIZATION, 85 GSM_MANAGER_ERROR_NOT_IN_RUNNING, 86 GSM_MANAGER_ERROR_ALREADY_REGISTERED, 87 GSM_MANAGER_ERROR_NOT_REGISTERED, 88 GSM_MANAGER_ERROR_INVALID_OPTION, 89 GSM_MANAGER_ERROR_LOCKED_DOWN, 90 GSM_MANAGER_NUM_ERRORS 91 } GsmManagerError; 92 93 #define GSM_MANAGER_ERROR gsm_manager_error_quark () 94 GQuark gsm_manager_error_quark (void); 95 96 GType gsm_manager_get_type (void); 97 98 GsmManager * gsm_manager_new (GsmStore *client_store, 99 gboolean failsafe, 100 gboolean systemd_managed); 101 GsmManager * gsm_manager_get (void); 102 103 gboolean gsm_manager_get_failsafe (GsmManager *manager); 104 gboolean gsm_manager_get_systemd_managed (GsmManager *manager); 105 106 gboolean gsm_manager_add_autostart_app (GsmManager *manager, 107 const char *path, 108 const char *provides); 109 gboolean gsm_manager_add_required_app (GsmManager *manager, 110 const char *path, 111 const char *provides); 112 gboolean gsm_manager_add_autostart_apps_from_dir (GsmManager *manager, 113 const char *path); 114 gboolean gsm_manager_add_legacy_session_apps (GsmManager *manager, 115 const char *path); 116 117 void gsm_manager_start (GsmManager *manager); 118 119 char * _gsm_manager_get_default_session (GsmManager *manager); 120 121 void _gsm_manager_set_active_session (GsmManager *manager, 122 const char *session_name, 123 gboolean is_fallback); 124 125 void _gsm_manager_set_renderer (GsmManager *manager, 126 const char *renderer); 127 128 gboolean gsm_manager_logout (GsmManager *manager, 129 guint logout_mode, 130 GError **error); 131 132 gboolean gsm_manager_set_phase (GsmManager *manager, 133 GsmManagerPhase phase); 134 135 G_END_DECLS 136 137 #endif /* __GSM_MANAGER_H */ 138