mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 14:55:37 +03:00
1427 lines
71 KiB
XML
1427 lines
71 KiB
XML
<?xml version='1.0'?>
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" >
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
|
|
<refentry id="org.freedesktop.login1" conditional='ENABLE_LOGIND'
|
|
xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
<refentryinfo>
|
|
<title>org.freedesktop.login1</title>
|
|
<productname>systemd</productname>
|
|
</refentryinfo>
|
|
|
|
<refmeta>
|
|
<refentrytitle>org.freedesktop.login1</refentrytitle>
|
|
<manvolnum>5</manvolnum>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>org.freedesktop.login1</refname>
|
|
<refpurpose>The D-Bus interface of systemd-logind</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1>
|
|
<title>Introduction</title>
|
|
|
|
<para><citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
|
is a system service that keeps track of user logins and seats.</para>
|
|
|
|
<para>The daemon provides both a C library interface as well as a D-Bus interface. The library interface
|
|
may be used to introspect and watch the state of user logins and seats. The bus interface provides the
|
|
same functionality but in addition may also be used to make changes to the system state. For more information please
|
|
consult <citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>The Manager Object</title>
|
|
|
|
<para>The service exposes the following interfaces on the Manager object on the bus:</para>
|
|
|
|
<programlisting executable="systemd-logind" node="/org/freedesktop/login1" interface="org.freedesktop.login1.Manager">
|
|
node /org/freedesktop/login1 {
|
|
interface org.freedesktop.login1.Manager {
|
|
methods:
|
|
GetSession(in s session_id,
|
|
out o object_path);
|
|
GetSessionByPID(in u pid,
|
|
out o object_path);
|
|
GetUser(in u uid,
|
|
out o object_path);
|
|
GetUserByPID(in u pid,
|
|
out o object_path);
|
|
GetSeat(in s seat_id,
|
|
out o object_path);
|
|
ListSessions(out a(susso) sessions);
|
|
ListUsers(out a(uso) users);
|
|
ListSeats(out a(so) seats);
|
|
ListInhibitors(out a(ssssuu) inhibitors);
|
|
@org.freedesktop.systemd1.Privileged("true")
|
|
CreateSession(in u uid,
|
|
in u pid,
|
|
in s service,
|
|
in s type,
|
|
in s class,
|
|
in s desktop,
|
|
in s seat_id,
|
|
in u vtnr,
|
|
in s tty,
|
|
in s display,
|
|
in b remote,
|
|
in s remote_user,
|
|
in s remote_host,
|
|
in a(sv) properties,
|
|
out s session_id,
|
|
out o object_path,
|
|
out s runtime_path,
|
|
out h fifo_fd,
|
|
out u uid,
|
|
out s seat_id,
|
|
out u vtnr,
|
|
out b existing);
|
|
@org.freedesktop.systemd1.Privileged("true")
|
|
ReleaseSession(in s session_id);
|
|
ActivateSession(in s session_id);
|
|
ActivateSessionOnSeat(in s session_id,
|
|
in s seat_id);
|
|
LockSession(in s session_id);
|
|
UnlockSession(in s session_id);
|
|
LockSessions();
|
|
UnlockSessions();
|
|
KillSession(in s session_id,
|
|
in s who,
|
|
in i signal_number);
|
|
KillUser(in u uid,
|
|
in i signal_number);
|
|
TerminateSession(in s session_id);
|
|
TerminateUser(in u uid);
|
|
TerminateSeat(in s seat_id);
|
|
SetUserLinger(in u uid,
|
|
in b enable,
|
|
in b interactive);
|
|
AttachDevice(in s seat_id,
|
|
in s sysfs_path,
|
|
in b interactive);
|
|
FlushDevices(in b interactive);
|
|
PowerOff(in b interactive);
|
|
PowerOffWithFlags(in t flags);
|
|
Reboot(in b interactive);
|
|
RebootWithFlags(in t flags);
|
|
Halt(in b interactive);
|
|
HaltWithFlags(in t flags);
|
|
Suspend(in b interactive);
|
|
SuspendWithFlags(in t flags);
|
|
Hibernate(in b interactive);
|
|
HibernateWithFlags(in t flags);
|
|
HybridSleep(in b interactive);
|
|
HybridSleepWithFlags(in t flags);
|
|
SuspendThenHibernate(in b interactive);
|
|
SuspendThenHibernateWithFlags(in t flags);
|
|
CanPowerOff(out s result);
|
|
CanReboot(out s result);
|
|
CanHalt(out s result);
|
|
CanSuspend(out s result);
|
|
CanHibernate(out s result);
|
|
CanHybridSleep(out s result);
|
|
CanSuspendThenHibernate(out s result);
|
|
ScheduleShutdown(in s type,
|
|
in t usec);
|
|
CancelScheduledShutdown(out b cancelled);
|
|
Inhibit(in s what,
|
|
in s who,
|
|
in s why,
|
|
in s mode,
|
|
out h pipe_fd);
|
|
CanRebootParameter(out s result);
|
|
SetRebootParameter(in s parameter);
|
|
CanRebootToFirmwareSetup(out s result);
|
|
SetRebootToFirmwareSetup(in b enable);
|
|
CanRebootToBootLoaderMenu(out s result);
|
|
SetRebootToBootLoaderMenu(in t timeout);
|
|
CanRebootToBootLoaderEntry(out s result);
|
|
SetRebootToBootLoaderEntry(in s boot_loader_entry);
|
|
SetWallMessage(in s wall_message,
|
|
in b enable);
|
|
signals:
|
|
SessionNew(s session_id,
|
|
o object_path);
|
|
SessionRemoved(s session_id,
|
|
o object_path);
|
|
UserNew(u uid,
|
|
o object_path);
|
|
UserRemoved(u uid,
|
|
o object_path);
|
|
SeatNew(s seat_id,
|
|
o object_path);
|
|
SeatRemoved(s seat_id,
|
|
o object_path);
|
|
PrepareForShutdown(b start);
|
|
PrepareForSleep(b start);
|
|
properties:
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
@org.freedesktop.systemd1.Privileged("true")
|
|
readwrite b EnableWallMessages = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
@org.freedesktop.systemd1.Privileged("true")
|
|
readwrite s WallMessage = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u NAutoVTs = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly as KillOnlyUsers = ['...', ...];
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly as KillExcludeUsers = ['...', ...];
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly b KillUserProcesses = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly s RebootParameter = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b RebootToFirmwareSetup = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly t RebootToBootLoaderMenu = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly s RebootToBootLoaderEntry = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly as BootLoaderEntries = ['...', ...];
|
|
readonly b IdleHint = ...;
|
|
readonly t IdleSinceHint = ...;
|
|
readonly t IdleSinceHintMonotonic = ...;
|
|
readonly s BlockInhibited = '...';
|
|
readonly s DelayInhibited = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t InhibitDelayMaxUSec = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t UserStopDelayUSec = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandlePowerKey = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandleSuspendKey = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandleHibernateKey = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandleLidSwitch = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandleLidSwitchExternalPower = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s HandleLidSwitchDocked = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t HoldoffTimeoutUSec = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s IdleAction = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t IdleActionUSec = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b PreparingForShutdown = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b PreparingForSleep = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly (st) ScheduledShutdown = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b Docked = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b LidClosed = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b OnExternalPower = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly b RemoveIPC = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t RuntimeDirectorySize = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t RuntimeDirectoryInodesMax = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t InhibitorsMax = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly t NCurrentInhibitors = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t SessionsMax = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly t NCurrentSessions = ...;
|
|
};
|
|
interface org.freedesktop.DBus.Peer { ... };
|
|
interface org.freedesktop.DBus.Introspectable { ... };
|
|
interface org.freedesktop.DBus.Properties { ... };
|
|
};
|
|
</programlisting>
|
|
|
|
<!--Autogenerated cross-references for systemd.directives, do not edit-->
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Manager"/>
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Manager"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="GetSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="GetSessionByPID()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="GetUser()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="GetUserByPID()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="GetSeat()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ListSessions()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ListUsers()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ListSeats()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ListInhibitors()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CreateSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ReleaseSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ActivateSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ActivateSessionOnSeat()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="LockSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="UnlockSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="LockSessions()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="UnlockSessions()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="KillSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="KillUser()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="TerminateSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="TerminateUser()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="TerminateSeat()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetUserLinger()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="AttachDevice()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="FlushDevices()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="PowerOff()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="PowerOffWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Reboot()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="RebootWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Halt()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="HaltWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Suspend()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SuspendWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Hibernate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="HibernateWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="HybridSleep()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="HybridSleepWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SuspendThenHibernate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SuspendThenHibernateWithFlags()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanPowerOff()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanReboot()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanHalt()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanSuspend()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanHibernate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanHybridSleep()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanSuspendThenHibernate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ScheduleShutdown()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CancelScheduledShutdown()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Inhibit()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanRebootParameter()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetRebootParameter()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanRebootToFirmwareSetup()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetRebootToFirmwareSetup()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanRebootToBootLoaderMenu()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetRebootToBootLoaderMenu()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="CanRebootToBootLoaderEntry()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetRebootToBootLoaderEntry()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetWallMessage()"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="SessionNew"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="SessionRemoved"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="UserNew"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="UserRemoved"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="SeatNew"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="SeatRemoved"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="PrepareForShutdown"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="PrepareForSleep"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="EnableWallMessages"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="WallMessage"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="NAutoVTs"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="KillOnlyUsers"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="KillExcludeUsers"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="KillUserProcesses"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RebootParameter"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RebootToFirmwareSetup"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RebootToBootLoaderMenu"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RebootToBootLoaderEntry"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="BootLoaderEntries"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="BlockInhibited"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="DelayInhibited"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="InhibitDelayMaxUSec"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="UserStopDelayUSec"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandlePowerKey"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandleSuspendKey"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandleHibernateKey"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitch"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitchExternalPower"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HandleLidSwitchDocked"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="HoldoffTimeoutUSec"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleAction"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleActionUSec"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="PreparingForShutdown"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="PreparingForSleep"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="ScheduledShutdown"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Docked"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="LidClosed"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="OnExternalPower"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RemoveIPC"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RuntimeDirectorySize"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RuntimeDirectoryInodesMax"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="InhibitorsMax"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="NCurrentInhibitors"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="SessionsMax"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="NCurrentSessions"/>
|
|
|
|
<!--End of Autogenerated section-->
|
|
|
|
<refsect2>
|
|
<title>Methods</title>
|
|
|
|
<para><function>GetSession()</function> may be used to get the session object path for the session with
|
|
the specified ID. Similarly, <function>GetUser()</function> and <function>GetSeat()</function> get the
|
|
user and seat objects, respectively. <function>GetSessionByPID()</function> and
|
|
<function>GetUserByPID()</function> get the session/user object the specified PID belongs to if there
|
|
is any.</para>
|
|
|
|
<para><function>ListSessions()</function> returns an array of all current sessions. The structures in
|
|
the array consist of the following fields: session id, user id, user name, seat id, session object
|
|
path. If a session does not have a seat attached, the seat id field will be an empty string.</para>
|
|
|
|
<para><function>ListUsers()</function> returns an array of all currently logged in users. The
|
|
structures in the array consist of the following fields: user id, user name, user object path.</para>
|
|
|
|
<para><function>ListSeats()</function> returns an array of all currently available seats. The
|
|
structure in the array consists of the following fields: seat id, seat object path.</para>
|
|
|
|
<para><function>ListInhibitors()</function> lists all currently active inhibitors. It returns an array of
|
|
structures consisting of <varname>what</varname>, <varname>who</varname>, <varname>why</varname>,
|
|
<varname>mode</varname>, <varname>uid</varname> (user ID), and <varname>pid</varname> (process ID).</para>
|
|
|
|
<para><function>CreateSession()</function> and <function>ReleaseSession()</function> may be used to
|
|
open or close login sessions. These calls should <emphasis>never</emphasis> be invoked directly by
|
|
clients. Creating/closing sessions is exclusively the job of PAM and its
|
|
<citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
|
module.</para>
|
|
|
|
<para><function>ActivateSession()</function> brings the session with the specified ID into the
|
|
foreground. <function>ActivateSessionOnSeat()</function> does the same, but only if the seat id
|
|
matches.</para>
|
|
|
|
<para><function>LockSession()</function> asks the session with the specified ID to activate the screen
|
|
lock. <function>UnlockSession()</function> asks the session with the specified ID to remove an active
|
|
screen lock, if there is any. This is implemented by sending out the Lock() and Unlock() signals from
|
|
the respective session object which session managers are supposed to listen on.</para>
|
|
|
|
<para><function>LockSessions()</function> asks all sessions to activate their screen locks. This may be
|
|
used to lock access to the entire machine in one action. Similarly, <function>UnlockSessions()</function>
|
|
asks all sessions to deactivate their screen locks.</para>
|
|
|
|
<para><function>KillSession()</function> may be used to send a Unix signal to one or all processes of a
|
|
session. As arguments it takes the session id, either the string <literal>leader</literal> or
|
|
<literal>all</literal> and a signal number. If <literal>leader</literal> is passed only the session
|
|
<literal>leader</literal> is killed. If <literal>all</literal> is passed all processes of the session
|
|
are killed.</para>
|
|
|
|
<para><function>KillUser()</function> may be used to send a Unix signal to all processes of a user. As
|
|
arguments it takes the user id and a signal number.</para>
|
|
|
|
<para><function>TerminateSession()</function>, <function>TerminateUser()</function>,
|
|
<function>TerminateSeat()</function> may be used to forcibly terminate one specific session, all
|
|
processes of a user, and all sessions attached to a specific seat, respectively. The session, user,
|
|
and seat are identified by their respective IDs.</para>
|
|
|
|
<para><function>SetUserLinger()</function> enables or disables user lingering. If enabled, the runtime
|
|
directory of a user is kept around and they may continue to run processes while logged out. If
|
|
disabled, the runtime directory goes away as soon as they log out. <function>SetUserLinger()</function>
|
|
expects three arguments: the UID, a boolean whether to enable/disable and a boolean controlling the
|
|
<ulink url="https://www.freedesktop.org/software/polkit/docs/latest/">polkit</ulink>
|
|
authorization interactivity (see below). Note that the user linger state is persistently
|
|
stored on disk.</para>
|
|
|
|
<para><function>AttachDevice()</function> may be used to assign a specific device to a specific
|
|
seat. The device is identified by its <filename>/sys/</filename> path and must be eligible for seat
|
|
assignments. <function>AttachDevice()</function> takes three arguments: the seat id, the sysfs path,
|
|
and a boolean for controlling polkit interactivity (see below). Device assignments are persistently
|
|
stored on disk. To create a new seat, simply specify a previously unused seat id. For more information
|
|
about the seat assignment logic see
|
|
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
|
|
|
|
<para><function>FlushDevices()</function> removes all explicit seat assignments for devices, resetting
|
|
all assignments to the automatic defaults. The only argument it takes is the polkit interactivity
|
|
boolean (see below).</para>
|
|
|
|
<para><function>PowerOff()</function>, <function>Reboot()</function>, <function>Halt()</function>,
|
|
<function>Suspend()</function>, and <function>Hibernate()</function> result in the system being powered
|
|
off, rebooted, halted (shut down without turning off power), suspended (the system state is
|
|
saved to RAM and the CPU is turned off), or hibernated (the system state is saved to disk and
|
|
the machine is powered down). <function>HybridSleep()</function> results in the system entering a
|
|
hybrid-sleep mode, i.e. the system is both hibernated and suspended.
|
|
<function>SuspendThenHibernate()</function> results in the system being suspended, then later woken
|
|
using an RTC timer and hibernated. The only argument is the polkit interactivity boolean
|
|
<varname>interactive</varname> (see below). The main purpose of these calls is that they enforce
|
|
polkit policy and hence allow powering off/rebooting/suspending/hibernating even by unprivileged
|
|
users. They also enforce inhibition locks for non-privileged users. UIs should expose these calls
|
|
as the primary mechanism to poweroff/reboot/suspend/hibernate the machine. Methods
|
|
<function>PowerOffWithFlags()</function>, <function>RebootWithFlags()</function>,
|
|
<function>HaltWithFlags()</function>, <function>SuspendWithFlags()</function>,
|
|
<function>HibernateWithFlags()</function>, <function>HybridSleepWithFlags()</function> and
|
|
<function>SuspendThenHibernateWithFlags()</function> add <varname>flags</varname> to allow for
|
|
extendability, defined as follows:</para>
|
|
<programlisting>
|
|
#define SD_LOGIND_ROOT_CHECK_INHIBITORS (UINT64_C(1) << 0)
|
|
#define SD_LOGIND_KEXEC_REBOOT (UINT64_C(1) << 1)
|
|
</programlisting>
|
|
<para> When the <varname>flags</varname> is 0 then these methods behave just like the versions
|
|
without flags. When <constant>SD_LOGIND_ROOT_CHECK_INHIBITORS</constant> (0x01) is set, active
|
|
inhibitors are honoured for privileged users too. When <constant>SD_LOGIND_KEXEC_REBOOT</constant>
|
|
(0x02) is set, then <function>RebootWithFlags()</function> perform kexec reboot if kexec
|
|
kernel is loaded.</para>
|
|
|
|
<para><function>SetRebootParameter()</function> sets a parameter for a subsequent reboot operation.
|
|
See the description of <command>reboot</command> in
|
|
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> and
|
|
<citerefentry project="man-pages"><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
|
|
for more information.</para>
|
|
|
|
<para><function>SetRebootToFirmwareSetup()</function>,
|
|
<function>SetRebootToBootLoaderMenu()</function>, and <function>SetRebootToBootLoaderEntry()</function>
|
|
configure the action to be taken from the boot loader after a reboot: respectively entering firmware
|
|
setup mode, the boot loader menu, or a specific boot loader entry. See
|
|
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> for the
|
|
corresponding command line interface.</para>
|
|
|
|
<para><function>CanPowerOff()</function>, <function>CanReboot()</function>,
|
|
<function>CanHalt()</function>, <function>CanSuspend()</function>, <function>CanHibernate()</function>,
|
|
<function>CanHybridSleep()</function>, <function>CanSuspendThenHibernate()</function>,
|
|
<function>CanRebootParameter()</function>, <function>CanRebootToFirmwareSetup()</function>,
|
|
<function>CanRebootToBootLoaderMenu()</function>, and
|
|
<function>CanRebootToBootLoaderEntry()</function> test whether the system supports the respective
|
|
operation and whether the calling user is allowed to execute it. Returns one of <literal>na</literal>,
|
|
<literal>yes</literal>, <literal>no</literal>, and <literal>challenge</literal>. If
|
|
<literal>na</literal> is returned, the operation is not available because hardware, kernel, or drivers
|
|
do not support it. If <literal>yes</literal> is returned, the operation is supported and the user may
|
|
execute the operation without further authentication. If <literal>no</literal> is returned, the
|
|
operation is available but the user is not allowed to execute the operation. If
|
|
<literal>challenge</literal> is returned, the operation is available but only after
|
|
authorization.</para>
|
|
|
|
<para><function>ScheduleShutdown()</function> schedules a shutdown operation <varname>type</varname> at
|
|
time <varname>usec</varname> in microseconds since the UNIX epoch. <varname>type</varname> can be one
|
|
of <literal>poweroff</literal>, <literal>dry-poweroff</literal>, <literal>reboot</literal>,
|
|
<literal>dry-reboot</literal>, <literal>halt</literal>, and <literal>dry-halt</literal>. (The
|
|
<literal>dry-</literal> variants do not actually execute the shutdown action.)
|
|
<function>CancelScheduledShutdown()</function> cancels a scheduled shutdown. The output parameter
|
|
<varname>cancelled</varname> is true if a shutdown operation was scheduled.</para>
|
|
|
|
<para><function>SetWallMessage()</function> sets the wall message (the message that will be sent out to
|
|
all terminals and stored in a
|
|
<citerefentry project="man-pages"><refentrytitle>utmp</refentrytitle><manvolnum>5</manvolnum></citerefentry> record) for a
|
|
subsequent scheduled shutdown operation. The parameter <varname>wall_message</varname> specifies the
|
|
shutdown reason (and may be empty) which will be included in the shutdown message. The parameter
|
|
<varname>enable</varname> specifies whether to print a wall message on shutdown.</para>
|
|
|
|
<para><function>Inhibit()</function> creates an inhibition lock. It takes four parameters:
|
|
<varname>what</varname>, <varname>who</varname>, <varname>why</varname>, and
|
|
<varname>mode</varname>. <varname>what</varname> is one or more of <literal>shutdown</literal>,
|
|
<literal>sleep</literal>, <literal>idle</literal>, <literal>handle-power-key</literal>,
|
|
<literal>handle-suspend-key</literal>, <literal>handle-hibernate-key</literal>,
|
|
<literal>handle-lid-switch</literal>, separated by colons, for inhibiting poweroff/reboot,
|
|
suspend/hibernate, the automatic idle logic, or hardware key handling. <varname>who</varname> should be
|
|
a short human readable string identifying the application taking the lock. <varname>why</varname>
|
|
should be a short human readable string identifying the reason why the lock is taken. Finally,
|
|
<varname>mode</varname> is either <literal>block</literal> or <literal>delay</literal> which encodes
|
|
whether the inhibit shall be consider mandatory or whether it should just delay the operation to a
|
|
certain maximum time. The method returns a file descriptor. The lock is released the moment this file
|
|
descriptor and all its duplicates are closed. For more information on the inhibition logic see
|
|
<ulink url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Locks</ulink>.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Signals</title>
|
|
|
|
<para>Whenever the inhibition state or idle hint changes, <function>PropertyChanged</function>
|
|
signals are sent out to which clients can subscribe.</para>
|
|
|
|
<para>The <function>SessionNew</function>, <function>SessionRemoved</function>,
|
|
<function>UserNew</function>, <function>UserRemoved</function>, <function>SeatNew</function>, and
|
|
<function>SeatRemoved</function> signals are sent each time a session is created or removed, a user
|
|
logs in or out, or a seat is added or removed. They each contain the ID of the object plus the object
|
|
path.</para>
|
|
|
|
<para>The <function>PrepareForShutdown()</function> and <function>PrepareForSleep()</function> signals
|
|
are sent right before (with the argument <literal>true</literal>) or after (with the argument
|
|
<literal>false</literal>) the system goes down for reboot/poweroff and suspend/hibernate,
|
|
respectively. This may be used by applications to save data on disk, release memory, or do other jobs
|
|
that should be done shortly before shutdown/sleep, in conjunction with delay inhibitor locks. After
|
|
completion of this work they should release their inhibition locks in order to not delay the operation
|
|
any further. For more information see
|
|
<ulink url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Locks</ulink>.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Properties</title>
|
|
|
|
<para>Most properties simply reflect the configuration, see
|
|
<citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. This
|
|
includes: <varname>NAutoVTs</varname>, <varname>KillOnlyUsers</varname>,
|
|
<varname>KillExcludeUsers</varname>, <varname>KillUserProcesses</varname>, <varname>IdleAction</varname>,
|
|
<varname>InhibitDelayMaxUSec</varname>,
|
|
<varname>InhibitorsMax</varname>,
|
|
<varname>UserStopDelayUSec</varname>,
|
|
<varname>HandlePowerKey</varname>, <varname>HandleSuspendKey</varname>,
|
|
<varname>HandleHibernateKey</varname>, <varname>HandleLidSwitch</varname>,
|
|
<varname>HandleLidSwitchExternalPower</varname>, <varname>HandleLidSwitchDocked</varname>,
|
|
<varname>IdleActionUSec</varname>, <varname>HoldoffTimeoutUSec</varname>,
|
|
<varname>RemoveIPC</varname>, <varname>RuntimeDirectorySize</varname>,
|
|
<varname>RuntimeDirectoryInodesMax</varname>, <varname>InhibitorsMax</varname>, and
|
|
<varname>SessionsMax</varname>.
|
|
</para>
|
|
|
|
<para>The <varname>IdleHint</varname> property reflects the idle hint state of the system. If the
|
|
system is idle it might get into automatic suspend or shutdown depending on the configuration.</para>
|
|
|
|
<para><varname>IdleSinceHint</varname> and <varname>IdleSinceHintMonotonic</varname> encode the
|
|
timestamps of the last change of the idle hint boolean, in <constant>CLOCK_REALTIME</constant> and
|
|
<constant>CLOCK_MONOTONIC</constant> timestamps, respectively, in microseconds since the epoch.</para>
|
|
|
|
<para>The <varname>BlockInhibited</varname> and <varname>DelayInhibited</varname> properties encode
|
|
the currently active locks of the respective modes. They are colon separated lists of
|
|
<literal>shutdown</literal>, <literal>sleep</literal>, and <literal>idle</literal> (see above).</para>
|
|
|
|
<para><varname>NCurrentSessions</varname> and <varname>NCurrentInhibitors</varname> contain the number
|
|
of currently registered sessions and inhibitors.</para>
|
|
|
|
<para>The <varname>BootLoaderEntries</varname> property contains a list of boot loader entries.
|
|
This includes boot loader entries defined in configuration and any additional loader entries
|
|
reported by the boot loader. See
|
|
<citerefentry><refentrytitle>systemd-boot</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
|
for more information.</para>
|
|
|
|
<para>The <varname>PreparingForShutdown</varname> and <varname>PreparingForSleep</varname> boolean
|
|
properties are true during the interval between the two <function>PrepareForShutdown</function> and
|
|
<function>PrepareForSleep</function> signals respectively. Note that these properties do not
|
|
send out <function>PropertyChanged</function> signals.</para>
|
|
|
|
<para>The <varname>RebootParameter</varname> property shows the value set with the
|
|
<function>SetRebootParameter()</function> method described above.</para>
|
|
|
|
<para><varname>ScheduledShutdown</varname> shows the value pair set with the
|
|
<function>ScheduleShutdown()</function> method described above.</para>
|
|
|
|
<para><varname>RebootToFirmwareSetup</varname>, <varname>RebootToBootLoaderMenu</varname>, and
|
|
<varname>RebootToBootLoaderEntry</varname> are true when the resprective post-reboot operation was
|
|
selected with <function>SetRebootToFirmwareSetup</function>,
|
|
<function>SetRebootToBootLoaderMenu</function>, or
|
|
<function>SetRebootToBootLoaderEntry</function>.</para>
|
|
|
|
<para>The <varname>WallMessage</varname> and <varname>EnableWallMessages</varname> properties reflect the
|
|
shutdown reason and wall message enablement switch which can be set with the
|
|
<function>SetWallMessage()</function> method described above.</para>
|
|
|
|
<para><varname>Docked</varname> is true if the machine is connected to a dock.
|
|
<varname>LidClosed</varname> is true when the lid (of a laptop) is closed.
|
|
<varname>OnExternalPower</varname> is true when the machine is connected to an external power supply.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Security</title>
|
|
|
|
<para>A number of operations are protected via the polkit privilege
|
|
system. <function>SetUserLinger()</function> requires the
|
|
<interfacename>org.freedesktop.login1.set-user-linger</interfacename>
|
|
privilege. <function>AttachDevice()</function> requires
|
|
<interfacename>org.freedesktop.login1.attach-device</interfacename> and
|
|
<function>FlushDevices()</function> requires
|
|
<interfacename>org.freedesktop.login1.flush-devices</interfacename>. <function>PowerOff()</function>,
|
|
<function>Reboot()</function>, <function>Halt()</function>, <function>Suspend()</function>,
|
|
<function>Hibernate()</function> require
|
|
<interfacename>org.freedesktop.login1.power-off</interfacename>,
|
|
<interfacename>org.freedesktop.login1.power-off-multiple-sessions</interfacename>,
|
|
<interfacename>org.freedesktop.login1.power-off-ignore-inhibit</interfacename>,
|
|
<interfacename>org.freedesktop.login1.reboot</interfacename>,
|
|
<interfacename>org.freedesktop.login1.reboot-multiple-sessions</interfacename>,
|
|
<interfacename>org.freedesktop.login1.reboot-ignore-inhibit</interfacename>,
|
|
<interfacename>org.freedesktop.login1.halt</interfacename>,
|
|
<interfacename>org.freedesktop.login1.halt-multiple-sessions</interfacename>,
|
|
<interfacename>org.freedesktop.login1.halt-ignore-inhibit</interfacename>,
|
|
<interfacename>org.freedesktop.login1.suspend</interfacename>,
|
|
<interfacename>org.freedesktop.login1.suspend-multiple-sessions</interfacename>,
|
|
<interfacename>org.freedesktop.login1.suspend-ignore-inhibit</interfacename>,
|
|
<interfacename>org.freedesktop.login1.hibernate</interfacename>,
|
|
<interfacename>org.freedesktop.login1.hibernate-multiple-sessions</interfacename>,
|
|
<interfacename>org.freedesktop.login1.hibernate-ignore-inhibit</interfacename>,
|
|
respectively depending on whether there are other sessions around or active inhibits are present.
|
|
<function>HybridSleep()</function> and <function>SuspendThenHibernate()</function>
|
|
use the same privileges as <function>Hibernate()</function>.
|
|
<function>SetRebootParameter()</function> requires
|
|
<interfacename>org.freedesktop.login1.set-reboot-parameter</interfacename>.</para>
|
|
|
|
<para><function>SetRebootToFirmwareSetup</function> requires
|
|
<interfacename>org.freedesktop.login1.set-reboot-to-firmware-setup</interfacename>.
|
|
<function>SetRebootToBootLoaderMenu</function> requires
|
|
<interfacename>org.freedesktop.login1.set-reboot-to-boot-loader-menu</interfacename>.
|
|
<function>SetRebootToBootLoaderEntry</function> requires
|
|
<interfacename>org.freedesktop.login1.set-reboot-to-boot-loader-entry</interfacename>.
|
|
</para>
|
|
|
|
<para><function>ScheduleShutdown</function> and <function>CancelScheduledShutdown</function> require
|
|
the same privileges (listed above) as the immediate poweroff/reboot/halt operations.</para>
|
|
|
|
<para><function>Inhibit()</function> is protected via one of
|
|
<interfacename>org.freedesktop.login1.inhibit-block-shutdown</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-delay-shutdown</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-block-sleep</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-delay-sleep</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-block-idle</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-handle-power-key</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-handle-suspend-key</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-handle-hibernate-key</interfacename>,
|
|
<interfacename>org.freedesktop.login1.inhibit-handle-lid-switch</interfacename> depending on the lock
|
|
type and mode taken.</para>
|
|
|
|
<para>The <varname>interactive</varname> boolean parameters can be used to control whether polkit
|
|
should interactively ask the user for authentication credentials if required.</para>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Seat Objects</title>
|
|
|
|
<programlisting executable="systemd-logind" node="/org/freedesktop/login1/seat/seat0" interface="org.freedesktop.login1.Seat">
|
|
node /org/freedesktop/login1/seat/seat0 {
|
|
interface org.freedesktop.login1.Seat {
|
|
methods:
|
|
Terminate();
|
|
ActivateSession(in s session_id);
|
|
SwitchTo(in u vtnr);
|
|
SwitchToNext();
|
|
SwitchToPrevious();
|
|
properties:
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Id = '...';
|
|
readonly (so) ActiveSession = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly b CanTTY = ...;
|
|
readonly b CanGraphical = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly a(so) Sessions = [...];
|
|
readonly b IdleHint = ...;
|
|
readonly t IdleSinceHint = ...;
|
|
readonly t IdleSinceHintMonotonic = ...;
|
|
};
|
|
interface org.freedesktop.DBus.Peer { ... };
|
|
interface org.freedesktop.DBus.Introspectable { ... };
|
|
interface org.freedesktop.DBus.Properties { ... };
|
|
};
|
|
</programlisting>
|
|
|
|
<!--Autogenerated cross-references for systemd.directives, do not edit-->
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Seat"/>
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Seat"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ActivateSession()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SwitchTo()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SwitchToNext()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SwitchToPrevious()"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Id"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="ActiveSession"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="CanTTY"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="CanGraphical"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Sessions"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
|
|
|
|
<!--End of Autogenerated section-->
|
|
|
|
<refsect2>
|
|
<title>Methods</title>
|
|
|
|
<para><function>Terminate()</function> and <function>ActivateSession()</function> work similar to
|
|
TerminateSeat(), ActivationSessionOnSeat() on the Manager object.</para>
|
|
|
|
<para><function>SwitchTo()</function> switches to the session on the virtual terminal
|
|
<varname>vtnr</varname>. <function>SwitchToNext()</function> and
|
|
<function>SwitchToPrevious()</function> switch to, respectively, the next and previous sessions on the
|
|
seat in the order of virtual terminals. If there is no active session, they switch to, respectively,
|
|
the first and last session on the seat.</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Signals</title>
|
|
|
|
<para>Whenever <function>ActiveSession</function>, <function>Sessions</function>,
|
|
<function>CanGraphical</function>, <function>CanTTY</function>,
|
|
or the idle state changes, <function>PropertyChanged</function> signals are sent out to which clients
|
|
can subscribe.</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Properties</title>
|
|
|
|
<para>The <varname>Id</varname> property encodes the ID of the seat.</para>
|
|
|
|
<para><varname>ActiveSession</varname> encodes the currently active session if there is one. It is a
|
|
structure consisting of the session id and the object path.</para>
|
|
|
|
<para><varname>CanTTY</varname> encodes whether the session is suitable for text logins, and
|
|
<varname>CanGraphical</varname> whether it is suitable for graphical sessions.</para>
|
|
|
|
<para>The <varname>Sessions</varname> property is an array of all current sessions of this seat, each
|
|
encoded in a structure consisting of the ID and the object path.</para>
|
|
|
|
<para>The <varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
|
|
<varname>IdleSinceHintMonotonic</varname> properties encode the idle state, similar to the ones exposed
|
|
on the <interfacename>Manager</interfacename> object, but specific for this seat.</para>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>User Objects</title>
|
|
|
|
<programlisting executable="systemd-logind" node="/org/freedesktop/login1/user/_1000" interface="org.freedesktop.login1.User">
|
|
node /org/freedesktop/login1/user/_1000 {
|
|
interface org.freedesktop.login1.User {
|
|
methods:
|
|
Terminate();
|
|
Kill(in i signal_number);
|
|
properties:
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u UID = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u GID = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Name = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t Timestamp = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t TimestampMonotonic = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s RuntimePath = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Service = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Slice = '...';
|
|
readonly (so) Display = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly s State = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly a(so) Sessions = [...];
|
|
readonly b IdleHint = ...;
|
|
readonly t IdleSinceHint = ...;
|
|
readonly t IdleSinceHintMonotonic = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
|
|
readonly b Linger = ...;
|
|
};
|
|
interface org.freedesktop.DBus.Peer { ... };
|
|
interface org.freedesktop.DBus.Introspectable { ... };
|
|
interface org.freedesktop.DBus.Properties { ... };
|
|
};
|
|
</programlisting>
|
|
|
|
<!--Autogenerated cross-references for systemd.directives, do not edit-->
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.User"/>
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.User"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="UID"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="GID"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Name"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Timestamp"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="TimestampMonotonic"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RuntimePath"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Service"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Slice"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Display"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="State"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Sessions"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Linger"/>
|
|
|
|
<!--End of Autogenerated section-->
|
|
|
|
<refsect2>
|
|
<title>Methods</title>
|
|
|
|
<para><function>Terminate()</function> and <function>Kill()</function> work similar to the
|
|
<function>TerminateUser()</function> and <function>KillUser()</function> methods on the manager
|
|
object.</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Signals</title>
|
|
|
|
<para>Whenever <varname>Sessions</varname> or the idle state changes,
|
|
<function>PropertyChanged</function> signals are sent out to which clients can subscribe.</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Properties</title>
|
|
|
|
<para>The <varname>UID</varname> and <varname>GID</varname> properties encode the Unix UID and primary
|
|
GID of the user.</para>
|
|
|
|
<para>The <varname>Name</varname> property encodes the user name.</para>
|
|
|
|
<para><varname>Timestamp</varname> and <varname>TimestampMonotonic</varname> encode the login time of
|
|
the user in microseconds since the epoch, in the <constant>CLOCK_REALTIME</constant> and
|
|
<constant>CLOCK_MONOTONIC</constant> clocks, respectively.</para>
|
|
|
|
<para><varname>RuntimePath</varname> encodes the runtime path of the user,
|
|
i.e. <varname>$XDG_RUNTIME_DIR</varname>. For details see the
|
|
<ulink url="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">
|
|
XDG Basedir Specification
|
|
</ulink>.</para>
|
|
|
|
<para><varname>Service</varname> contains the unit name of the user systemd service of this
|
|
user. Each logged in user is assigned a user service that runs a user systemd instance. This is
|
|
usually an instance of <filename>user@.service</filename>.</para>
|
|
|
|
<para><varname>Slice</varname> contains the unit name of the user systemd slice of this user. Each
|
|
logged in user gets a private slice.</para>
|
|
|
|
<para><varname>Display</varname> encodes which graphical session should be used as the primary UI display
|
|
for the user. It is a structure encoding the session ID and the object path of the session to use.</para>
|
|
|
|
<para><varname>State</varname> encodes the user state and is one of <literal>offline</literal>,
|
|
<literal>lingering</literal>, <literal>online</literal>, <literal>active</literal>, or
|
|
<literal>closing</literal>. See
|
|
<citerefentry><refentrytitle>sd_uid_get_state</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
|
for more information about the states.</para>
|
|
|
|
<para><varname>Sessions</varname> is an array of structures encoding all current sessions of the
|
|
user. Each structure consists of the ID and object path.</para>
|
|
|
|
<para>The <varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
|
|
<varname>IdleSinceHintMonotonic</varname> properties encode the idle hint state of the user, similar to
|
|
the <interfacename>Manager</interfacename>'s properties, but specific for this user.</para>
|
|
|
|
<para>The <varname>Linger</varname> property shows whether lingering is enabled for this user.</para>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Session Objects</title>
|
|
|
|
<programlisting executable="systemd-logind" node="/org/freedesktop/login1/session/1" interface="org.freedesktop.login1.Session">
|
|
node /org/freedesktop/login1/session/1 {
|
|
interface org.freedesktop.login1.Session {
|
|
methods:
|
|
Terminate();
|
|
Activate();
|
|
Lock();
|
|
Unlock();
|
|
SetIdleHint(in b idle);
|
|
SetLockedHint(in b locked);
|
|
Kill(in s who,
|
|
in i signal_number);
|
|
TakeControl(in b force);
|
|
ReleaseControl();
|
|
SetType(in s type);
|
|
TakeDevice(in u major,
|
|
in u minor,
|
|
out h fd,
|
|
out b inactive);
|
|
ReleaseDevice(in u major,
|
|
in u minor);
|
|
PauseDeviceComplete(in u major,
|
|
in u minor);
|
|
SetBrightness(in s subsystem,
|
|
in s name,
|
|
in u brightness);
|
|
signals:
|
|
PauseDevice(u major,
|
|
u minor,
|
|
s type);
|
|
ResumeDevice(u major,
|
|
u minor,
|
|
h fd);
|
|
Lock();
|
|
Unlock();
|
|
properties:
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Id = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly (uo) User = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Name = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t Timestamp = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly t TimestampMonotonic = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u VTNr = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly (so) Seat = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s TTY = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Display = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly b Remote = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s RemoteHost = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s RemoteUser = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Service = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Desktop = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Scope = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u Leader = ...;
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly u Audit = ...;
|
|
readonly s Type = '...';
|
|
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
|
|
readonly s Class = '...';
|
|
readonly b Active = ...;
|
|
readonly s State = '...';
|
|
readonly b IdleHint = ...;
|
|
readonly t IdleSinceHint = ...;
|
|
readonly t IdleSinceHintMonotonic = ...;
|
|
readonly b LockedHint = ...;
|
|
};
|
|
interface org.freedesktop.DBus.Peer { ... };
|
|
interface org.freedesktop.DBus.Introspectable { ... };
|
|
interface org.freedesktop.DBus.Properties { ... };
|
|
};
|
|
</programlisting>
|
|
|
|
<!--Autogenerated cross-references for systemd.directives, do not edit-->
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Session"/>
|
|
|
|
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.login1.Session"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Activate()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Lock()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Unlock()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetIdleHint()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetLockedHint()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="TakeControl()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ReleaseControl()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetType()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="TakeDevice()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="ReleaseDevice()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="PauseDeviceComplete()"/>
|
|
|
|
<variablelist class="dbus-method" generated="True" extra-ref="SetBrightness()"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="PauseDevice"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="ResumeDevice"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="Lock"/>
|
|
|
|
<variablelist class="dbus-signal" generated="True" extra-ref="Unlock"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Id"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="User"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Name"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Timestamp"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="TimestampMonotonic"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="VTNr"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Seat"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="TTY"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Display"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Remote"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RemoteHost"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="RemoteUser"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Service"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Desktop"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Scope"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Leader"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Audit"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Type"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Class"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="Active"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="State"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHint"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="IdleSinceHintMonotonic"/>
|
|
|
|
<variablelist class="dbus-property" generated="True" extra-ref="LockedHint"/>
|
|
|
|
<!--End of Autogenerated section-->
|
|
|
|
<refsect2>
|
|
<title>Methods</title>
|
|
|
|
<para><function>Terminate()</function>, <function>Activate()</function>, <function>Lock()</function>,
|
|
<function>Unlock()</function>, and <function>Kill()</function> work similarly to the respective calls on
|
|
the <interfacename>Manager</interfacename> object.</para>
|
|
|
|
<para><function>SetIdleHint()</function> is called by the session object to update the idle state
|
|
of the session whenever it changes.</para>
|
|
|
|
<para><function>TakeControl()</function> allows a process to take exclusive managed device
|
|
access-control for that session. Only one D-Bus connection can be a controller for a given session at any
|
|
time. If the <varname>force</varname> argument is set (root only), an existing controller is kicked
|
|
out and replaced. Otherwise, this method fails if there is already a controller. Note that this method is
|
|
limited to D-Bus users with the effective UID set to the user of the session or root.</para>
|
|
|
|
<para><function>ReleaseControl()</function> drops control of a given session. Closing the D-Bus
|
|
connection implicitly releases control as well. See <function>TakeControl()</function> for more
|
|
information. This method also releases all devices for which the controller requested ownership via
|
|
<function>TakeDevice()</function>.</para>
|
|
|
|
<para><function>SetType()</function> allows the type of the session to be changed dynamically. It can
|
|
only be called by session's current controller. If <function>TakeControl()</function> has not been
|
|
called, this method will fail. In addition, the session type will be reset to its original value once
|
|
control is released, either by calling <function>ReleaseControl()</function> or closing the D-Bus
|
|
connection. This should help prevent a session from entering an inconsistent state, for example if the
|
|
controller crashes. The only argument <varname>type</varname> is the new session type.</para>
|
|
|
|
<para><function>TakeDevice()</function> allows a session controller to get a file descriptor for a
|
|
specific device. Pass in the major and minor numbers of the character device and
|
|
<filename>systemd-logind</filename> will return a file descriptor for the device. Only a limited set of
|
|
device-types is currently supported (but may be extended). <filename>systemd-logind</filename>
|
|
automatically mutes the file descriptor if the session is inactive and resumes it once the session is
|
|
activated again. This guarantees that a session can only access session devices if the session is
|
|
active. Note that this revoke/resume mechanism is asynchronous and may happen at any given time. This
|
|
only works on devices that are attached to the seat of the given session. A process is not required to
|
|
have direct access to the device node. <filename>systemd-logind</filename> only requires you to be the
|
|
active session controller (see <function>TakeControl()</function>). Also note that any device can only
|
|
be requested once. As long as you don't release it, further <function>TakeDevice()</function> calls
|
|
will fail.</para>
|
|
|
|
<para><function>ReleaseDevice()</function> releases a device again (see
|
|
<function>TakeDevice()</function>). This is also implicitly done by
|
|
<function>ReleaseControl()</function> or when closing the D-Bus connection.</para>
|
|
|
|
<para><function>PauseDeviceComplete()</function> allows a session controller to synchronously pause a
|
|
device after receiving a <function>PauseDevice(<literal>pause</literal>)</function> signal. Forced
|
|
signals (or after an internal timeout) are automatically completed by
|
|
<filename>systemd-logind</filename> asynchronously.</para>
|
|
|
|
<para><function>SetLockedHint()</function> may be used to set the "locked hint" to
|
|
<varname>locked</varname>, i.e. information whether the session is locked. This is intended to be used
|
|
by the desktop environment to tell <command>systemd-logind</command> when the session is locked and
|
|
unlocked.</para>
|
|
|
|
<para><function>SetBrightness()</function> may be used to set the display brightness. This is intended
|
|
to be used by the desktop environment and allows unprivileged programs to access hardware settings in
|
|
a controlled way. The <varname>subsystem</varname> parameter specifies a kernel subsystem, either
|
|
<literal>backlight</literal> or <literal>leds</literal>. The <varname>name</varname> parameter
|
|
specifies a device name under the specified subsystem. The <varname>brightness</varname> parameter
|
|
specifies the brightness. The range is defined by individual drivers, see
|
|
<filename>/sys/class/<varname>subsystem</varname>/<varname>name</varname>/max_brightness</filename>.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Signals</title>
|
|
|
|
<para>The active session controller exclusively gets <function>PauseDevice</function> and
|
|
<function>ResumeDevice</function> events for any device it requested via
|
|
<function>TakeDevice()</function>. They notify the controller whenever a device is paused or resumed. A
|
|
device is never resumed if its session is inactive. Also note that <function>PauseDevice</function>
|
|
signals are sent before the <function>PropertyChanged</function> signal for the
|
|
<function>Active</function> state. The inverse is true for <function>ResumeDevice</function>. A device
|
|
may remain paused for unknown reasons even though the <interfacename>Session</interfacename> is active.
|
|
</para>
|
|
|
|
<para>A <function>PauseDevice</function> signal carries the major and minor numbers and a string describing the
|
|
type as arguments. <function>force</function> means the device was already paused by
|
|
<filename>systemd-logind</filename> and the signal is only an asynchronous
|
|
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
|
|
<function>PauseDeviceComplete()</function>. This synchronous pausing mechanism is used for
|
|
backwards-compatibility to VTs and <filename>systemd-logind</filename> is free to not make use of
|
|
it. It is also free to send a forced <function>PauseDevice</function> if you don't respond in a timely
|
|
manner (or for any other reason). <function>gone</function> means the device was unplugged from the
|
|
system and you will no longer get any notifications about it. There is no need to call
|
|
<function>ReleaseDevice()</function>. You may call <function>TakeDevice()</function> again if a new
|
|
device is assigned the major+minor combination.</para>
|
|
|
|
<para><function>ResumeDevice</function> is sent whenever a session is active and a device is
|
|
resumed. It carries the major/minor numbers as arguments and provides a new open file descriptor. You should
|
|
switch to the new descriptor and close the old one. They are not guaranteed to have the same underlying
|
|
open file descriptor in the kernel (except for a limited set of device types).</para>
|
|
|
|
<para>Whenever <function>Active</function> or the idle state changes,
|
|
<function>PropertyChanged</function> signals are sent out to which clients can subscribe.</para>
|
|
|
|
<para><function>Lock</function>/<function>Unlock</function> is sent when the session is asked to be
|
|
screen-locked/unlocked. A session manager of the session should listen to this signal and act
|
|
accordingly. This signal is sent out as a result of the <function>Lock()</function> and
|
|
<function>Unlock()</function> methods, respectively.</para>
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Properties</title>
|
|
|
|
<para><varname>Id</varname> encodes the session ID.</para>
|
|
|
|
<para><varname>User</varname> encodes the user ID of the user this session belongs to. This is a
|
|
structure consisting of the Unix UID and the object path.</para>
|
|
|
|
<para><varname>Name</varname> encodes the user name.</para>
|
|
|
|
<para><varname>Timestamp</varname> and <varname>TimestampMonotonic</varname> encode the microseconds
|
|
since the epoch when the session was created, in <constant>CLOCK_REALTIME</constant> or
|
|
<constant>CLOCK_MONOTONIC</constant>, respectively.</para>
|
|
|
|
<para><varname>VTNr</varname> encodes the virtual terminal number of the session if there is any, 0
|
|
otherwise.</para>
|
|
|
|
<para><varname>Seat</varname> encodes the seat this session belongs to if there is any. This is a
|
|
structure consisting of the ID and the seat object path.</para>
|
|
|
|
<para><varname>TTY</varname> encodes the kernel TTY path of the session if this is a text login. If not
|
|
this is an empty string.</para>
|
|
|
|
<para><varname>Display</varname> encodes the X11 display name if this is a graphical login. If not,
|
|
this is an empty string.</para>
|
|
|
|
<para><varname>Remote</varname> encodes whether the session is local or remote.</para>
|
|
|
|
<para><varname>RemoteHost</varname> and <varname>RemoteUser</varname> encode the remote host and user
|
|
if this is a remote session, or an empty string otherwise.</para>
|
|
|
|
<para><varname>Service</varname> encodes the PAM service name that registered the session.</para>
|
|
|
|
<para><varname>Desktop</varname> describes the desktop environment running in the session (if
|
|
known).</para>
|
|
|
|
<para><varname>Scope</varname> contains the systemd scope unit name of this session.</para>
|
|
|
|
<para><varname>Leader</varname> encodes the PID of the process that registered the session.</para>
|
|
|
|
<para><varname>Audit</varname> encodes the Kernel Audit session ID of the session if auditing is
|
|
available.</para>
|
|
|
|
<para><varname>Type</varname> encodes the session type. It's one of <literal>unspecified</literal> (for
|
|
cron PAM sessions and suchlike), <literal>tty</literal> (for text logins) or
|
|
<literal>x11</literal>/<literal>mir</literal>/<literal>wayland</literal> (for graphical logins).</para>
|
|
|
|
<para><varname>Class</varname> encodes the session class. It's one of <literal>user</literal> (for
|
|
normal user sessions), <literal>greeter</literal> (for display manager pseudo-sessions), or
|
|
<literal>lock-screen</literal> (for display lock screens).</para>
|
|
|
|
<para><varname>Active</varname> is a boolean that is true if the session is active, i.e. currently in the
|
|
foreground. This field is semi-redundant due to <varname>State</varname>.</para>
|
|
|
|
<para><varname>State</varname> encodes the session state and one of <literal>online</literal>,
|
|
<literal>active</literal>, or <literal>closing</literal>. See
|
|
<citerefentry><refentrytitle>sd_session_get_state</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
|
for more information about the states.</para>
|
|
|
|
<para><varname>IdleHint</varname>, <varname>IdleSinceHint</varname>, and
|
|
<varname>IdleSinceHintMonotonic</varname> encapsulate the idle hint state of this session, similarly to
|
|
how the respective properties on the manager object do it for the whole system.</para>
|
|
|
|
<para><varname>LockedHint</varname> shows the locked hint state of this session, as set by the
|
|
<function>SetLockedHint()</function> method described above.</para>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Examples</title>
|
|
|
|
<example>
|
|
<title>Introspect <interfacename>org.freedesktop.login1.Manager</interfacename> on the bus</title>
|
|
|
|
<programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
|
|
--object-path /org/freedesktop/login1
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Introspect <interfacename>org.freedesktop.login1.Seat</interfacename> on the bus</title>
|
|
|
|
<programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
|
|
--object-path /org/freedesktop/login1/seat/seat0
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Introspect <interfacename>org.freedesktop.login1.User</interfacename> on the bus</title>
|
|
|
|
<programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
|
|
--object-path /org/freedesktop/login1/user/_1000
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Introspect <interfacename>org.freedesktop.login1.Session</interfacename> on the bus</title>
|
|
|
|
<programlisting>$ gdbus introspect --system --dest org.freedesktop.login1 \
|
|
--object-path /org/freedesktop/login1/session/45
|
|
</programlisting>
|
|
</example>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Versioning</title>
|
|
|
|
<para>These D-Bus interfaces follow <ulink url="http://0pointer.de/blog/projects/versioning-dbus.html">
|
|
the usual interface versioning guidelines</ulink>.</para>
|
|
</refsect1>
|
|
</refentry>
|