along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
-<refentry id="sd_session_is_active">
+<refentry id="sd_session_is_active" conditional='HAVE_PAM'>
<refentryinfo>
<title>sd_session_is_active</title>
<refnamediv>
<refname>sd_session_is_active</refname>
+ <refname>sd_session_is_remote</refname>
<refname>sd_session_get_state</refname>
<refname>sd_session_get_uid</refname>
<refname>sd_session_get_seat</refname>
<refname>sd_session_get_service</refname>
<refname>sd_session_get_type</refname>
<refname>sd_session_get_class</refname>
+ <refname>sd_session_get_desktop</refname>
<refname>sd_session_get_display</refname>
<refname>sd_session_get_tty</refname>
+ <refname>sd_session_get_vt</refname>
+ <refname>sd_session_get_remote_host</refname>
+ <refname>sd_session_get_remote_user</refname>
<refpurpose>Determine state of a specific session</refpurpose>
</refnamediv>
<funcprototype>
<funcdef>int <function>sd_session_is_active</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_session_is_remote</function></funcdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_state</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>state</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>state</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_uid</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>uid_t* <parameter>uid</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>uid_t *<parameter>uid</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_seat</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>seat</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>seat</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_service</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>service</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>service</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_type</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>type</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>type</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_class</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>class</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>class</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_session_get_desktop</function></funcdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>desktop</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_display</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>display</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>display</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_session_get_remote_host</function></funcdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>remote_host</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_session_get_remote_user</function></funcdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>remote_user</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_tty</function></funcdef>
- <paramdef>const char* <parameter>session</parameter></paramdef>
- <paramdef>char** <parameter>tty</parameter></paramdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>char **<parameter>tty</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_session_get_vt</function></funcdef>
+ <paramdef>const char *<parameter>session</parameter></paramdef>
+ <paramdef>unsigned int *<parameter>vt</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
(i.e. currently in the foreground and available for
user input) or not.</para>
+ <para><function>sd_session_is_remote()</function> may
+ be used to determine whether the session identified by
+ the specified session identifier is a remote session
+ (i.e. its remote host is known) or not.</para>
+
<para><function>sd_session_get_state()</function> may
be used to determine the state of the session
identified by the specified session identifier. The
returned. This function is a more generic version of
<function>sd_session_is_active()</function>. The returned
string needs to be freed with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_uid()</function> may be
identifier belongs to. Note that not all sessions are
attached to a seat, this call will fail for them. The
returned string needs to be freed with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_service()</function>
session identified by the specified session
identifier. The returned string needs to be freed with
the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_type()</function> may
be used to determine the type of the session
identified by the specified session identifier. The
returned string is one of <literal>x11</literal>,
- <literal>tty</literal> or
- <literal>unspecified</literal> and needs to be freed
- with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <literal>wayland</literal>, <literal>tty</literal>,
+ <literal>mir</literal> or <literal>unspecified</literal> and
+ needs to be freed with the libc
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_class()</function> may
be used to determine the class of the session
identified by the specified session identifier. The
returned string is one of <literal>user</literal>,
- <literal>greeter</literal> or
- <literal>lock-screen</literal> and needs to be freed
+ <literal>greeter</literal>,
+ <literal>lock-screen</literal>, or
+ <literal>background</literal> and needs to be freed
with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ call after use.</para>
+
+ <para><function>sd_session_get_desktop()</function> may
+ be used to determine the brand of the desktop running on
+ the session identified by the specified session identifier.
+ This field can be set freely by desktop environments and
+ does not follow any special formatting. However, desktops
+ are strongly recommended to use the same identifiers and
+ capitalization as for
+ <varname>$XDG_CURRENT_DESKTOP</varname>, as defined by
+ the <ulink
+ url="http://standards.freedesktop.org/desktop-entry-spec/latest/">Desktop
+ Entry
+ Specification</ulink>. The returned string needs to be
+ freed with the libc
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_display()</function>
session identified by the specified session
identifier. The returned string needs to be
freed with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
+ <para><function>sd_session_get_remote_host()</function>
+ may be used to determine the remote hostname of the
+ session identified by the specified session
+ identifier. The returned string needs to be
+ freed with the libc
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ call after use.</para>
+
+ <para><function>sd_session_get_remote_user()</function>
+ may be used to determine the remote username of the
+ session identified by the specified session
+ identifier. The returned string needs to be
+ freed with the libc
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ call after use. Note that this value is rarely known
+ to the system, and even then should not be relied on.</para>
+
<para><function>sd_session_get_tty()</function>
may be used to determine the TTY device of the
session identified by the specified session
identifier. The returned string needs to be
freed with the libc
- <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
- <para>If the <literal>session</literal> parameter of
- any of these functions is passed as NULL the operation
- is executed for the session the calling process is a
- member of, if there is any.</para>
+ <para><function>sd_session_get_vt()</function>
+ may be used to determine the VT number of the
+ session identified by the specified session
+ identifier. This function will return an error if
+ the seat does not support VTs.</para>
+
+ <para>If the <varname>session</varname> parameter of
+ any of these functions is passed as
+ <constant>NULL</constant>, the operation is executed
+ for the session the calling process is a member of, if
+ there is any.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
- <para>If the test succeeds
- <function>sd_session_is_active()</function> returns a
- positive integer, if it fails 0. On success
+ <para>If the test succeeds,
+ <function>sd_session_is_active()</function> and
+ <function>sd_session_is_remote()</function> return a
+ positive integer; if it fails, 0. On success,
<function>sd_session_get_state()</function>,
<function>sd_session_get_uid()</function>,
<function>sd_session_get_seat()</function>,
<function>sd_session_get_service()</function>,
<function>sd_session_get_type()</function>,
<function>sd_session_get_class()</function>,
- <function>sd_session_get_display()</function> and
+ <function>sd_session_get_display()</function>,
+ <function>sd_session_get_remote_user()</function>,
+ <function>sd_session_get_remote_host()</function> and
<function>sd_session_get_tty()</function> return 0 or
a positive integer. On failure, these calls return a
negative errno-style error code.</para>
<function>sd_session_get_service()</function>,
<function>sd_session_get_type()</function>,
<function>sd_session_get_class()</function>,
- <function>sd_session_get_display()</function> and
+ <function>sd_session_get_display()</function>,
+ <function>sd_session_get_remote_host()</function>,
+ <function>sd_session_get_remote_user()</function> and
<function>sd_session_get_tty()</function>
- interfaces are available as shared library, which can
+ interfaces are available as a shared library, which can
be compiled and linked to with the
- <literal>libsystemd-login</literal>
- <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ <constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file.</para>
</refsect1>