]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/login/logind-seat.h
logind: always kill session when termination is requested
[thirdparty/systemd.git] / src / login / logind-seat.h
CommitLineData
90821c93
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
c2f1db8f 3#pragma once
90821c93
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2011 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
90821c93
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
90821c93 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
90821c93
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24typedef struct Seat Seat;
25
26#include "list.h"
27#include "util.h"
28#include "logind.h"
29#include "logind-device.h"
30#include "logind-session.h"
31
32struct Seat {
33 Manager *manager;
34 char *id;
35
36 char *state_file;
37
38 LIST_HEAD(Device, devices);
39
40 Session *active;
d7bd01b5 41 Session *pending_switch;
90821c93 42 LIST_HEAD(Session, sessions);
14c3baca 43
49e6fdbf
DH
44 Session **positions;
45 size_t position_count;
46
14c3baca 47 bool in_gc_queue:1;
3f49d45a 48 bool started:1;
14c3baca
LP
49
50 LIST_FIELDS(Seat, gc_queue);
90821c93
LP
51};
52
53Seat *seat_new(Manager *m, const char *id);
54void seat_free(Seat *s);
14c3baca 55
90821c93
LP
56int seat_save(Seat *s);
57int seat_load(Seat *s);
58
14c3baca 59int seat_apply_acls(Seat *s, Session *old_active);
9418f147 60int seat_set_active(Seat *s, Session *session);
49e6fdbf
DH
61int seat_switch_to(Seat *s, unsigned int num);
62int seat_switch_to_next(Seat *s);
63int seat_switch_to_previous(Seat *s);
92bd5ff3 64int seat_active_vt_changed(Seat *s, unsigned int vtnr);
14c3baca 65int seat_read_active_vt(Seat *s);
30ed21ce 66int seat_preallocate_vts(Seat *s);
14c3baca 67
a185c5aa 68int seat_attach_session(Seat *s, Session *session);
d7bd01b5 69void seat_complete_switch(Seat *s);
49e6fdbf
DH
70void seat_evict_position(Seat *s, Session *session);
71void seat_claim_position(Seat *s, Session *session, unsigned int pos);
a185c5aa 72
bf7825ae 73bool seat_has_vts(Seat *s);
92432fcc 74bool seat_is_seat0(Seat *s);
addedec4 75bool seat_can_multi_session(Seat *s);
f1a8e221 76bool seat_can_tty(Seat *s);
718d006a 77bool seat_has_master_device(Seat *s);
f1a8e221
LP
78bool seat_can_graphical(Seat *s);
79
a185c5aa
LP
80int seat_get_idle_hint(Seat *s, dual_timestamp *t);
81
14c3baca 82int seat_start(Seat *s);
9bb69af4
ZJS
83int seat_stop(Seat *s, bool force);
84int seat_stop_sessions(Seat *s, bool force);
14c3baca 85
cc377381 86bool seat_check_gc(Seat *s, bool drop_not_started);
14c3baca
LP
87void seat_add_to_gc_queue(Seat *s);
88
3f49d45a 89bool seat_name_is_valid(const char *name);
3f49d45a 90
cc377381
LP
91extern const sd_bus_vtable seat_vtable[];
92
f00c3121
LP
93int seat_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
94int seat_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);
cc377381 95char *seat_bus_path(Seat *s);
3f49d45a 96
da119395 97int seat_send_signal(Seat *s, bool new_seat);
cc377381 98int seat_send_changed(Seat *s, const char *properties, ...) _sentinel_;