TLM is a daemon that handles user logins in a multi-user, multi-seat system by authenticating the users through PAM, and setting up, launching, and tracking user sessions.
TLM daemon itself does not include any UI for interacting with the users; any such interaction is handled through TLM's authentication plugin system (see TlmAuthPlugin). TLM can be configured to log-in a default ("guest") user when no other user is logged in at a specific seat.
TLM also exports a D-Bus API, that can be used to log in, log out and switch users on a seat.
Under examples, tlm-ui demonstrates the usage of tlm daemon's dbus interface for login, logout and switch user functionality. Login object with root access is exported at TLM_DBUS_ROOT_SOCKET_ADDRESS which can be used to login, logout and switch any user. TLM_DBUS_ROOT_SOCKET_ADDRESS can be fetched as a variable from package configuration file tlm.pc. Besides whenever a user is logged in, a dbus login object is also exported which can be used for 'logout-user' and 'switch-user' functionalities by that user. The dbus object can be accessed at TLM_DBUS_SOCKET_PATH/<seat_id-uid> by the user (uid) who is logged in at the seat (seat_id).
Plugins should be named "libtlm-plugin-<plugin_name>.so" and they should contain a "tlm_<plugin_type>_plugin_<plugin_name>_get_type" symbol that is a function that returns a #GType of the plugin object. plugin_type is "auth" for authentication plugins and "account" for account plugins.
If Tlm has been configured with --enable-debug, plugin directory can be overriden with TLM_PLUGINS_DIR environment variable.