1#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
6#![allow(
7 clippy::approx_constant,
8 clippy::type_complexity,
9 clippy::unreadable_literal,
10 clippy::upper_case_acronyms
11)]
12#![cfg_attr(docsrs, feature(doc_cfg))]
13
14use gio_sys as gio;
15use glib_sys as glib;
16use gobject_sys as gobject;
17
18#[allow(unused_imports)]
19use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
20#[cfg(unix)]
21#[allow(unused_imports)]
22use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
23#[allow(unused_imports)]
24use std::ffi::{
25 c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
26};
27
28#[allow(unused_imports)]
29use glib::{GType, gboolean, gconstpointer, gpointer};
30
31pub type LightDMGreeterError = c_int;
33pub const LIGHTDM_GREETER_ERROR_COMMUNICATION_ERROR: LightDMGreeterError = 0;
34pub const LIGHTDM_GREETER_ERROR_CONNECTION_FAILED: LightDMGreeterError = 1;
35pub const LIGHTDM_GREETER_ERROR_SESSION_FAILED: LightDMGreeterError = 2;
36pub const LIGHTDM_GREETER_ERROR_NO_AUTOLOGIN: LightDMGreeterError = 3;
37pub const LIGHTDM_GREETER_ERROR_INVALID_USER: LightDMGreeterError = 4;
38
39pub type LightDMMessageType = c_int;
40pub const LIGHTDM_MESSAGE_TYPE_INFO: LightDMMessageType = 0;
41pub const LIGHTDM_MESSAGE_TYPE_ERROR: LightDMMessageType = 1;
42
43pub type LightDMPromptType = c_int;
44pub const LIGHTDM_PROMPT_TYPE_QUESTION: LightDMPromptType = 0;
45pub const LIGHTDM_PROMPT_TYPE_SECRET: LightDMPromptType = 1;
46
47pub const LIGHTDM_GREETER_SIGNAL_AUTHENTICATION_COMPLETE: &[u8] = b"authentication-complete\0";
49pub const LIGHTDM_GREETER_SIGNAL_AUTOLOGIN_TIMER_EXPIRED: &[u8] = b"autologin-timer-expired\0";
50pub const LIGHTDM_GREETER_SIGNAL_IDLE: &[u8] = b"idle\0";
51pub const LIGHTDM_GREETER_SIGNAL_RESET: &[u8] = b"reset\0";
52pub const LIGHTDM_GREETER_SIGNAL_SHOW_MESSAGE: &[u8] = b"show-message\0";
53pub const LIGHTDM_GREETER_SIGNAL_SHOW_PROMPT: &[u8] = b"show-prompt\0";
54pub const LIGHTDM_SIGNAL_USER_CHANGED: &[u8] = b"changed\0";
55pub const LIGHTDM_USER_LIST_SIGNAL_USER_ADDED: &[u8] = b"user-added\0";
56pub const LIGHTDM_USER_LIST_SIGNAL_USER_CHANGED: &[u8] = b"user-changed\0";
57pub const LIGHTDM_USER_LIST_SIGNAL_USER_REMOVED: &[u8] = b"user-removed\0";
58
59#[derive(Copy, Clone)]
61#[repr(C)]
62pub struct LightDMGreeterClass {
63 pub parent_class: gobject::GObjectClass,
64 pub show_message:
65 Option<unsafe extern "C" fn(*mut LightDMGreeter, *const c_char, LightDMMessageType)>,
66 pub show_prompt:
67 Option<unsafe extern "C" fn(*mut LightDMGreeter, *const c_char, LightDMPromptType)>,
68 pub authentication_complete: Option<unsafe extern "C" fn(*mut LightDMGreeter)>,
69 pub autologin_timer_expired: Option<unsafe extern "C" fn(*mut LightDMGreeter)>,
70 pub idle: Option<unsafe extern "C" fn(*mut LightDMGreeter)>,
71 pub reset: Option<unsafe extern "C" fn(*mut LightDMGreeter)>,
72 pub reserved1: Option<unsafe extern "C" fn()>,
73 pub reserved2: Option<unsafe extern "C" fn()>,
74 pub reserved3: Option<unsafe extern "C" fn()>,
75 pub reserved4: Option<unsafe extern "C" fn()>,
76}
77
78impl ::std::fmt::Debug for LightDMGreeterClass {
79 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
80 f.debug_struct(&format!("LightDMGreeterClass @ {self:p}"))
81 .field("show_message", &self.show_message)
82 .field("show_prompt", &self.show_prompt)
83 .field("authentication_complete", &self.authentication_complete)
84 .field("autologin_timer_expired", &self.autologin_timer_expired)
85 .field("idle", &self.idle)
86 .field("reset", &self.reset)
87 .field("reserved1", &self.reserved1)
88 .field("reserved2", &self.reserved2)
89 .field("reserved3", &self.reserved3)
90 .field("reserved4", &self.reserved4)
91 .finish()
92 }
93}
94
95#[derive(Copy, Clone)]
96#[repr(C)]
97pub struct LightDMLanguageClass {
98 pub parent_class: gobject::GObjectClass,
99 pub reserved1: Option<unsafe extern "C" fn()>,
100 pub reserved2: Option<unsafe extern "C" fn()>,
101 pub reserved3: Option<unsafe extern "C" fn()>,
102 pub reserved4: Option<unsafe extern "C" fn()>,
103 pub reserved5: Option<unsafe extern "C" fn()>,
104 pub reserved6: Option<unsafe extern "C" fn()>,
105}
106
107impl ::std::fmt::Debug for LightDMLanguageClass {
108 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
109 f.debug_struct(&format!("LightDMLanguageClass @ {self:p}"))
110 .field("reserved1", &self.reserved1)
111 .field("reserved2", &self.reserved2)
112 .field("reserved3", &self.reserved3)
113 .field("reserved4", &self.reserved4)
114 .field("reserved5", &self.reserved5)
115 .field("reserved6", &self.reserved6)
116 .finish()
117 }
118}
119
120#[derive(Copy, Clone)]
121#[repr(C)]
122pub struct LightDMLayoutClass {
123 pub parent_class: gobject::GObjectClass,
124 pub reserved1: Option<unsafe extern "C" fn()>,
125 pub reserved2: Option<unsafe extern "C" fn()>,
126 pub reserved3: Option<unsafe extern "C" fn()>,
127 pub reserved4: Option<unsafe extern "C" fn()>,
128 pub reserved5: Option<unsafe extern "C" fn()>,
129 pub reserved6: Option<unsafe extern "C" fn()>,
130}
131
132impl ::std::fmt::Debug for LightDMLayoutClass {
133 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
134 f.debug_struct(&format!("LightDMLayoutClass @ {self:p}"))
135 .field("reserved1", &self.reserved1)
136 .field("reserved2", &self.reserved2)
137 .field("reserved3", &self.reserved3)
138 .field("reserved4", &self.reserved4)
139 .field("reserved5", &self.reserved5)
140 .field("reserved6", &self.reserved6)
141 .finish()
142 }
143}
144
145#[derive(Copy, Clone)]
146#[repr(C)]
147pub struct LightDMSessionClass {
148 pub parent_class: gobject::GObjectClass,
149 pub reserved1: Option<unsafe extern "C" fn()>,
150 pub reserved2: Option<unsafe extern "C" fn()>,
151 pub reserved3: Option<unsafe extern "C" fn()>,
152 pub reserved4: Option<unsafe extern "C" fn()>,
153 pub reserved5: Option<unsafe extern "C" fn()>,
154 pub reserved6: Option<unsafe extern "C" fn()>,
155}
156
157impl ::std::fmt::Debug for LightDMSessionClass {
158 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
159 f.debug_struct(&format!("LightDMSessionClass @ {self:p}"))
160 .field("reserved1", &self.reserved1)
161 .field("reserved2", &self.reserved2)
162 .field("reserved3", &self.reserved3)
163 .field("reserved4", &self.reserved4)
164 .field("reserved5", &self.reserved5)
165 .field("reserved6", &self.reserved6)
166 .finish()
167 }
168}
169
170#[derive(Copy, Clone)]
171#[repr(C)]
172pub struct LightDMUserClass {
173 pub parent_class: gobject::GObjectClass,
174 pub changed: Option<unsafe extern "C" fn(*mut LightDMUser)>,
175 pub reserved1: Option<unsafe extern "C" fn()>,
176 pub reserved2: Option<unsafe extern "C" fn()>,
177 pub reserved3: Option<unsafe extern "C" fn()>,
178 pub reserved4: Option<unsafe extern "C" fn()>,
179 pub reserved5: Option<unsafe extern "C" fn()>,
180 pub reserved6: Option<unsafe extern "C" fn()>,
181}
182
183impl ::std::fmt::Debug for LightDMUserClass {
184 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
185 f.debug_struct(&format!("LightDMUserClass @ {self:p}"))
186 .field("changed", &self.changed)
187 .field("reserved1", &self.reserved1)
188 .field("reserved2", &self.reserved2)
189 .field("reserved3", &self.reserved3)
190 .field("reserved4", &self.reserved4)
191 .field("reserved5", &self.reserved5)
192 .field("reserved6", &self.reserved6)
193 .finish()
194 }
195}
196
197#[derive(Copy, Clone)]
198#[repr(C)]
199pub struct LightDMUserListClass {
200 pub parent_class: gobject::GObjectClass,
201 pub user_added: Option<unsafe extern "C" fn(*mut LightDMUserList, *mut LightDMUser)>,
202 pub user_changed: Option<unsafe extern "C" fn(*mut LightDMUserList, *mut LightDMUser)>,
203 pub user_removed: Option<unsafe extern "C" fn(*mut LightDMUserList, *mut LightDMUser)>,
204 pub reserved1: Option<unsafe extern "C" fn()>,
205 pub reserved2: Option<unsafe extern "C" fn()>,
206 pub reserved3: Option<unsafe extern "C" fn()>,
207 pub reserved4: Option<unsafe extern "C" fn()>,
208 pub reserved5: Option<unsafe extern "C" fn()>,
209 pub reserved6: Option<unsafe extern "C" fn()>,
210}
211
212impl ::std::fmt::Debug for LightDMUserListClass {
213 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
214 f.debug_struct(&format!("LightDMUserListClass @ {self:p}"))
215 .field("user_added", &self.user_added)
216 .field("user_changed", &self.user_changed)
217 .field("user_removed", &self.user_removed)
218 .field("reserved1", &self.reserved1)
219 .field("reserved2", &self.reserved2)
220 .field("reserved3", &self.reserved3)
221 .field("reserved4", &self.reserved4)
222 .field("reserved5", &self.reserved5)
223 .field("reserved6", &self.reserved6)
224 .finish()
225 }
226}
227
228#[derive(Copy, Clone)]
230#[repr(C)]
231pub struct LightDMGreeter {
232 pub parent_instance: gobject::GObject,
233}
234
235impl ::std::fmt::Debug for LightDMGreeter {
236 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
237 f.debug_struct(&format!("LightDMGreeter @ {self:p}"))
238 .field("parent_instance", &self.parent_instance)
239 .finish()
240 }
241}
242
243#[derive(Copy, Clone)]
244#[repr(C)]
245pub struct LightDMLanguage {
246 pub parent_instance: gobject::GObject,
247}
248
249impl ::std::fmt::Debug for LightDMLanguage {
250 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
251 f.debug_struct(&format!("LightDMLanguage @ {self:p}"))
252 .field("parent_instance", &self.parent_instance)
253 .finish()
254 }
255}
256
257#[derive(Copy, Clone)]
258#[repr(C)]
259pub struct LightDMLayout {
260 pub parent_instance: gobject::GObject,
261}
262
263impl ::std::fmt::Debug for LightDMLayout {
264 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
265 f.debug_struct(&format!("LightDMLayout @ {self:p}"))
266 .field("parent_instance", &self.parent_instance)
267 .finish()
268 }
269}
270
271#[derive(Copy, Clone)]
272#[repr(C)]
273pub struct LightDMSession {
274 pub parent_instance: gobject::GObject,
275}
276
277impl ::std::fmt::Debug for LightDMSession {
278 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
279 f.debug_struct(&format!("LightDMSession @ {self:p}"))
280 .field("parent_instance", &self.parent_instance)
281 .finish()
282 }
283}
284
285#[derive(Copy, Clone)]
286#[repr(C)]
287pub struct LightDMUser {
288 pub parent_instance: gobject::GObject,
289}
290
291impl ::std::fmt::Debug for LightDMUser {
292 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
293 f.debug_struct(&format!("LightDMUser @ {self:p}"))
294 .field("parent_instance", &self.parent_instance)
295 .finish()
296 }
297}
298
299#[derive(Copy, Clone)]
300#[repr(C)]
301pub struct LightDMUserList {
302 pub parent_instance: gobject::GObject,
303}
304
305impl ::std::fmt::Debug for LightDMUserList {
306 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
307 f.debug_struct(&format!("LightDMUserList @ {self:p}"))
308 .field("parent_instance", &self.parent_instance)
309 .finish()
310 }
311}
312
313unsafe extern "C" {
314
315 pub fn lightdm_greeter_error_get_type() -> GType;
319 pub fn lightdm_greeter_error_quark() -> glib::GQuark;
320
321 pub fn lightdm_message_type_get_type() -> GType;
325
326 pub fn lightdm_prompt_type_get_type() -> GType;
330
331 pub fn lightdm_greeter_get_type() -> GType;
335 pub fn lightdm_greeter_new() -> *mut LightDMGreeter;
336 pub fn lightdm_greeter_authenticate(
337 greeter: *mut LightDMGreeter,
338 username: *const c_char,
339 error: *mut *mut glib::GError,
340 ) -> gboolean;
341 pub fn lightdm_greeter_authenticate_as_guest(
342 greeter: *mut LightDMGreeter,
343 error: *mut *mut glib::GError,
344 ) -> gboolean;
345 pub fn lightdm_greeter_authenticate_autologin(
346 greeter: *mut LightDMGreeter,
347 error: *mut *mut glib::GError,
348 ) -> gboolean;
349 pub fn lightdm_greeter_authenticate_remote(
350 greeter: *mut LightDMGreeter,
351 session: *const c_char,
352 username: *const c_char,
353 error: *mut *mut glib::GError,
354 ) -> gboolean;
355 pub fn lightdm_greeter_cancel_authentication(
356 greeter: *mut LightDMGreeter,
357 error: *mut *mut glib::GError,
358 ) -> gboolean;
359 pub fn lightdm_greeter_cancel_autologin(greeter: *mut LightDMGreeter);
360 pub fn lightdm_greeter_connect_sync(
361 greeter: *mut LightDMGreeter,
362 error: *mut *mut glib::GError,
363 ) -> gboolean;
364 pub fn lightdm_greeter_connect_to_daemon(
365 greeter: *mut LightDMGreeter,
366 cancellable: *mut gio::GCancellable,
367 callback: gio::GAsyncReadyCallback,
368 user_data: gpointer,
369 );
370 pub fn lightdm_greeter_connect_to_daemon_finish(
371 greeter: *mut LightDMGreeter,
372 result: *mut gio::GAsyncResult,
373 error: *mut *mut glib::GError,
374 ) -> gboolean;
375 pub fn lightdm_greeter_connect_to_daemon_sync(
376 greeter: *mut LightDMGreeter,
377 error: *mut *mut glib::GError,
378 ) -> gboolean;
379 pub fn lightdm_greeter_ensure_shared_data_dir(
380 greeter: *mut LightDMGreeter,
381 username: *const c_char,
382 cancellable: *mut gio::GCancellable,
383 callback: gio::GAsyncReadyCallback,
384 user_data: gpointer,
385 );
386 pub fn lightdm_greeter_ensure_shared_data_dir_finish(
387 greeter: *mut LightDMGreeter,
388 result: *mut gio::GAsyncResult,
389 error: *mut *mut glib::GError,
390 ) -> *mut c_char;
391 pub fn lightdm_greeter_ensure_shared_data_dir_sync(
392 greeter: *mut LightDMGreeter,
393 username: *const c_char,
394 error: *mut *mut glib::GError,
395 ) -> *mut c_char;
396 pub fn lightdm_greeter_get_authentication_user(greeter: *mut LightDMGreeter) -> *const c_char;
397 pub fn lightdm_greeter_get_autologin_guest_hint(greeter: *mut LightDMGreeter) -> gboolean;
398 pub fn lightdm_greeter_get_autologin_session_hint(
399 greeter: *mut LightDMGreeter,
400 ) -> *const c_char;
401 pub fn lightdm_greeter_get_autologin_timeout_hint(greeter: *mut LightDMGreeter) -> c_int;
402 pub fn lightdm_greeter_get_autologin_user_hint(greeter: *mut LightDMGreeter) -> *const c_char;
403 pub fn lightdm_greeter_get_default_session_hint(greeter: *mut LightDMGreeter) -> *const c_char;
404 pub fn lightdm_greeter_get_has_guest_account_hint(greeter: *mut LightDMGreeter) -> gboolean;
405 pub fn lightdm_greeter_get_hide_users_hint(greeter: *mut LightDMGreeter) -> gboolean;
406 pub fn lightdm_greeter_get_hint(
407 greeter: *mut LightDMGreeter,
408 name: *const c_char,
409 ) -> *const c_char;
410 pub fn lightdm_greeter_get_in_authentication(greeter: *mut LightDMGreeter) -> gboolean;
411 pub fn lightdm_greeter_get_is_authenticated(greeter: *mut LightDMGreeter) -> gboolean;
412 pub fn lightdm_greeter_get_lock_hint(greeter: *mut LightDMGreeter) -> gboolean;
413 pub fn lightdm_greeter_get_select_guest_hint(greeter: *mut LightDMGreeter) -> gboolean;
414 pub fn lightdm_greeter_get_select_user_hint(greeter: *mut LightDMGreeter) -> *const c_char;
415 pub fn lightdm_greeter_get_show_manual_login_hint(greeter: *mut LightDMGreeter) -> gboolean;
416 pub fn lightdm_greeter_get_show_remote_login_hint(greeter: *mut LightDMGreeter) -> gboolean;
417 pub fn lightdm_greeter_respond(
418 greeter: *mut LightDMGreeter,
419 response: *const c_char,
420 error: *mut *mut glib::GError,
421 ) -> gboolean;
422 pub fn lightdm_greeter_set_language(
423 greeter: *mut LightDMGreeter,
424 language: *const c_char,
425 error: *mut *mut glib::GError,
426 ) -> gboolean;
427 pub fn lightdm_greeter_set_resettable(greeter: *mut LightDMGreeter, resettable: gboolean);
428 pub fn lightdm_greeter_start_session(
429 greeter: *mut LightDMGreeter,
430 session: *const c_char,
431 cancellable: *mut gio::GCancellable,
432 callback: gio::GAsyncReadyCallback,
433 user_data: gpointer,
434 );
435 pub fn lightdm_greeter_start_session_finish(
436 greeter: *mut LightDMGreeter,
437 result: *mut gio::GAsyncResult,
438 error: *mut *mut glib::GError,
439 ) -> gboolean;
440 pub fn lightdm_greeter_start_session_sync(
441 greeter: *mut LightDMGreeter,
442 session: *const c_char,
443 error: *mut *mut glib::GError,
444 ) -> gboolean;
445
446 pub fn lightdm_language_get_type() -> GType;
450 pub fn lightdm_language_get_code(language: *mut LightDMLanguage) -> *const c_char;
451 pub fn lightdm_language_get_name(language: *mut LightDMLanguage) -> *const c_char;
452 pub fn lightdm_language_get_territory(language: *mut LightDMLanguage) -> *const c_char;
453 pub fn lightdm_language_matches(
454 language: *mut LightDMLanguage,
455 code: *const c_char,
456 ) -> gboolean;
457
458 pub fn lightdm_layout_get_type() -> GType;
462 pub fn lightdm_layout_get_description(layout: *mut LightDMLayout) -> *const c_char;
463 pub fn lightdm_layout_get_name(layout: *mut LightDMLayout) -> *const c_char;
464 pub fn lightdm_layout_get_short_description(layout: *mut LightDMLayout) -> *const c_char;
465
466 pub fn lightdm_session_get_type() -> GType;
470 pub fn lightdm_session_get_comment(session: *mut LightDMSession) -> *const c_char;
471 pub fn lightdm_session_get_key(session: *mut LightDMSession) -> *const c_char;
472 pub fn lightdm_session_get_name(session: *mut LightDMSession) -> *const c_char;
473 pub fn lightdm_session_get_session_type(session: *mut LightDMSession) -> *const c_char;
474
475 pub fn lightdm_user_get_type() -> GType;
479 pub fn lightdm_user_get_background(user: *mut LightDMUser) -> *const c_char;
480 pub fn lightdm_user_get_display_name(user: *mut LightDMUser) -> *const c_char;
481 pub fn lightdm_user_get_has_messages(user: *mut LightDMUser) -> gboolean;
482 pub fn lightdm_user_get_home_directory(user: *mut LightDMUser) -> *const c_char;
483 pub fn lightdm_user_get_image(user: *mut LightDMUser) -> *const c_char;
484 pub fn lightdm_user_get_is_locked(user: *mut LightDMUser) -> gboolean;
485 pub fn lightdm_user_get_language(user: *mut LightDMUser) -> *const c_char;
486 pub fn lightdm_user_get_layout(user: *mut LightDMUser) -> *const c_char;
487 pub fn lightdm_user_get_layouts(user: *mut LightDMUser) -> *const *const c_char;
488 pub fn lightdm_user_get_logged_in(user: *mut LightDMUser) -> gboolean;
489 pub fn lightdm_user_get_name(user: *mut LightDMUser) -> *const c_char;
490 pub fn lightdm_user_get_real_name(user: *mut LightDMUser) -> *const c_char;
491 pub fn lightdm_user_get_session(user: *mut LightDMUser) -> *const c_char;
492 pub fn lightdm_user_get_uid(user: *mut LightDMUser) -> uid_t;
493
494 pub fn lightdm_user_list_get_type() -> GType;
498 pub fn lightdm_user_list_get_instance() -> *mut LightDMUserList;
499 pub fn lightdm_user_list_get_length(user_list: *mut LightDMUserList) -> c_int;
500 pub fn lightdm_user_list_get_user_by_name(
501 user_list: *mut LightDMUserList,
502 username: *const c_char,
503 ) -> *mut LightDMUser;
504 pub fn lightdm_user_list_get_users(user_list: *mut LightDMUserList) -> *mut glib::GList;
505
506 pub fn lightdm_get_can_hibernate() -> gboolean;
510 pub fn lightdm_get_can_restart() -> gboolean;
511 pub fn lightdm_get_can_shutdown() -> gboolean;
512 pub fn lightdm_get_can_suspend() -> gboolean;
513 pub fn lightdm_get_hostname() -> *const c_char;
514 pub fn lightdm_get_language() -> *mut LightDMLanguage;
515 pub fn lightdm_get_languages() -> *mut glib::GList;
516 pub fn lightdm_get_layout() -> *mut LightDMLayout;
517 pub fn lightdm_get_layouts() -> *mut glib::GList;
518 pub fn lightdm_get_motd() -> *mut c_char;
519 pub fn lightdm_get_os_id() -> *const c_char;
520 pub fn lightdm_get_os_name() -> *const c_char;
521 pub fn lightdm_get_os_pretty_name() -> *const c_char;
522 pub fn lightdm_get_os_version() -> *const c_char;
523 pub fn lightdm_get_os_version_id() -> *const c_char;
524 pub fn lightdm_get_remote_sessions() -> *mut glib::GList;
525 pub fn lightdm_get_sessions() -> *mut glib::GList;
526 pub fn lightdm_hibernate(error: *mut *mut glib::GError) -> gboolean;
527 pub fn lightdm_restart(error: *mut *mut glib::GError) -> gboolean;
528 pub fn lightdm_set_layout(layout: *mut LightDMLayout);
529 pub fn lightdm_shutdown(error: *mut *mut glib::GError) -> gboolean;
530 pub fn lightdm_suspend(error: *mut *mut glib::GError) -> gboolean;
531
532}