Struct logind_zbus::SessionProxy [−][src]
pub struct SessionProxy<'a>(_);
Expand description
Proxy wrapper for the logind Session
dbus interface
All get_*
methods are property getters
Example
use logind_zbus::ManagerProxy;
use logind_zbus::SessionProxy;
use zbus::blocking::Connection;
let connection = Connection::system().unwrap();
let manager = ManagerProxy::new(&connection).unwrap();
let sessions = manager.list_sessions().unwrap();
let session = SessionProxy::new(&connection, &sessions[0]).unwrap();
let time1 = session.get_timestamp().unwrap();
assert!(time1.as_secs() > 0);
let time2 = session.get_timestamp_monotonic().unwrap();
assert!(time2.as_secs() > 0);
Notes
All connect_*
functions are signals and each of these functions
names reflect the underlying generated Proxy call. If desired the wrapped function
can be bypassed with:
*<SessionProxy>.connect_<function name>()
Implementations
pub fn new<S>(connection: &Connection, session: &'a S) -> Result<Self> where
S: IntoSessionPath,
Borrow the underlying SessionProxy
for use with zbus directly
Send a signal to all processes of the user
Allows a session controller to synchronously pause a device after receiving a PauseDevice(“pause”) signal
Drops control of a given session. Closing the D-Bus connection implicitly releases control as well. This method also releases all devices for which the controller requested
Release a device (after TakeDevice). This is also implicitly done by
release_control()
or when closing the D-Bus connection.
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.
SetIdleHint() is called by the session object to update the idle state of the session whenever it changes
Allows the type of the session to be changed dynamically. It can only be
called by session’s current controller. If take_control()
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
release_control()
or closing the D-Bus connection.
Allows a process to take exclusive managed device access-control for that session
Get a file descriptor for a specific device. Pass in the major and minor numbers of the character device and systemd-logind will return a file descriptor for the device.
Property: Is session is active, i.e. currently in the foreground.
This field is semi-redundant due to State (get_state()
).
Property: the Kernel Audit session ID of the session if auditing is available.
Property: The class of Session
Property: Describes the desktop environment running in the session (if known)
The X11 display name if this is a graphical login. If not, this is an empty string.
Property: PID of the process that registered the session
Property: shows the locked hint state of this session
Property: local or remote
Property: None if not remote
Property: None if not remote
Property: seat this session belongs to if there is any
Property: PAM service name that registered the session
Property: State
of the session
Property: kernel TTY path of the session if this is a text login. If not this None.
Property: Get time since session was created (realtime)
Property: Get time since session was created (wal time)
Property: Session type
Property: Virtual terminal number of the session if there is any, 0 otherwise.
Methods from Deref<Target = Proxy<'a>>
Get a reference to the associated connection.
Get a reference to the destination service name.
Get a reference to the object path.
Introspect the associated object, and return the XML description.
See the xml module for parsing the result.
pub fn cached_property<T>(
&self,
property_name: &str
) -> Result<Option<T>, Error> where
T: TryFrom<OwnedValue>,
<T as TryFrom<OwnedValue>>::Error: Into<Error>,
pub fn cached_property<T>(
&self,
property_name: &str
) -> Result<Option<T>, Error> where
T: TryFrom<OwnedValue>,
<T as TryFrom<OwnedValue>>::Error: Into<Error>,
Get the cached value of the property property_name
.
This returns None
if the property is not in the cache. This could be because the cache
was invalidated by an update, because caching was disabled for this property or proxy, or
because the cache has not yet been populated. Use get_property
to fetch the value from
the peer.
Get the cached value of the property property_name
.
Same as cached_property
, but gives you access to the raw value stored in the cache. This
is useful if you want to avoid allocations and cloning.
pub fn get_property<T>(&self, property_name: &str) -> Result<T, Error> where
T: TryFrom<OwnedValue>,
<T as TryFrom<OwnedValue>>::Error: Into<Error>,
pub fn get_property<T>(&self, property_name: &str) -> Result<T, Error> where
T: TryFrom<OwnedValue>,
<T as TryFrom<OwnedValue>>::Error: Into<Error>,
Get the property property_name
.
Get the property value from the cache or call the Get
method of the
org.freedesktop.DBus.Properties
interface.
Set the property property_name
.
Effectively, call the Set
method of the org.freedesktop.DBus.Properties
interface.
Call a method and return the reply.
Typically, you would want to use call
method instead. Use this method if you need to
deserialize the reply message manually (this way, you can avoid the memory
allocation/copying, by deserializing the reply to an unowned type).
Call a method and return the reply body.
Use call_method
instead if you need to deserialize the reply manually/separately.
Call a method without expecting a reply
This sets the NoReplyExpected
flag on the calling message and does not wait for a reply.
pub fn receive_signal<'m, M>(
&self,
signal_name: M
) -> Result<SignalIterator<'a>, Error> where
'm: 'a,
M: TryInto<MemberName<'m>>,
<M as TryInto<MemberName<'m>>>::Error: Into<Error>,
pub fn receive_signal<'m, M>(
&self,
signal_name: M
) -> Result<SignalIterator<'a>, Error> where
'm: 'a,
M: TryInto<MemberName<'m>>,
<M as TryInto<MemberName<'m>>>::Error: Into<Error>,
Create a stream for signal named signal_name
.
Errors
Apart from general I/O errors that can result from socket communications, calling this method will also result in an error if the destination service has not yet registered its well-known name with the bus (assuming you’re using the well-known name as destination).
Create a stream for all signals emitted by this service.
Errors
Apart from general I/O errors that can result from socket communications, calling this method will also result in an error if the destination service has not yet registered its well-known name with the bus (assuming you’re using the well-known name as destination).
pub fn receive_property_changed<'name, T>(
&self,
name: &'name str
) -> PropertyIterator<'a, T> where
'name: 'a,
pub fn receive_property_changed<'name, T>(
&self,
name: &'name str
) -> PropertyIterator<'a, T> where
'name: 'a,
Get an iterator to receive owner changed events.
If the proxy destination is a unique name, the stream will be notified of the peer
disconnection from the bus (with a None
value).
If the proxy destination is a well-known name, the stream will be notified whenever the name
owner is changed, either by a new peer being granted ownership (Some
value) or when the
name is released (with a None
value).
Note that zbus doesn’t queue the updates. If the listener is slower than the receiver, it will only receive the last update.
Get an iterator to receive property changed events.
Note that zbus doesn’t queue the updates. If the listener is slower than the receiver, it will only receive the last update.