]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/org.freedesktop.login1.xml
Merge pull request #29130 from poettering/unit-defaults
[thirdparty/systemd.git] / man / org.freedesktop.login1.xml
CommitLineData
44fd44f1
ZJS
1<?xml version='1.0'?>
2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" >
db9ecf05 4<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
44fd44f1
ZJS
5
6<refentry id="org.freedesktop.login1" conditional='ENABLE_LOGIND'
7 xmlns:xi="http://www.w3.org/2001/XInclude">
8 <refentryinfo>
9 <title>org.freedesktop.login1</title>
10 <productname>systemd</productname>
11 </refentryinfo>
12
13 <refmeta>
14 <refentrytitle>org.freedesktop.login1</refentrytitle>
15 <manvolnum>5</manvolnum>
16 </refmeta>
17
18 <refnamediv>
19 <refname>org.freedesktop.login1</refname>
20 <refpurpose>The D-Bus interface of systemd-logind</refpurpose>
21 </refnamediv>
22
23 <refsect1>
24 <title>Introduction</title>
25
26 <para><citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
ca264f7d 27 is a system service that keeps track of user logins and seats.</para>
44fd44f1
ZJS
28
29 <para>The daemon provides both a C library interface as well as a D-Bus interface. The library interface
30 may be used to introspect and watch the state of user logins and seats. The bus interface provides the
ca264f7d 31 same functionality but in addition may also be used to make changes to the system state. For more information please
44fd44f1
ZJS
32 consult <citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
33 </para>
34 </refsect1>
35
36 <refsect1>
37 <title>The Manager Object</title>
38
39 <para>The service exposes the following interfaces on the Manager object on the bus:</para>
40
48f99d7c 41 <programlisting executable="systemd-logind" node="/org/freedesktop/login1" interface="org.freedesktop.login1.Manager">
44fd44f1
ZJS
42node /org/freedesktop/login1 {
43 interface org.freedesktop.login1.Manager {
44 methods:
45 GetSession(in s session_id,
46 out o object_path);
47 GetSessionByPID(in u pid,
48 out o object_path);
49 GetUser(in u uid,
50 out o object_path);
51 GetUserByPID(in u pid,
52 out o object_path);
53 GetSeat(in s seat_id,
54 out o object_path);
4fb222c4
ZJS
55 ListSessions(out a(susso) sessions);
56 ListUsers(out a(uso) users);
57 ListSeats(out a(so) seats);
58 ListInhibitors(out a(ssssuu) inhibitors);
34b56848 59 @org.freedesktop.systemd1.Privileged("true")
44fd44f1
ZJS
60 CreateSession(in u uid,
61 in u pid,
62 in s service,
63 in s type,
64 in s class,
65 in s desktop,
66 in s seat_id,
67 in u vtnr,
68 in s tty,
69 in s display,
70 in b remote,
71 in s remote_user,
72 in s remote_host,
73 in a(sv) properties,
74 out s session_id,
75 out o object_path,
76 out s runtime_path,
77 out h fifo_fd,
78 out u uid,
79 out s seat_id,
80 out u vtnr,
81 out b existing);
34b56848 82 @org.freedesktop.systemd1.Privileged("true")
44fd44f1
ZJS
83 ReleaseSession(in s session_id);
84 ActivateSession(in s session_id);
85 ActivateSessionOnSeat(in s session_id,
86 in s seat_id);
87 LockSession(in s session_id);
88 UnlockSession(in s session_id);
89 LockSessions();
90 UnlockSessions();
91 KillSession(in s session_id,
92 in s who,
4fb222c4 93 in i signal_number);
44fd44f1 94 KillUser(in u uid,
4fb222c4 95 in i signal_number);
44fd44f1
ZJS
96 TerminateSession(in s session_id);
97 TerminateUser(in u uid);
98 TerminateSeat(in s seat_id);
99 SetUserLinger(in u uid,
4fb222c4 100 in b enable,
44fd44f1
ZJS
101 in b interactive);
102 AttachDevice(in s seat_id,
4fb222c4 103 in s sysfs_path,
44fd44f1
ZJS
104 in b interactive);
105 FlushDevices(in b interactive);
106 PowerOff(in b interactive);
8885fed4 107 PowerOffWithFlags(in t flags);
44fd44f1 108 Reboot(in b interactive);
8885fed4 109 RebootWithFlags(in t flags);
4fb222c4 110 Halt(in b interactive);
8885fed4 111 HaltWithFlags(in t flags);
44fd44f1 112 Suspend(in b interactive);
8885fed4 113 SuspendWithFlags(in t flags);
44fd44f1 114 Hibernate(in b interactive);
8885fed4 115 HibernateWithFlags(in t flags);
44fd44f1 116 HybridSleep(in b interactive);
8885fed4 117 HybridSleepWithFlags(in t flags);
4fb222c4 118 SuspendThenHibernate(in b interactive);
8885fed4 119 SuspendThenHibernateWithFlags(in t flags);
44fd44f1
ZJS
120 CanPowerOff(out s result);
121 CanReboot(out s result);
4fb222c4 122 CanHalt(out s result);
44fd44f1
ZJS
123 CanSuspend(out s result);
124 CanHibernate(out s result);
125 CanHybridSleep(out s result);
4fb222c4 126 CanSuspendThenHibernate(out s result);
44fd44f1
ZJS
127 ScheduleShutdown(in s type,
128 in t usec);
129 CancelScheduledShutdown(out b cancelled);
130 Inhibit(in s what,
131 in s who,
132 in s why,
133 in s mode,
134 out h pipe_fd);
4fb222c4
ZJS
135 CanRebootParameter(out s result);
136 SetRebootParameter(in s parameter);
44fd44f1
ZJS
137 CanRebootToFirmwareSetup(out s result);
138 SetRebootToFirmwareSetup(in b enable);
4fb222c4
ZJS
139 CanRebootToBootLoaderMenu(out s result);
140 SetRebootToBootLoaderMenu(in t timeout);
141 CanRebootToBootLoaderEntry(out s result);
142 SetRebootToBootLoaderEntry(in s boot_loader_entry);
44fd44f1
ZJS
143 SetWallMessage(in s wall_message,
144 in b enable);
145 signals:
146 SessionNew(s session_id,
147 o object_path);
148 SessionRemoved(s session_id,
149 o object_path);
150 UserNew(u uid,
151 o object_path);
152 UserRemoved(u uid,
153 o object_path);
154 SeatNew(s seat_id,
155 o object_path);
156 SeatRemoved(s seat_id,
157 o object_path);
158 PrepareForShutdown(b start);
159 PrepareForSleep(b start);
160 properties:
4fb222c4
ZJS
161 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
162 @org.freedesktop.systemd1.Privileged("true")
163 readwrite b EnableWallMessages = ...;
164 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
165 @org.freedesktop.systemd1.Privileged("true")
166 readwrite s WallMessage = '...';
167 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
168 readonly u NAutoVTs = ...;
169 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
170 readonly as KillOnlyUsers = ['...', ...];
171 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
172 readonly as KillExcludeUsers = ['...', ...];
173 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
174 readonly b KillUserProcesses = ...;
175 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
176 readonly s RebootParameter = '...';
177 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
178 readonly b RebootToFirmwareSetup = ...;
179 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
180 readonly t RebootToBootLoaderMenu = ...;
181 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
182 readonly s RebootToBootLoaderEntry = '...';
183 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
184 readonly as BootLoaderEntries = ['...', ...];
185 readonly b IdleHint = ...;
186 readonly t IdleSinceHint = ...;
187 readonly t IdleSinceHintMonotonic = ...;
188 readonly s BlockInhibited = '...';
189 readonly s DelayInhibited = '...';
190 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
191 readonly t InhibitDelayMaxUSec = ...;
192 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
193 readonly t UserStopDelayUSec = ...;
194 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
195 readonly s HandlePowerKey = '...';
196 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
c4db78fc
LP
197 readonly s HandlePowerKeyLongPress = '...';
198 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
199 readonly s HandleRebootKey = '...';
200 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
201 readonly s HandleRebootKeyLongPress = '...';
202 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
4fb222c4
ZJS
203 readonly s HandleSuspendKey = '...';
204 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
c4db78fc
LP
205 readonly s HandleSuspendKeyLongPress = '...';
206 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
4fb222c4
ZJS
207 readonly s HandleHibernateKey = '...';
208 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
c4db78fc
LP
209 readonly s HandleHibernateKeyLongPress = '...';
210 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
4fb222c4
ZJS
211 readonly s HandleLidSwitch = '...';
212 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
213 readonly s HandleLidSwitchExternalPower = '...';
214 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
215 readonly s HandleLidSwitchDocked = '...';
216 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
217 readonly t HoldoffTimeoutUSec = ...;
218 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
219 readonly s IdleAction = '...';
220 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
221 readonly t IdleActionUSec = ...;
222 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
223 readonly b PreparingForShutdown = ...;
224 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
225 readonly b PreparingForSleep = ...;
226 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
227 readonly (st) ScheduledShutdown = ...;
228 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
229 readonly b Docked = ...;
230 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
231 readonly b LidClosed = ...;
232 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
233 readonly b OnExternalPower = ...;
234 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
235 readonly b RemoveIPC = ...;
236 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
237 readonly t RuntimeDirectorySize = ...;
238 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
cc1c85fb
TM
239 readonly t RuntimeDirectoryInodesMax = ...;
240 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
4fb222c4
ZJS
241 readonly t InhibitorsMax = ...;
242 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
243 readonly t NCurrentInhibitors = ...;
244 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
245 readonly t SessionsMax = ...;
246 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
247 readonly t NCurrentSessions = ...;
82325af3
MS
248 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
249 readonly t StopIdleSessionUSec = ...;
44fd44f1 250 };
4fb222c4
ZJS
251 interface org.freedesktop.DBus.Peer { ... };
252 interface org.freedesktop.DBus.Introspectable { ... };
253 interface org.freedesktop.DBus.Properties { ... };
44fd44f1
ZJS
254};
255 </programlisting>
256
c4db78fc
LP
257 <!--property HandlePowerKeyLongPress is not documented!-->
258
259 <!--property HandleRebootKey is not documented!-->
260
261 <!--property HandleRebootKeyLongPress is not documented!-->
262
263 <!--property HandleSuspendKeyLongPress is not documented!-->
264
265 <!--property HandleHibernateKeyLongPress is not documented!-->
266
82325af3
MS
267 <!--property StopIdleSessionUSec is not documented!-->
268
00bb75d7
ZJS
269 <!--Autogenerated cross-references for systemd.directives, do not edit-->
270
271 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Manager"/>
272
273 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Manager"/>
274
275 <variablelist class="dbus-method" generated="True" extra-ref="GetSession()"/>
276
277 <variablelist class="dbus-method" generated="True" extra-ref="GetSessionByPID()"/>
278
279 <variablelist class="dbus-method" generated="True" extra-ref="GetUser()"/>
280
281 <variablelist class="dbus-method" generated="True" extra-ref="GetUserByPID()"/>
282
283 <variablelist class="dbus-method" generated="True" extra-ref="GetSeat()"/>
284
285 <variablelist class="dbus-method" generated="True" extra-ref="ListSessions()"/>
286
287 <variablelist class="dbus-method" generated="True" extra-ref="ListUsers()"/>
288
289 <variablelist class="dbus-method" generated="True" extra-ref="ListSeats()"/>
290
291 <variablelist class="dbus-method" generated="True" extra-ref="ListInhibitors()"/>
292
293 <variablelist class="dbus-method" generated="True" extra-ref="CreateSession()"/>
294
295 <variablelist class="dbus-method" generated="True" extra-ref="ReleaseSession()"/>
296
297 <variablelist class="dbus-method" generated="True" extra-ref="ActivateSession()"/>
298
299 <variablelist class="dbus-method" generated="True" extra-ref="ActivateSessionOnSeat()"/>
300
301 <variablelist class="dbus-method" generated="True" extra-ref="LockSession()"/>
302
303 <variablelist class="dbus-method" generated="True" extra-ref="UnlockSession()"/>
304
305 <variablelist class="dbus-method" generated="True" extra-ref="LockSessions()"/>
306
307 <variablelist class="dbus-method" generated="True" extra-ref="UnlockSessions()"/>
308
309 <variablelist class="dbus-method" generated="True" extra-ref="KillSession()"/>
310
311 <variablelist class="dbus-method" generated="True" extra-ref="KillUser()"/>
312
313 <variablelist class="dbus-method" generated="True" extra-ref="TerminateSession()"/>
314
315 <variablelist class="dbus-method" generated="True" extra-ref="TerminateUser()"/>
316
317 <variablelist class="dbus-method" generated="True" extra-ref="TerminateSeat()"/>
318
319 <variablelist class="dbus-method" generated="True" extra-ref="SetUserLinger()"/>
320
321 <variablelist class="dbus-method" generated="True" extra-ref="AttachDevice()"/>
322
323 <variablelist class="dbus-method" generated="True" extra-ref="FlushDevices()"/>
324
325 <variablelist class="dbus-method" generated="True" extra-ref="PowerOff()"/>
326
8885fed4
DR
327 <variablelist class="dbus-method" generated="True" extra-ref="PowerOffWithFlags()"/>
328
00bb75d7
ZJS
329 <variablelist class="dbus-method" generated="True" extra-ref="Reboot()"/>
330
8885fed4
DR
331 <variablelist class="dbus-method" generated="True" extra-ref="RebootWithFlags()"/>
332
00bb75d7
ZJS
333 <variablelist class="dbus-method" generated="True" extra-ref="Halt()"/>
334
8885fed4
DR
335 <variablelist class="dbus-method" generated="True" extra-ref="HaltWithFlags()"/>
336
00bb75d7
ZJS
337 <variablelist class="dbus-method" generated="True" extra-ref="Suspend()"/>
338
8885fed4
DR
339 <variablelist class="dbus-method" generated="True" extra-ref="SuspendWithFlags()"/>
340
00bb75d7
ZJS
341 <variablelist class="dbus-method" generated="True" extra-ref="Hibernate()"/>
342
8885fed4
DR
343 <variablelist class="dbus-method" generated="True" extra-ref="HibernateWithFlags()"/>
344
00bb75d7
ZJS
345 <variablelist class="dbus-method" generated="True" extra-ref="HybridSleep()"/>
346
8885fed4
DR
347 <variablelist class="dbus-method" generated="True" extra-ref="HybridSleepWithFlags()"/>
348
00bb75d7
ZJS
349 <variablelist class="dbus-method" generated="True" extra-ref="SuspendThenHibernate()"/>
350
8885fed4
DR
351 <variablelist class="dbus-method" generated="True" extra-ref="SuspendThenHibernateWithFlags()"/>
352
00bb75d7
ZJS
353 <variablelist class="dbus-method" generated="True" extra-ref="CanPowerOff()"/>
354
355 <variablelist class="dbus-method" generated="True" extra-ref="CanReboot()"/>
356
357 <variablelist class="dbus-method" generated="True" extra-ref="CanHalt()"/>
358
359 <variablelist class="dbus-method" generated="True" extra-ref="CanSuspend()"/>
360
361 <variablelist class="dbus-method" generated="True" extra-ref="CanHibernate()"/>
362
363 <variablelist class="dbus-method" generated="True" extra-ref="CanHybridSleep()"/>
364
365 <variablelist class="dbus-method" generated="True" extra-ref="CanSuspendThenHibernate()"/>
366
367 <variablelist class="dbus-method" generated="True" extra-ref="ScheduleShutdown()"/>
368
369 <variablelist class="dbus-method" generated="True" extra-ref="CancelScheduledShutdown()"/>
370
371 <variablelist class="dbus-method" generated="True" extra-ref="Inhibit()"/>
372
373 <variablelist class="dbus-method" generated="True" extra-ref="CanRebootParameter()"/>
374
375 <variablelist class="dbus-method" generated="True" extra-ref="SetRebootParameter()"/>
376
377 <variablelist class="dbus-method" generated="True" extra-ref="CanRebootToFirmwareSetup()"/>
378
379 <variablelist class="dbus-method" generated="True" extra-ref="SetRebootToFirmwareSetup()"/>
380
381 <variablelist class="dbus-method" generated="True" extra-ref="CanRebootToBootLoaderMenu()"/>
382
383 <variablelist class="dbus-method" generated="True" extra-ref="SetRebootToBootLoaderMenu()"/>
384
385 <variablelist class="dbus-method" generated="True" extra-ref="CanRebootToBootLoaderEntry()"/>
386
387 <variablelist class="dbus-method" generated="True" extra-ref="SetRebootToBootLoaderEntry()"/>
388
389 <variablelist class="dbus-method" generated="True" extra-ref="SetWallMessage()"/>
390
391 <variablelist class="dbus-signal" generated="True" extra-ref="SessionNew"/>
392
393 <variablelist class="dbus-signal" generated="True" extra-ref="SessionRemoved"/>
394
395 <variablelist class="dbus-signal" generated="True" extra-ref="UserNew"/>
396
397 <variablelist class="dbus-signal" generated="True" extra-ref="UserRemoved"/>
398
399 <variablelist class="dbus-signal" generated="True" extra-ref="SeatNew"/>
400
401 <variablelist class="dbus-signal" generated="True" extra-ref="SeatRemoved"/>
402
403 <variablelist class="dbus-signal" generated="True" extra-ref="PrepareForShutdown"/>
404
405 <variablelist class="dbus-signal" generated="True" extra-ref="PrepareForSleep"/>
406
407 <variablelist class="dbus-property" generated="True" extra-ref="EnableWallMessages"/>
408
409 <variablelist class="dbus-property" generated="True" extra-ref="WallMessage"/>
410
411 <variablelist class="dbus-property" generated="True" extra-ref="NAutoVTs"/>
412
413 <variablelist class="dbus-property" generated="True" extra-ref="KillOnlyUsers"/>
414
415 <variablelist class="dbus-property" generated="True" extra-ref="KillExcludeUsers"/>
416
417 <variablelist class="dbus-property" generated="True" extra-ref="KillUserProcesses"/>
418
419 <variablelist class="dbus-property" generated="True" extra-ref="RebootParameter"/>
420
421 <variablelist class="dbus-property" generated="True" extra-ref="RebootToFirmwareSetup"/>
422
423 <variablelist class="dbus-property" generated="True" extra-ref="RebootToBootLoaderMenu"/>
424
425 <variablelist class="dbus-property" generated="True" extra-ref="RebootToBootLoaderEntry"/>
426
427 <variablelist class="dbus-property" generated="True" extra-ref="BootLoaderEntries"/>
428
429 <variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
430
431 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
432
433 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
434
435 <variablelist class="dbus-property" generated="True" extra-ref="BlockInhibited"/>
436
437 <variablelist class="dbus-property" generated="True" extra-ref="DelayInhibited"/>
438
439 <variablelist class="dbus-property" generated="True" extra-ref="InhibitDelayMaxUSec"/>
440
441 <variablelist class="dbus-property" generated="True" extra-ref="UserStopDelayUSec"/>
442
443 <variablelist class="dbus-property" generated="True" extra-ref="HandlePowerKey"/>
444
c4db78fc
LP
445 <variablelist class="dbus-property" generated="True" extra-ref="HandlePowerKeyLongPress"/>
446
447 <variablelist class="dbus-property" generated="True" extra-ref="HandleRebootKey"/>
448
449 <variablelist class="dbus-property" generated="True" extra-ref="HandleRebootKeyLongPress"/>
450
00bb75d7
ZJS
451 <variablelist class="dbus-property" generated="True" extra-ref="HandleSuspendKey"/>
452
c4db78fc
LP
453 <variablelist class="dbus-property" generated="True" extra-ref="HandleSuspendKeyLongPress"/>
454
00bb75d7
ZJS
455 <variablelist class="dbus-property" generated="True" extra-ref="HandleHibernateKey"/>
456
c4db78fc
LP
457 <variablelist class="dbus-property" generated="True" extra-ref="HandleHibernateKeyLongPress"/>
458
00bb75d7
ZJS
459 <variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitch"/>
460
461 <variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitchExternalPower"/>
462
463 <variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitchDocked"/>
464
465 <variablelist class="dbus-property" generated="True" extra-ref="HoldoffTimeoutUSec"/>
466
467 <variablelist class="dbus-property" generated="True" extra-ref="IdleAction"/>
468
469 <variablelist class="dbus-property" generated="True" extra-ref="IdleActionUSec"/>
470
471 <variablelist class="dbus-property" generated="True" extra-ref="PreparingForShutdown"/>
472
473 <variablelist class="dbus-property" generated="True" extra-ref="PreparingForSleep"/>
474
475 <variablelist class="dbus-property" generated="True" extra-ref="ScheduledShutdown"/>
476
477 <variablelist class="dbus-property" generated="True" extra-ref="Docked"/>
478
479 <variablelist class="dbus-property" generated="True" extra-ref="LidClosed"/>
480
481 <variablelist class="dbus-property" generated="True" extra-ref="OnExternalPower"/>
482
483 <variablelist class="dbus-property" generated="True" extra-ref="RemoveIPC"/>
484
485 <variablelist class="dbus-property" generated="True" extra-ref="RuntimeDirectorySize"/>
486
cc1c85fb
TM
487 <variablelist class="dbus-property" generated="True" extra-ref="RuntimeDirectoryInodesMax"/>
488
00bb75d7
ZJS
489 <variablelist class="dbus-property" generated="True" extra-ref="InhibitorsMax"/>
490
491 <variablelist class="dbus-property" generated="True" extra-ref="NCurrentInhibitors"/>
492
493 <variablelist class="dbus-property" generated="True" extra-ref="SessionsMax"/>
494
495 <variablelist class="dbus-property" generated="True" extra-ref="NCurrentSessions"/>
496
82325af3
MS
497 <variablelist class="dbus-property" generated="True" extra-ref="StopIdleSessionUSec"/>
498
00bb75d7
ZJS
499 <!--End of Autogenerated section-->
500
44fd44f1
ZJS
501 <refsect2>
502 <title>Methods</title>
503
504 <para><function>GetSession()</function> may be used to get the session object path for the session with
505 the specified ID. Similarly, <function>GetUser()</function> and <function>GetSeat()</function> get the
506 user and seat objects, respectively. <function>GetSessionByPID()</function> and
507 <function>GetUserByPID()</function> get the session/user object the specified PID belongs to if there
508 is any.</para>
509
ca264f7d 510 <para><function>ListSessions()</function> returns an array of all current sessions. The structures in
44fd44f1 511 the array consist of the following fields: session id, user id, user name, seat id, session object
ca264f7d 512 path. If a session does not have a seat attached, the seat id field will be an empty string.</para>
44fd44f1 513
ca264f7d 514 <para><function>ListUsers()</function> returns an array of all currently logged in users. The
44fd44f1
ZJS
515 structures in the array consist of the following fields: user id, user name, user object path.</para>
516
ca264f7d 517 <para><function>ListSeats()</function> returns an array of all currently available seats. The
44fd44f1
ZJS
518 structure in the array consists of the following fields: seat id, seat object path.</para>
519
ca264f7d 520 <para><function>ListInhibitors()</function> lists all currently active inhibitors. It returns an array of
7592871e 521 structures consisting of <varname>what</varname>, <varname>who</varname>, <varname>why</varname>,
ca264f7d 522 <varname>mode</varname>, <varname>uid</varname> (user ID), and <varname>pid</varname> (process ID).</para>
7592871e 523
44fd44f1
ZJS
524 <para><function>CreateSession()</function> and <function>ReleaseSession()</function> may be used to
525 open or close login sessions. These calls should <emphasis>never</emphasis> be invoked directly by
526 clients. Creating/closing sessions is exclusively the job of PAM and its
527 <citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
528 module.</para>
529
530 <para><function>ActivateSession()</function> brings the session with the specified ID into the
531 foreground. <function>ActivateSessionOnSeat()</function> does the same, but only if the seat id
532 matches.</para>
533
534 <para><function>LockSession()</function> asks the session with the specified ID to activate the screen
535 lock. <function>UnlockSession()</function> asks the session with the specified ID to remove an active
536 screen lock, if there is any. This is implemented by sending out the Lock() and Unlock() signals from
537 the respective session object which session managers are supposed to listen on.</para>
538
ca264f7d
DDM
539 <para><function>LockSessions()</function> asks all sessions to activate their screen locks. This may be
540 used to lock access to the entire machine in one action. Similarly, <function>UnlockSessions()</function>
44fd44f1
ZJS
541 asks all sessions to deactivate their screen locks.</para>
542
543 <para><function>KillSession()</function> may be used to send a Unix signal to one or all processes of a
544 session. As arguments it takes the session id, either the string <literal>leader</literal> or
545 <literal>all</literal> and a signal number. If <literal>leader</literal> is passed only the session
546 <literal>leader</literal> is killed. If <literal>all</literal> is passed all processes of the session
547 are killed.</para>
548
549 <para><function>KillUser()</function> may be used to send a Unix signal to all processes of a user. As
ca264f7d 550 arguments it takes the user id and a signal number.</para>
44fd44f1
ZJS
551
552 <para><function>TerminateSession()</function>, <function>TerminateUser()</function>,
553 <function>TerminateSeat()</function> may be used to forcibly terminate one specific session, all
554 processes of a user, and all sessions attached to a specific seat, respectively. The session, user,
555 and seat are identified by their respective IDs.</para>
556
ca264f7d 557 <para><function>SetUserLinger()</function> enables or disables user lingering. If enabled, the runtime
beb1d286 558 directory of a user is kept around and they may continue to run processes while logged out. If
ca264f7d
DDM
559 disabled, the runtime directory goes away as soon as they log out. <function>SetUserLinger()</function>
560 expects three arguments: the UID, a boolean whether to enable/disable and a boolean controlling the
98ab0dae
ZJS
561 <ulink url="https://www.freedesktop.org/software/polkit/docs/latest/">polkit</ulink>
562 authorization interactivity (see below). Note that the user linger state is persistently
ca264f7d 563 stored on disk.</para>
44fd44f1
ZJS
564
565 <para><function>AttachDevice()</function> may be used to assign a specific device to a specific
3b121157 566 seat. The device is identified by its <filename>/sys/</filename> path and must be eligible for seat
beb1d286
ZJS
567 assignments. <function>AttachDevice()</function> takes three arguments: the seat id, the sysfs path,
568 and a boolean for controlling polkit interactivity (see below). Device assignments are persistently
569 stored on disk. To create a new seat, simply specify a previously unused seat id. For more information
570 about the seat assignment logic see
515736d0 571 <citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
44fd44f1
ZJS
572
573 <para><function>FlushDevices()</function> removes all explicit seat assignments for devices, resetting
98ab0dae 574 all assignments to the automatic defaults. The only argument it takes is the polkit interactivity
ca264f7d 575 boolean (see below).</para>
44fd44f1 576
7592871e 577 <para><function>PowerOff()</function>, <function>Reboot()</function>, <function>Halt()</function>,
ca264f7d 578 <function>Suspend()</function>, and <function>Hibernate()</function> result in the system being powered
4de66581
LP
579 off, rebooted, halted (shut down without turning off power), suspended (the system state is saved to
580 RAM and the CPU is turned off), or hibernated (the system state is saved to disk and the machine is
581 powered down). <function>HybridSleep()</function> results in the system entering a hybrid-sleep mode,
582 i.e. the system is both hibernated and suspended. <function>SuspendThenHibernate()</function> results
583 in the system being suspended, then later woken using an RTC timer and hibernated. The only argument is
584 the polkit interactivity boolean <varname>interactive</varname> (see below). The main purpose of these
585 calls is that they enforce polkit policy and hence allow powering off/rebooting/suspending/hibernating
586 even by unprivileged users. They also enforce inhibition locks for non-privileged users. UIs should
587 expose these calls as the primary mechanism to poweroff/reboot/suspend/hibernate the machine. Methods
8885fed4
DR
588 <function>PowerOffWithFlags()</function>, <function>RebootWithFlags()</function>,
589 <function>HaltWithFlags()</function>, <function>SuspendWithFlags()</function>,
590 <function>HibernateWithFlags()</function>, <function>HybridSleepWithFlags()</function> and
591 <function>SuspendThenHibernateWithFlags()</function> add <varname>flags</varname> to allow for
592 extendability, defined as follows:</para>
593 <programlisting>
594#define SD_LOGIND_ROOT_CHECK_INHIBITORS (UINT64_C(1) &lt;&lt; 0)
0d96caa5 595#define SD_LOGIND_KEXEC_REBOOT (UINT64_C(1) &lt;&lt; 1)
4de66581 596#define SD_LOGIND_SOFT_REBOOT (UINT64_C(1) &lt;&lt; 2)
8885fed4 597 </programlisting>
4de66581
LP
598 <para>When the <varname>flags</varname> is 0 then these methods behave just like the versions without
599 flags. When <constant>SD_LOGIND_ROOT_CHECK_INHIBITORS</constant> (0x01) is set, active inhibitors are
600 honoured for privileged users too. When <constant>SD_LOGIND_KEXEC_REBOOT</constant> (0x02) is set, then
601 <function>RebootWithFlags()</function> performs a kexec reboot if kexec kernel is loaded. When
602 <constant>SD_LOGIND_SOFT_REBOOT</constant> (0x04) is set, then <function>RebootWithFlags()</function>
603 performs a userspace reboot only.</para>
7592871e 604
ca264f7d 605 <para><function>SetRebootParameter()</function> sets a parameter for a subsequent reboot operation.
7592871e
ZJS
606 See the description of <command>reboot</command> in
607 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> and
608 <citerefentry project="man-pages"><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
609 for more information.</para>
610
611 <para><function>SetRebootToFirmwareSetup()</function>,
612 <function>SetRebootToBootLoaderMenu()</function>, and <function>SetRebootToBootLoaderEntry()</function>
613 configure the action to be taken from the boot loader after a reboot: respectively entering firmware
ca264f7d 614 setup mode, the boot loader menu, or a specific boot loader entry. See
7592871e 615 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> for the
ca264f7d 616 corresponding command line interface.</para>
44fd44f1
ZJS
617
618 <para><function>CanPowerOff()</function>, <function>CanReboot()</function>,
7592871e
ZJS
619 <function>CanHalt()</function>, <function>CanSuspend()</function>, <function>CanHibernate()</function>,
620 <function>CanHybridSleep()</function>, <function>CanSuspendThenHibernate()</function>,
621 <function>CanRebootParameter()</function>, <function>CanRebootToFirmwareSetup()</function>,
622 <function>CanRebootToBootLoaderMenu()</function>, and
ca264f7d
DDM
623 <function>CanRebootToBootLoaderEntry()</function> test whether the system supports the respective
624 operation and whether the calling user is allowed to execute it. Returns one of <literal>na</literal>,
7592871e
ZJS
625 <literal>yes</literal>, <literal>no</literal>, and <literal>challenge</literal>. If
626 <literal>na</literal> is returned, the operation is not available because hardware, kernel, or drivers
627 do not support it. If <literal>yes</literal> is returned, the operation is supported and the user may
ca264f7d 628 execute the operation without further authentication. If <literal>no</literal> is returned, the
7592871e 629 operation is available but the user is not allowed to execute the operation. If
ca264f7d 630 <literal>challenge</literal> is returned, the operation is available but only after
7592871e
ZJS
631 authorization.</para>
632
633 <para><function>ScheduleShutdown()</function> schedules a shutdown operation <varname>type</varname> at
634 time <varname>usec</varname> in microseconds since the UNIX epoch. <varname>type</varname> can be one
635 of <literal>poweroff</literal>, <literal>dry-poweroff</literal>, <literal>reboot</literal>,
636 <literal>dry-reboot</literal>, <literal>halt</literal>, and <literal>dry-halt</literal>. (The
637 <literal>dry-</literal> variants do not actually execute the shutdown action.)
638 <function>CancelScheduledShutdown()</function> cancels a scheduled shutdown. The output parameter
639 <varname>cancelled</varname> is true if a shutdown operation was scheduled.</para>
640
641 <para><function>SetWallMessage()</function> sets the wall message (the message that will be sent out to
ca264f7d 642 all terminals and stored in a
d3fcecf3 643 <citerefentry project="man-pages"><refentrytitle>utmp</refentrytitle><manvolnum>5</manvolnum></citerefentry> record) for a
7592871e
ZJS
644 subsequent scheduled shutdown operation. The parameter <varname>wall_message</varname> specifies the
645 shutdown reason (and may be empty) which will be included in the shutdown message. The parameter
646 <varname>enable</varname> specifies whether to print a wall message on shutdown.</para>
44fd44f1
ZJS
647
648 <para><function>Inhibit()</function> creates an inhibition lock. It takes four parameters:
7592871e
ZJS
649 <varname>what</varname>, <varname>who</varname>, <varname>why</varname>, and
650 <varname>mode</varname>. <varname>what</varname> is one or more of <literal>shutdown</literal>,
44fd44f1
ZJS
651 <literal>sleep</literal>, <literal>idle</literal>, <literal>handle-power-key</literal>,
652 <literal>handle-suspend-key</literal>, <literal>handle-hibernate-key</literal>,
653 <literal>handle-lid-switch</literal>, separated by colons, for inhibiting poweroff/reboot,
7592871e
ZJS
654 suspend/hibernate, the automatic idle logic, or hardware key handling. <varname>who</varname> should be
655 a short human readable string identifying the application taking the lock. <varname>why</varname>
44fd44f1 656 should be a short human readable string identifying the reason why the lock is taken. Finally,
7592871e 657 <varname>mode</varname> is either <literal>block</literal> or <literal>delay</literal> which encodes
44fd44f1 658 whether the inhibit shall be consider mandatory or whether it should just delay the operation to a
89fc6fd3 659 certain maximum time. The method returns a file descriptor. The lock is released the moment this file
ca264f7d 660 descriptor and all its duplicates are closed. For more information on the inhibition logic see
931bc195 661 <ulink url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Locks</ulink>.
44fd44f1 662 </para>
44fd44f1
ZJS
663 </refsect2>
664
665 <refsect2>
666 <title>Signals</title>
667
ca264f7d 668 <para>Whenever the inhibition state or idle hint changes, <function>PropertyChanged</function>
44fd44f1
ZJS
669 signals are sent out to which clients can subscribe.</para>
670
7592871e 671 <para>The <function>SessionNew</function>, <function>SessionRemoved</function>,
ca264f7d 672 <function>UserNew</function>, <function>UserRemoved</function>, <function>SeatNew</function>, and
7592871e 673 <function>SeatRemoved</function> signals are sent each time a session is created or removed, a user
44fd44f1
ZJS
674 logs in or out, or a seat is added or removed. They each contain the ID of the object plus the object
675 path.</para>
676
677 <para>The <function>PrepareForShutdown()</function> and <function>PrepareForSleep()</function> signals
ca264f7d 678 are sent right before (with the argument <literal>true</literal>) or after (with the argument
44fd44f1 679 <literal>false</literal>) the system goes down for reboot/poweroff and suspend/hibernate,
ca264f7d
DDM
680 respectively. This may be used by applications to save data on disk, release memory, or do other jobs
681 that should be done shortly before shutdown/sleep, in conjunction with delay inhibitor locks. After
682 completion of this work they should release their inhibition locks in order to not delay the operation
44fd44f1 683 any further. For more information see
931bc195 684 <ulink url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Locks</ulink>.
44fd44f1
ZJS
685 </para>
686 </refsect2>
687
688 <refsect2>
689 <title>Properties</title>
690
7592871e
ZJS
691 <para>Most properties simply reflect the configuration, see
692 <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. This
693 includes: <varname>NAutoVTs</varname>, <varname>KillOnlyUsers</varname>,
694 <varname>KillExcludeUsers</varname>, <varname>KillUserProcesses</varname>, <varname>IdleAction</varname>,
695 <varname>InhibitDelayMaxUSec</varname>,
696 <varname>InhibitorsMax</varname>,
697 <varname>UserStopDelayUSec</varname>,
698 <varname>HandlePowerKey</varname>, <varname>HandleSuspendKey</varname>,
699 <varname>HandleHibernateKey</varname>, <varname>HandleLidSwitch</varname>,
700 <varname>HandleLidSwitchExternalPower</varname>, <varname>HandleLidSwitchDocked</varname>,
701 <varname>IdleActionUSec</varname>, <varname>HoldoffTimeoutUSec</varname>,
702 <varname>RemoveIPC</varname>, <varname>RuntimeDirectorySize</varname>,
cc1c85fb
TM
703 <varname>RuntimeDirectoryInodesMax</varname>, <varname>InhibitorsMax</varname>, and
704 <varname>SessionsMax</varname>.
44fd44f1
ZJS
705 </para>
706
7592871e 707 <para>The <varname>IdleHint</varname> property reflects the idle hint state of the system. If the
ca264f7d 708 system is idle it might get into automatic suspend or shutdown depending on the configuration.</para>
44fd44f1 709
7592871e 710 <para><varname>IdleSinceHint</varname> and <varname>IdleSinceHintMonotonic</varname> encode the
44fd44f1
ZJS
711 timestamps of the last change of the idle hint boolean, in <constant>CLOCK_REALTIME</constant> and
712 <constant>CLOCK_MONOTONIC</constant> timestamps, respectively, in microseconds since the epoch.</para>
713
7592871e 714 <para>The <varname>BlockInhibited</varname> and <varname>DelayInhibited</varname> properties encode
44fd44f1 715 the currently active locks of the respective modes. They are colon separated lists of
ca264f7d 716 <literal>shutdown</literal>, <literal>sleep</literal>, and <literal>idle</literal> (see above).</para>
44fd44f1 717
7592871e
ZJS
718 <para><varname>NCurrentSessions</varname> and <varname>NCurrentInhibitors</varname> contain the number
719 of currently registered sessions and inhibitors.</para>
720
721 <para>The <varname>BootLoaderEntries</varname> property contains a list of boot loader entries.
ca264f7d 722 This includes boot loader entries defined in configuration and any additional loader entries
7592871e
ZJS
723 reported by the boot loader. See
724 <citerefentry><refentrytitle>systemd-boot</refentrytitle><manvolnum>7</manvolnum></citerefentry>
725 for more information.</para>
726
727 <para>The <varname>PreparingForShutdown</varname> and <varname>PreparingForSleep</varname> boolean
ca264f7d
DDM
728 properties are true during the interval between the two <function>PrepareForShutdown</function> and
729 <function>PrepareForSleep</function> signals respectively. Note that these properties do not
44fd44f1 730 send out <function>PropertyChanged</function> signals.</para>
7592871e 731
ca264f7d 732 <para>The <varname>RebootParameter</varname> property shows the value set with the
7592871e
ZJS
733 <function>SetRebootParameter()</function> method described above.</para>
734
ca264f7d 735 <para><varname>ScheduledShutdown</varname> shows the value pair set with the
7592871e
ZJS
736 <function>ScheduleShutdown()</function> method described above.</para>
737
738 <para><varname>RebootToFirmwareSetup</varname>, <varname>RebootToBootLoaderMenu</varname>, and
739 <varname>RebootToBootLoaderEntry</varname> are true when the resprective post-reboot operation was
740 selected with <function>SetRebootToFirmwareSetup</function>,
741 <function>SetRebootToBootLoaderMenu</function>, or
742 <function>SetRebootToBootLoaderEntry</function>.</para>
743
ca264f7d
DDM
744 <para>The <varname>WallMessage</varname> and <varname>EnableWallMessages</varname> properties reflect the
745 shutdown reason and wall message enablement switch which can be set with the
746 <function>SetWallMessage()</function> method described above.</para>
7592871e 747
ca264f7d 748 <para><varname>Docked</varname> is true if the machine is connected to a dock.
7592871e
ZJS
749 <varname>LidClosed</varname> is true when the lid (of a laptop) is closed.
750 <varname>OnExternalPower</varname> is true when the machine is connected to an external power supply.
751 </para>
752 </refsect2>
753
754 <refsect2>
755 <title>Security</title>
756
98ab0dae 757 <para>A number of operations are protected via the polkit privilege
7592871e
ZJS
758 system. <function>SetUserLinger()</function> requires the
759 <interfacename>org.freedesktop.login1.set-user-linger</interfacename>
760 privilege. <function>AttachDevice()</function> requires
761 <interfacename>org.freedesktop.login1.attach-device</interfacename> and
ca264f7d 762 <function>FlushDevices()</function> requires
7592871e
ZJS
763 <interfacename>org.freedesktop.login1.flush-devices</interfacename>. <function>PowerOff()</function>,
764 <function>Reboot()</function>, <function>Halt()</function>, <function>Suspend()</function>,
765 <function>Hibernate()</function> require
766 <interfacename>org.freedesktop.login1.power-off</interfacename>,
767 <interfacename>org.freedesktop.login1.power-off-multiple-sessions</interfacename>,
768 <interfacename>org.freedesktop.login1.power-off-ignore-inhibit</interfacename>,
769 <interfacename>org.freedesktop.login1.reboot</interfacename>,
770 <interfacename>org.freedesktop.login1.reboot-multiple-sessions</interfacename>,
771 <interfacename>org.freedesktop.login1.reboot-ignore-inhibit</interfacename>,
772 <interfacename>org.freedesktop.login1.halt</interfacename>,
773 <interfacename>org.freedesktop.login1.halt-multiple-sessions</interfacename>,
774 <interfacename>org.freedesktop.login1.halt-ignore-inhibit</interfacename>,
775 <interfacename>org.freedesktop.login1.suspend</interfacename>,
776 <interfacename>org.freedesktop.login1.suspend-multiple-sessions</interfacename>,
777 <interfacename>org.freedesktop.login1.suspend-ignore-inhibit</interfacename>,
778 <interfacename>org.freedesktop.login1.hibernate</interfacename>,
779 <interfacename>org.freedesktop.login1.hibernate-multiple-sessions</interfacename>,
780 <interfacename>org.freedesktop.login1.hibernate-ignore-inhibit</interfacename>,
ca264f7d 781 respectively depending on whether there are other sessions around or active inhibits are present.
7592871e
ZJS
782 <function>HybridSleep()</function> and <function>SuspendThenHibernate()</function>
783 use the same privileges as <function>Hibernate()</function>.
784 <function>SetRebootParameter()</function> requires
785 <interfacename>org.freedesktop.login1.set-reboot-parameter</interfacename>.</para>
786
787 <para><function>SetRebootToFirmwareSetup</function> requires
788 <interfacename>org.freedesktop.login1.set-reboot-to-firmware-setup</interfacename>.
789 <function>SetRebootToBootLoaderMenu</function> requires
790 <interfacename>org.freedesktop.login1.set-reboot-to-boot-loader-menu</interfacename>.
791 <function>SetRebootToBootLoaderEntry</function> requires
792 <interfacename>org.freedesktop.login1.set-reboot-to-boot-loader-entry</interfacename>.
793 </para>
794
795 <para><function>ScheduleShutdown</function> and <function>CancelScheduledShutdown</function> require
796 the same privileges (listed above) as the immediate poweroff/reboot/halt operations.</para>
797
ca264f7d 798 <para><function>Inhibit()</function> is protected via one of
7592871e
ZJS
799 <interfacename>org.freedesktop.login1.inhibit-block-shutdown</interfacename>,
800 <interfacename>org.freedesktop.login1.inhibit-delay-shutdown</interfacename>,
801 <interfacename>org.freedesktop.login1.inhibit-block-sleep</interfacename>,
802 <interfacename>org.freedesktop.login1.inhibit-delay-sleep</interfacename>,
803 <interfacename>org.freedesktop.login1.inhibit-block-idle</interfacename>,
804 <interfacename>org.freedesktop.login1.inhibit-handle-power-key</interfacename>,
805 <interfacename>org.freedesktop.login1.inhibit-handle-suspend-key</interfacename>,
806 <interfacename>org.freedesktop.login1.inhibit-handle-hibernate-key</interfacename>,
807 <interfacename>org.freedesktop.login1.inhibit-handle-lid-switch</interfacename> depending on the lock
808 type and mode taken.</para>
809
98ab0dae 810 <para>The <varname>interactive</varname> boolean parameters can be used to control whether polkit
ca264f7d 811 should interactively ask the user for authentication credentials if required.</para>
44fd44f1
ZJS
812 </refsect2>
813 </refsect1>
814
815 <refsect1>
816 <title>Seat Objects</title>
817
48f99d7c 818 <programlisting executable="systemd-logind" node="/org/freedesktop/login1/seat/seat0" interface="org.freedesktop.login1.Seat">
44fd44f1
ZJS
819node /org/freedesktop/login1/seat/seat0 {
820 interface org.freedesktop.login1.Seat {
821 methods:
822 Terminate();
823 ActivateSession(in s session_id);
824 SwitchTo(in u vtnr);
825 SwitchToNext();
826 SwitchToPrevious();
827 properties:
4fb222c4
ZJS
828 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
829 readonly s Id = '...';
830 readonly (so) ActiveSession = ...;
831 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
4fb222c4
ZJS
832 readonly b CanTTY = ...;
833 readonly b CanGraphical = ...;
834 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
835 readonly a(so) Sessions = [...];
836 readonly b IdleHint = ...;
837 readonly t IdleSinceHint = ...;
838 readonly t IdleSinceHintMonotonic = ...;
44fd44f1 839 };
4fb222c4
ZJS
840 interface org.freedesktop.DBus.Peer { ... };
841 interface org.freedesktop.DBus.Introspectable { ... };
842 interface org.freedesktop.DBus.Properties { ... };
44fd44f1
ZJS
843};
844 </programlisting>
845
00bb75d7
ZJS
846 <!--Autogenerated cross-references for systemd.directives, do not edit-->
847
848 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Seat"/>
849
850 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Seat"/>
851
852 <variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
853
854 <variablelist class="dbus-method" generated="True" extra-ref="ActivateSession()"/>
855
856 <variablelist class="dbus-method" generated="True" extra-ref="SwitchTo()"/>
857
858 <variablelist class="dbus-method" generated="True" extra-ref="SwitchToNext()"/>
859
860 <variablelist class="dbus-method" generated="True" extra-ref="SwitchToPrevious()"/>
861
862 <variablelist class="dbus-property" generated="True" extra-ref="Id"/>
863
864 <variablelist class="dbus-property" generated="True" extra-ref="ActiveSession"/>
865
00bb75d7
ZJS
866 <variablelist class="dbus-property" generated="True" extra-ref="CanTTY"/>
867
868 <variablelist class="dbus-property" generated="True" extra-ref="CanGraphical"/>
869
870 <variablelist class="dbus-property" generated="True" extra-ref="Sessions"/>
871
872 <variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
873
874 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
875
876 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
877
878 <!--End of Autogenerated section-->
879
44fd44f1
ZJS
880 <refsect2>
881 <title>Methods</title>
882
15102ced
ZJS
883 <para><function>Terminate()</function> and <function>ActivateSession()</function> work similarly to
884 <function>TerminateSeat()</function> and <function>ActivationSessionOnSeat()</function> on the Manager
885 object.</para>
7592871e
ZJS
886
887 <para><function>SwitchTo()</function> switches to the session on the virtual terminal
888 <varname>vtnr</varname>. <function>SwitchToNext()</function> and
889 <function>SwitchToPrevious()</function> switch to, respectively, the next and previous sessions on the
890 seat in the order of virtual terminals. If there is no active session, they switch to, respectively,
891 the first and last session on the seat.</para>
44fd44f1
ZJS
892 </refsect2>
893
894 <refsect2>
895 <title>Signals</title>
896
897 <para>Whenever <function>ActiveSession</function>, <function>Sessions</function>,
38b52b69 898 <function>CanGraphical</function>, <function>CanTTY</function>,
ca264f7d 899 or the idle state changes, <function>PropertyChanged</function> signals are sent out to which clients
44fd44f1
ZJS
900 can subscribe.</para>
901 </refsect2>
902
903 <refsect2>
904 <title>Properties</title>
905
906 <para>The <varname>Id</varname> property encodes the ID of the seat.</para>
907
908 <para><varname>ActiveSession</varname> encodes the currently active session if there is one. It is a
ca264f7d 909 structure consisting of the session id and the object path.</para>
44fd44f1 910
38b52b69
ZJS
911 <para><varname>CanTTY</varname> encodes whether the session is suitable for text logins, and
912 <varname>CanGraphical</varname> whether it is suitable for graphical sessions.</para>
44fd44f1 913
7592871e 914 <para>The <varname>Sessions</varname> property is an array of all current sessions of this seat, each
44fd44f1
ZJS
915 encoded in a structure consisting of the ID and the object path.</para>
916
ca264f7d 917 <para>The <varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
15102ced
ZJS
918 <varname>IdleSinceHintMonotonic</varname> properties encode the idle state, similarly to the ones
919 exposed on the <interfacename>Manager</interfacename> object, but specific for this seat.</para>
44fd44f1
ZJS
920 </refsect2>
921 </refsect1>
922
923 <refsect1>
924 <title>User Objects</title>
925
48f99d7c 926 <programlisting executable="systemd-logind" node="/org/freedesktop/login1/user/_1000" interface="org.freedesktop.login1.User">
44fd44f1
ZJS
927node /org/freedesktop/login1/user/_1000 {
928 interface org.freedesktop.login1.User {
929 methods:
930 Terminate();
4fb222c4 931 Kill(in i signal_number);
44fd44f1 932 properties:
4fb222c4
ZJS
933 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
934 readonly u UID = ...;
935 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
936 readonly u GID = ...;
937 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
938 readonly s Name = '...';
939 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
940 readonly t Timestamp = ...;
941 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
942 readonly t TimestampMonotonic = ...;
943 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
944 readonly s RuntimePath = '...';
945 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
946 readonly s Service = '...';
947 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
948 readonly s Slice = '...';
949 readonly (so) Display = ...;
950 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
951 readonly s State = '...';
952 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
953 readonly a(so) Sessions = [...];
954 readonly b IdleHint = ...;
955 readonly t IdleSinceHint = ...;
956 readonly t IdleSinceHintMonotonic = ...;
957 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
958 readonly b Linger = ...;
44fd44f1 959 };
4fb222c4
ZJS
960 interface org.freedesktop.DBus.Peer { ... };
961 interface org.freedesktop.DBus.Introspectable { ... };
962 interface org.freedesktop.DBus.Properties { ... };
44fd44f1
ZJS
963};
964 </programlisting>
965
00bb75d7
ZJS
966 <!--Autogenerated cross-references for systemd.directives, do not edit-->
967
968 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.User"/>
969
970 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.User"/>
971
972 <variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
973
974 <variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
975
976 <variablelist class="dbus-property" generated="True" extra-ref="UID"/>
977
978 <variablelist class="dbus-property" generated="True" extra-ref="GID"/>
979
980 <variablelist class="dbus-property" generated="True" extra-ref="Name"/>
981
982 <variablelist class="dbus-property" generated="True" extra-ref="Timestamp"/>
983
984 <variablelist class="dbus-property" generated="True" extra-ref="TimestampMonotonic"/>
985
986 <variablelist class="dbus-property" generated="True" extra-ref="RuntimePath"/>
987
988 <variablelist class="dbus-property" generated="True" extra-ref="Service"/>
989
990 <variablelist class="dbus-property" generated="True" extra-ref="Slice"/>
991
992 <variablelist class="dbus-property" generated="True" extra-ref="Display"/>
993
994 <variablelist class="dbus-property" generated="True" extra-ref="State"/>
995
996 <variablelist class="dbus-property" generated="True" extra-ref="Sessions"/>
997
998 <variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
999
1000 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
1001
1002 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
1003
1004 <variablelist class="dbus-property" generated="True" extra-ref="Linger"/>
1005
1006 <!--End of Autogenerated section-->
1007
44fd44f1
ZJS
1008 <refsect2>
1009 <title>Methods</title>
1010
15102ced 1011 <para><function>Terminate()</function> and <function>Kill()</function> work similarly to the
ca264f7d 1012 <function>TerminateUser()</function> and <function>KillUser()</function> methods on the manager
44fd44f1
ZJS
1013 object.</para>
1014 </refsect2>
1015
1016 <refsect2>
1017 <title>Signals</title>
1018
ca264f7d 1019 <para>Whenever <varname>Sessions</varname> or the idle state changes,
44fd44f1
ZJS
1020 <function>PropertyChanged</function> signals are sent out to which clients can subscribe.</para>
1021 </refsect2>
1022
1023 <refsect2>
1024 <title>Properties</title>
1025
1026 <para>The <varname>UID</varname> and <varname>GID</varname> properties encode the Unix UID and primary
1027 GID of the user.</para>
1028
1029 <para>The <varname>Name</varname> property encodes the user name.</para>
1030
1031 <para><varname>Timestamp</varname> and <varname>TimestampMonotonic</varname> encode the login time of
ca264f7d 1032 the user in microseconds since the epoch, in the <constant>CLOCK_REALTIME</constant> and
44fd44f1
ZJS
1033 <constant>CLOCK_MONOTONIC</constant> clocks, respectively.</para>
1034
1035 <para><varname>RuntimePath</varname> encodes the runtime path of the user,
ca264f7d 1036 i.e. <varname>$XDG_RUNTIME_DIR</varname>. For details see the
44fd44f1
ZJS
1037 <ulink url="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">
1038 XDG Basedir Specification
1039 </ulink>.</para>
1040
ca264f7d
DDM
1041 <para><varname>Service</varname> contains the unit name of the user systemd service of this
1042 user. Each logged in user is assigned a user service that runs a user systemd instance. This is
44fd44f1
ZJS
1043 usually an instance of <filename>user@.service</filename>.</para>
1044
ca264f7d 1045 <para><varname>Slice</varname> contains the unit name of the user systemd slice of this user. Each
44fd44f1
ZJS
1046 logged in user gets a private slice.</para>
1047
ca264f7d
DDM
1048 <para><varname>Display</varname> encodes which graphical session should be used as the primary UI display
1049 for the user. It is a structure encoding the session ID and the object path of the session to use.</para>
44fd44f1 1050
ca264f7d
DDM
1051 <para><varname>State</varname> encodes the user state and is one of <literal>offline</literal>,
1052 <literal>lingering</literal>, <literal>online</literal>, <literal>active</literal>, or
44fd44f1
ZJS
1053 <literal>closing</literal>. See
1054 <citerefentry><refentrytitle>sd_uid_get_state</refentrytitle><manvolnum>3</manvolnum></citerefentry>
1055 for more information about the states.</para>
1056
1057 <para><varname>Sessions</varname> is an array of structures encoding all current sessions of the
ca264f7d 1058 user. Each structure consists of the ID and object path.</para>
44fd44f1 1059
ca264f7d 1060 <para>The <varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
15102ced
ZJS
1061 <varname>IdleSinceHintMonotonic</varname> properties encode the idle hint state of the user, similarly
1062 to the <interfacename>Manager</interfacename>'s properties, but specific for this user.</para>
7592871e 1063
ca264f7d 1064 <para>The <varname>Linger</varname> property shows whether lingering is enabled for this user.</para>
44fd44f1
ZJS
1065 </refsect2>
1066 </refsect1>
1067
1068 <refsect1>
1069 <title>Session Objects</title>
1070
48f99d7c
ZJS
1071 <programlisting executable="systemd-logind" node="/org/freedesktop/login1/session/1" interface="org.freedesktop.login1.Session">
1072node /org/freedesktop/login1/session/1 {
44fd44f1
ZJS
1073 interface org.freedesktop.login1.Session {
1074 methods:
1075 Terminate();
1076 Activate();
1077 Lock();
1078 Unlock();
1079 SetIdleHint(in b idle);
4fb222c4 1080 SetLockedHint(in b locked);
44fd44f1 1081 Kill(in s who,
4fb222c4 1082 in i signal_number);
44fd44f1
ZJS
1083 TakeControl(in b force);
1084 ReleaseControl();
b61cc5fd 1085 SetType(in s type);
4885d749 1086 SetDisplay(in s display);
092e6cd1 1087 SetTTY(in h tty_fd);
44fd44f1
ZJS
1088 TakeDevice(in u major,
1089 in u minor,
1090 out h fd,
1091 out b inactive);
1092 ReleaseDevice(in u major,
1093 in u minor);
1094 PauseDeviceComplete(in u major,
1095 in u minor);
4fb222c4
ZJS
1096 SetBrightness(in s subsystem,
1097 in s name,
1098 in u brightness);
44fd44f1
ZJS
1099 signals:
1100 PauseDevice(u major,
1101 u minor,
1102 s type);
1103 ResumeDevice(u major,
1104 u minor,
1105 h fd);
1106 Lock();
1107 Unlock();
1108 properties:
4fb222c4
ZJS
1109 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1110 readonly s Id = '...';
1111 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1112 readonly (uo) User = ...;
1113 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1114 readonly s Name = '...';
1115 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1116 readonly t Timestamp = ...;
1117 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1118 readonly t TimestampMonotonic = ...;
1119 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1120 readonly u VTNr = ...;
1121 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1122 readonly (so) Seat = ...;
1123 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1124 readonly s TTY = '...';
1125 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1126 readonly s Display = '...';
1127 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1128 readonly b Remote = ...;
1129 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1130 readonly s RemoteHost = '...';
1131 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1132 readonly s RemoteUser = '...';
1133 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1134 readonly s Service = '...';
1135 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1136 readonly s Desktop = '...';
1137 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1138 readonly s Scope = '...';
1139 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1140 readonly u Leader = ...;
1141 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1142 readonly u Audit = ...;
4fb222c4
ZJS
1143 readonly s Type = '...';
1144 @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
1145 readonly s Class = '...';
1146 readonly b Active = ...;
1147 readonly s State = '...';
1148 readonly b IdleHint = ...;
1149 readonly t IdleSinceHint = ...;
1150 readonly t IdleSinceHintMonotonic = ...;
1151 readonly b LockedHint = ...;
44fd44f1 1152 };
4fb222c4
ZJS
1153 interface org.freedesktop.DBus.Peer { ... };
1154 interface org.freedesktop.DBus.Introspectable { ... };
1155 interface org.freedesktop.DBus.Properties { ... };
44fd44f1
ZJS
1156};
1157 </programlisting>
1158
48f99d7c
ZJS
1159 <!--Autogenerated cross-references for systemd.directives, do not edit-->
1160
1161 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Session"/>
1162
1163 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Session"/>
1164
1165 <variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
1166
1167 <variablelist class="dbus-method" generated="True" extra-ref="Activate()"/>
1168
1169 <variablelist class="dbus-method" generated="True" extra-ref="Lock()"/>
1170
1171 <variablelist class="dbus-method" generated="True" extra-ref="Unlock()"/>
1172
1173 <variablelist class="dbus-method" generated="True" extra-ref="SetIdleHint()"/>
1174
1175 <variablelist class="dbus-method" generated="True" extra-ref="SetLockedHint()"/>
1176
1177 <variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
1178
1179 <variablelist class="dbus-method" generated="True" extra-ref="TakeControl()"/>
1180
1181 <variablelist class="dbus-method" generated="True" extra-ref="ReleaseControl()"/>
1182
b61cc5fd
ZJS
1183 <variablelist class="dbus-method" generated="True" extra-ref="SetType()"/>
1184
4885d749
DT
1185 <variablelist class="dbus-method" generated="True" extra-ref="SetDisplay()"/>
1186
092e6cd1
TK
1187 <variablelist class="dbus-method" generated="True" extra-ref="SetTTY()"/>
1188
48f99d7c
ZJS
1189 <variablelist class="dbus-method" generated="True" extra-ref="TakeDevice()"/>
1190
1191 <variablelist class="dbus-method" generated="True" extra-ref="ReleaseDevice()"/>
1192
1193 <variablelist class="dbus-method" generated="True" extra-ref="PauseDeviceComplete()"/>
1194
1195 <variablelist class="dbus-method" generated="True" extra-ref="SetBrightness()"/>
1196
1197 <variablelist class="dbus-signal" generated="True" extra-ref="PauseDevice"/>
1198
1199 <variablelist class="dbus-signal" generated="True" extra-ref="ResumeDevice"/>
1200
1201 <variablelist class="dbus-signal" generated="True" extra-ref="Lock"/>
1202
1203 <variablelist class="dbus-signal" generated="True" extra-ref="Unlock"/>
1204
1205 <variablelist class="dbus-property" generated="True" extra-ref="Id"/>
1206
1207 <variablelist class="dbus-property" generated="True" extra-ref="User"/>
1208
1209 <variablelist class="dbus-property" generated="True" extra-ref="Name"/>
1210
1211 <variablelist class="dbus-property" generated="True" extra-ref="Timestamp"/>
1212
1213 <variablelist class="dbus-property" generated="True" extra-ref="TimestampMonotonic"/>
1214
1215 <variablelist class="dbus-property" generated="True" extra-ref="VTNr"/>
1216
1217 <variablelist class="dbus-property" generated="True" extra-ref="Seat"/>
1218
1219 <variablelist class="dbus-property" generated="True" extra-ref="TTY"/>
1220
1221 <variablelist class="dbus-property" generated="True" extra-ref="Display"/>
1222
1223 <variablelist class="dbus-property" generated="True" extra-ref="Remote"/>
1224
1225 <variablelist class="dbus-property" generated="True" extra-ref="RemoteHost"/>
1226
1227 <variablelist class="dbus-property" generated="True" extra-ref="RemoteUser"/>
1228
1229 <variablelist class="dbus-property" generated="True" extra-ref="Service"/>
1230
1231 <variablelist class="dbus-property" generated="True" extra-ref="Desktop"/>
1232
1233 <variablelist class="dbus-property" generated="True" extra-ref="Scope"/>
1234
1235 <variablelist class="dbus-property" generated="True" extra-ref="Leader"/>
1236
1237 <variablelist class="dbus-property" generated="True" extra-ref="Audit"/>
1238
1239 <variablelist class="dbus-property" generated="True" extra-ref="Type"/>
1240
1241 <variablelist class="dbus-property" generated="True" extra-ref="Class"/>
1242
1243 <variablelist class="dbus-property" generated="True" extra-ref="Active"/>
1244
1245 <variablelist class="dbus-property" generated="True" extra-ref="State"/>
1246
1247 <variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
1248
1249 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
1250
1251 <variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
1252
1253 <variablelist class="dbus-property" generated="True" extra-ref="LockedHint"/>
1254
1255 <!--End of Autogenerated section-->
1256
44fd44f1
ZJS
1257 <refsect2>
1258 <title>Methods</title>
1259
1260 <para><function>Terminate()</function>, <function>Activate()</function>, <function>Lock()</function>,
ca264f7d 1261 <function>Unlock()</function>, and <function>Kill()</function> work similarly to the respective calls on
44fd44f1
ZJS
1262 the <interfacename>Manager</interfacename> object.</para>
1263
ca264f7d
DDM
1264 <para><function>SetIdleHint()</function> is called by the session object to update the idle state
1265 of the session whenever it changes.</para>
44fd44f1
ZJS
1266
1267 <para><function>TakeControl()</function> allows a process to take exclusive managed device
ca264f7d
DDM
1268 access-control for that session. Only one D-Bus connection can be a controller for a given session at any
1269 time. If the <varname>force</varname> argument is set (root only), an existing controller is kicked
89fc6fd3 1270 out and replaced. Otherwise, this method fails if there is already a controller. Note that this method is
ca264f7d
DDM
1271 limited to D-Bus users with the effective UID set to the user of the session or root.</para>
1272
b61cc5fd
ZJS
1273 <para><function>ReleaseControl()</function> drops control of a given session. Closing the D-Bus
1274 connection implicitly releases control as well. See <function>TakeControl()</function> for more
1275 information. This method also releases all devices for which the controller requested ownership via
1276 <function>TakeDevice()</function>.</para>
1277
1278 <para><function>SetType()</function> allows the type of the session to be changed dynamically. It can
1279 only be called by session's current controller. If <function>TakeControl()</function> has not been
1280 called, this method will fail. In addition, the session type will be reset to its original value once
1281 control is released, either by calling <function>ReleaseControl()</function> or closing the D-Bus
1282 connection. This should help prevent a session from entering an inconsistent state, for example if the
1283 controller crashes. The only argument <varname>type</varname> is the new session type.</para>
44fd44f1 1284
4885d749
DT
1285 <para><function>SetDisplay()</function> allows the display name of the graphical session to be changed. This is
1286 useful if the display server is started as part of the session. It can only be called by session's current
1287 controller. If <function>TakeControl()</function> has not been called, this method will fail. The only argument
1288 <varname>display</varname> is the new display name.</para>
1289
092e6cd1
TK
1290 <para><function>SetTTY()</function> allows the device name of the session to be changed. This is
1291 useful if the tty device is only known after authentication. It can only be called by session's
1292 current controller. If <function>TakeControl()</function> has not been called, this method will fail.
1293 The only argument <varname>tty_fd</varname> is a file handle to the new tty device.</para>
1294
ca264f7d
DDM
1295 <para><function>TakeDevice()</function> allows a session controller to get a file descriptor for a
1296 specific device. Pass in the major and minor numbers of the character device and
1297 <filename>systemd-logind</filename> will return a file descriptor for the device. Only a limited set of
44fd44f1 1298 device-types is currently supported (but may be extended). <filename>systemd-logind</filename>
ca264f7d
DDM
1299 automatically mutes the file descriptor if the session is inactive and resumes it once the session is
1300 activated again. This guarantees that a session can only access session devices if the session is
44fd44f1
ZJS
1301 active. Note that this revoke/resume mechanism is asynchronous and may happen at any given time. This
1302 only works on devices that are attached to the seat of the given session. A process is not required to
ca264f7d 1303 have direct access to the device node. <filename>systemd-logind</filename> only requires you to be the
44fd44f1
ZJS
1304 active session controller (see <function>TakeControl()</function>). Also note that any device can only
1305 be requested once. As long as you don't release it, further <function>TakeDevice()</function> calls
1306 will fail.</para>
1307
1308 <para><function>ReleaseDevice()</function> releases a device again (see
1309 <function>TakeDevice()</function>). This is also implicitly done by
ca264f7d 1310 <function>ReleaseControl()</function> or when closing the D-Bus connection.</para>
44fd44f1 1311
ca264f7d 1312 <para><function>PauseDeviceComplete()</function> allows a session controller to synchronously pause a
44fd44f1
ZJS
1313 device after receiving a <function>PauseDevice(<literal>pause</literal>)</function> signal. Forced
1314 signals (or after an internal timeout) are automatically completed by
1315 <filename>systemd-logind</filename> asynchronously.</para>
7592871e 1316
07b4f449 1317 <para><function>SetLockedHint()</function> may be used to set the "locked hint" to
7592871e
ZJS
1318 <varname>locked</varname>, i.e. information whether the session is locked. This is intended to be used
1319 by the desktop environment to tell <command>systemd-logind</command> when the session is locked and
1320 unlocked.</para>
1321
1322 <para><function>SetBrightness()</function> may be used to set the display brightness. This is intended
ca264f7d 1323 to be used by the desktop environment and allows unprivileged programs to access hardware settings in
7592871e
ZJS
1324 a controlled way. The <varname>subsystem</varname> parameter specifies a kernel subsystem, either
1325 <literal>backlight</literal> or <literal>leds</literal>. The <varname>name</varname> parameter
1326 specifies a device name under the specified subsystem. The <varname>brightness</varname> parameter
1327 specifies the brightness. The range is defined by individual drivers, see
1328 <filename>/sys/class/<varname>subsystem</varname>/<varname>name</varname>/max_brightness</filename>.
1329 </para>
44fd44f1
ZJS
1330 </refsect2>
1331
1332 <refsect2>
1333 <title>Signals</title>
1334
ca264f7d 1335 <para>The active session controller exclusively gets <function>PauseDevice</function> and
44fd44f1
ZJS
1336 <function>ResumeDevice</function> events for any device it requested via
1337 <function>TakeDevice()</function>. They notify the controller whenever a device is paused or resumed. A
ca264f7d 1338 device is never resumed if its session is inactive. Also note that <function>PauseDevice</function>
44fd44f1
ZJS
1339 signals are sent before the <function>PropertyChanged</function> signal for the
1340 <function>Active</function> state. The inverse is true for <function>ResumeDevice</function>. A device
1341 may remain paused for unknown reasons even though the <interfacename>Session</interfacename> is active.
1342 </para>
1343
ca264f7d
DDM
1344 <para>A <function>PauseDevice</function> signal carries the major and minor numbers and a string describing the
1345 type as arguments. <function>force</function> means the device was already paused by
1346 <filename>systemd-logind</filename> and the signal is only an asynchronous
1347 notification. <function>pause</function> means <filename>systemd-logind</filename> grants you a limited amount of time to pause the device. You must respond to this via
1348 <function>PauseDeviceComplete()</function>. This synchronous pausing mechanism is used for
44fd44f1
ZJS
1349 backwards-compatibility to VTs and <filename>systemd-logind</filename> is free to not make use of
1350 it. It is also free to send a forced <function>PauseDevice</function> if you don't respond in a timely
1351 manner (or for any other reason). <function>gone</function> means the device was unplugged from the
ca264f7d 1352 system and you will no longer get any notifications about it. There is no need to call
44fd44f1 1353 <function>ReleaseDevice()</function>. You may call <function>TakeDevice()</function> again if a new
ca264f7d 1354 device is assigned the major+minor combination.</para>
44fd44f1
ZJS
1355
1356 <para><function>ResumeDevice</function> is sent whenever a session is active and a device is
ca264f7d 1357 resumed. It carries the major/minor numbers as arguments and provides a new open file descriptor. You should
44fd44f1 1358 switch to the new descriptor and close the old one. They are not guaranteed to have the same underlying
ca264f7d 1359 open file descriptor in the kernel (except for a limited set of device types).</para>
44fd44f1 1360
ca264f7d 1361 <para>Whenever <function>Active</function> or the idle state changes,
44fd44f1
ZJS
1362 <function>PropertyChanged</function> signals are sent out to which clients can subscribe.</para>
1363
1364 <para><function>Lock</function>/<function>Unlock</function> is sent when the session is asked to be
1365 screen-locked/unlocked. A session manager of the session should listen to this signal and act
1366 accordingly. This signal is sent out as a result of the <function>Lock()</function> and
1367 <function>Unlock()</function> methods, respectively.</para>
1368 </refsect2>
1369
1370 <refsect2>
1371 <title>Properties</title>
1372
1373 <para><varname>Id</varname> encodes the session ID.</para>
1374
1375 <para><varname>User</varname> encodes the user ID of the user this session belongs to. This is a
ca264f7d 1376 structure consisting of the Unix UID and the object path.</para>
44fd44f1
ZJS
1377
1378 <para><varname>Name</varname> encodes the user name.</para>
1379
ca264f7d 1380 <para><varname>Timestamp</varname> and <varname>TimestampMonotonic</varname> encode the microseconds
44fd44f1
ZJS
1381 since the epoch when the session was created, in <constant>CLOCK_REALTIME</constant> or
1382 <constant>CLOCK_MONOTONIC</constant>, respectively.</para>
1383
1384 <para><varname>VTNr</varname> encodes the virtual terminal number of the session if there is any, 0
1385 otherwise.</para>
1386
ca264f7d 1387 <para><varname>Seat</varname> encodes the seat this session belongs to if there is any. This is a
44fd44f1
ZJS
1388 structure consisting of the ID and the seat object path.</para>
1389
1390 <para><varname>TTY</varname> encodes the kernel TTY path of the session if this is a text login. If not
1391 this is an empty string.</para>
1392
1393 <para><varname>Display</varname> encodes the X11 display name if this is a graphical login. If not,
1394 this is an empty string.</para>
1395
1396 <para><varname>Remote</varname> encodes whether the session is local or remote.</para>
1397
1398 <para><varname>RemoteHost</varname> and <varname>RemoteUser</varname> encode the remote host and user
1399 if this is a remote session, or an empty string otherwise.</para>
1400
1401 <para><varname>Service</varname> encodes the PAM service name that registered the session.</para>
1402
7592871e
ZJS
1403 <para><varname>Desktop</varname> describes the desktop environment running in the session (if
1404 known).</para>
1405
44fd44f1
ZJS
1406 <para><varname>Scope</varname> contains the systemd scope unit name of this session.</para>
1407
1408 <para><varname>Leader</varname> encodes the PID of the process that registered the session.</para>
1409
ca264f7d 1410 <para><varname>Audit</varname> encodes the Kernel Audit session ID of the session if auditing is
44fd44f1
ZJS
1411 available.</para>
1412
1413 <para><varname>Type</varname> encodes the session type. It's one of <literal>unspecified</literal> (for
1414 cron PAM sessions and suchlike), <literal>tty</literal> (for text logins) or
1415 <literal>x11</literal>/<literal>mir</literal>/<literal>wayland</literal> (for graphical logins).</para>
1416
1417 <para><varname>Class</varname> encodes the session class. It's one of <literal>user</literal> (for
ca264f7d 1418 normal user sessions), <literal>greeter</literal> (for display manager pseudo-sessions), or
44fd44f1
ZJS
1419 <literal>lock-screen</literal> (for display lock screens).</para>
1420
1421 <para><varname>Active</varname> is a boolean that is true if the session is active, i.e. currently in the
ca264f7d 1422 foreground. This field is semi-redundant due to <varname>State</varname>.</para>
44fd44f1
ZJS
1423
1424 <para><varname>State</varname> encodes the session state and one of <literal>online</literal>,
ca264f7d 1425 <literal>active</literal>, or <literal>closing</literal>. See
44fd44f1
ZJS
1426 <citerefentry><refentrytitle>sd_session_get_state</refentrytitle><manvolnum>3</manvolnum></citerefentry>
1427 for more information about the states.</para>
1428
ca264f7d 1429 <para><varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
44fd44f1
ZJS
1430 <varname>IdleSinceHintMonotonic</varname> encapsulate the idle hint state of this session, similarly to
1431 how the respective properties on the manager object do it for the whole system.</para>
7592871e 1432
ca264f7d
DDM
1433 <para><varname>LockedHint</varname> shows the locked hint state of this session, as set by the
1434 <function>SetLockedHint()</function> method described above.</para>
44fd44f1
ZJS
1435 </refsect2>
1436 </refsect1>
1437
48f99d7c
ZJS
1438 <refsect1>
1439 <title>Examples</title>
1440
1441 <example>
01942823 1442 <title>Introspect the logind manager on the bus</title>
48f99d7c
ZJS
1443
1444 <programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
1445 --object-path /org/freedesktop/login1
1446 </programlisting>
01942823
ZJS
1447
1448 <para>or</para>
1449
1450 <programlisting>$ busctl introspect org.freedesktop.login1 /org/freedesktop/login1
1451 </programlisting>
48f99d7c
ZJS
1452 </example>
1453
1454 <example>
01942823 1455 <title>Introspect the default seat on the bus</title>
48f99d7c
ZJS
1456
1457 <programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
1458 --object-path /org/freedesktop/login1/seat/seat0
1459 </programlisting>
01942823
ZJS
1460
1461 <para>or</para>
1462
1463 <programlisting>$ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/seat/seat0
1464 </programlisting>
1465
3c606438 1466 <para>Seat <literal>seat0</literal> is the default seat, so it'll be present unless local configuration
01942823
ZJS
1467 is made to reassign all devices to a different seat. The list of seats and users can be acquired with
1468 <command>loginctl list-sessions</command>.</para>
48f99d7c
ZJS
1469 </example>
1470
1471 <example>
01942823 1472 <title>Introspect a single user on the bus</title>
48f99d7c
ZJS
1473
1474 <programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
1475 --object-path /org/freedesktop/login1/user/_1000
1476 </programlisting>
01942823
ZJS
1477
1478 <para>or</para>
1479
1480 <programlisting>$ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/user/_1000
1481 </programlisting>
48f99d7c
ZJS
1482 </example>
1483
1484 <example>
1485 <title>Introspect <interfacename>org.freedesktop.login1.Session</interfacename> on the bus</title>
1486
1487 <programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
1488 --object-path /org/freedesktop/login1/session/45
1489 </programlisting>
01942823
ZJS
1490
1491 <para>or</para>
1492
1493 <programlisting>$ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/session/45
1494 </programlisting>
48f99d7c
ZJS
1495 </example>
1496 </refsect1>
1497
e4239a34 1498 <xi:include href="org.freedesktop.locale1.xml" xpointer="versioning"/>
44fd44f1 1499</refentry>